class Cucumber::Term::Banner::BannerMaker

Public Instance Methods

display_banner(lines, io, border_modifiers) click to toggle source
# File lib/cucumber/term/banner.rb, line 13
def display_banner(lines, io, border_modifiers)
  lines = lines.split("\n") if lines.is_a? String
  longest_line_length = lines.map { |line| line_length(line) }.max

  io.puts apply_modifiers("┌#{'─' * (longest_line_length + 2)}┐", border_modifiers)
  lines.map do |line|
    padding = ' ' * (longest_line_length - line_length(line))
    io.puts "#{apply_modifiers('│', border_modifiers)} #{display_line(line)}#{padding} #{apply_modifiers('│', border_modifiers)}"
  end
  io.puts apply_modifiers("└#{'─' * (longest_line_length + 2)}┘", border_modifiers)
end

Private Instance Methods

apply_modifiers(str, modifiers) click to toggle source
# File lib/cucumber/term/banner.rb, line 36
def apply_modifiers(str, modifiers)
  display = str
  modifiers.each { |modifier| display = send(modifier, display) }
  display
end
display_line(line) click to toggle source
# File lib/cucumber/term/banner.rb, line 27
def display_line(line)
  line.is_a?(Array) ? line.map { |span| display_span(span) }.join : line
end
display_span(span) click to toggle source
# File lib/cucumber/term/banner.rb, line 31
def display_span(span)
  return apply_modifiers(span.shift, span) if span.is_a?(Array)
  span
end
line_length(line) click to toggle source
# File lib/cucumber/term/banner.rb, line 42
def line_length(line)
  if line.is_a?(Array)
    line.map { |span| span_length(span) }.sum
  else
    line.length
  end
end
span_length(span) click to toggle source
# File lib/cucumber/term/banner.rb, line 50
def span_length(span)
  span.is_a?(Array) ? span[0].length : span.length
end