module CF::Spacing

Public Instance Methods

indented() { || ... } click to toggle source
# File lib/cf/spacing.rb, line 5
def indented
  @@indentation += 1
  yield
ensure
  @@indentation -= 1
end
justify(str, width) click to toggle source
# File lib/cf/spacing.rb, line 84
def justify(str, width)
  trimmed = trim_escapes(str)
  str.ljust(width + (str.size - trimmed.size))
end
line(msg = "") click to toggle source
# File lib/cf/spacing.rb, line 12
def line(msg = "")
  return puts "" if msg.empty?

  start_line(msg)
  puts ""
end
lines(blob) click to toggle source
# File lib/cf/spacing.rb, line 24
def lines(blob)
  blob.each_line do |line|
    start_line(line)
  end

  line
end
quiet?() click to toggle source
# File lib/cf/spacing.rb, line 32
def quiet?
  false
end
spaced(vals) { |val| ... } click to toggle source
# File lib/cf/spacing.rb, line 36
def spaced(vals)
  num = 0
  vals.each do |val|
    line unless quiet? || num == 0
    yield val
    num += 1
  end
end
start_line(msg) click to toggle source
# File lib/cf/spacing.rb, line 19
def start_line(msg)
  print "  " * @@indentation unless quiet?
  print msg
end
tabular(*rows) click to toggle source
# File lib/cf/spacing.rb, line 45
def tabular(*rows)
  spacings = []
  rows.each do |row|
    next unless row

    row.each.with_index do |col, i|
      next unless col

      width = text_width(col)

      if !spacings[i] || width > spacings[i]
        spacings[i] = width
      end
    end
  end

  columns = spacings.size
  rows.each do |row|
    next unless row

    row.each.with_index do |col, i|
      next unless col

      start_line justify(col, spacings[i])
      print "   " unless i + 1 == columns
    end

    line
  end
end
text_width(str) click to toggle source
# File lib/cf/spacing.rb, line 80
def text_width(str)
  trim_escapes(str).size
end
trim_escapes(str) click to toggle source
# File lib/cf/spacing.rb, line 76
def trim_escapes(str)
  str.gsub(/\e\[\d+m/, "")
end