module Eco::CLI::Config::Help

Public Instance Methods

help(*args) click to toggle source
# File lib/eco/cli/config/help.rb, line 6
def help(*args)
  raise "this needs to be reimplemented in the child class and return a string"
end

Private Instance Methods

each_slice_words(str, max_len = 100) { |liner| ... } click to toggle source
# File lib/eco/cli/config/help.rb, line 29
def each_slice_words(str, max_len = 100)
  liner = ""
  str.to_s.scan(/[^\s]+|\s+/).each_with_object([]) do |part, out|
    if "#{liner}#{part}".length <= max_len
      liner << part
    else
      yield(liner) if block_given?
      out << liner
      liner = part.strip
    end
  end.tap do |out|
    if out.empty? || !liner.empty?
      yield(liner) if block_given?
      out << liner if liner
    end
  end
end
help_line(key, desc, keys_max_len = key.length, line_len = 100) click to toggle source

Creatas a well aligned line

# File lib/eco/cli/config/help.rb, line 17
def help_line(key, desc, keys_max_len = key.length, line_len = 100)
  blanks    = keys_max_len + 3 - key.length
  blanks    = blanks < 0 ? 0 : blanks
  top_line  = "  #{key}#{" "*blanks} "
  indent    = top_line.length
  first     = true
  each_slice_words(desc, line_len - indent).each_with_object([]) do |line, lines|
    lines << (first ? "#{top_line}#{line}" : "#{" " * indent}#{line}")
    first = false
  end.join("\n")
end
keys_max_len(keys) click to toggle source
# File lib/eco/cli/config/help.rb, line 12
def keys_max_len(keys)
  keys.max {|a, b| a.length <=> b.length}.length
end