Sha256: 757cba369560ce31d3195889fe5a01c1f26a799a59ebdaaed54a19529f21aece

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

module Eco
  class CLI
    class Config
      module Help

        def help
          raise "this needs to be reimplemented in the child class and return a string"
        end

        private

        def keys_max_len(keys)
          keys.max {|a, b| a.length <=> b.length}.length
        end

        # Creatas a well aligned line
        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

        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

      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
eco-helpers-2.0.25 lib/eco/cli/config/help.rb
eco-helpers-2.0.24 lib/eco/cli/config/help.rb
eco-helpers-2.0.23 lib/eco/cli/config/help.rb
eco-helpers-2.0.22 lib/eco/cli/config/help.rb
eco-helpers-2.0.21 lib/eco/cli/config/help.rb
eco-helpers-2.0.19 lib/eco/cli/config/help.rb
eco-helpers-2.0.18 lib/eco/cli/config/help.rb
eco-helpers-2.0.17 lib/eco/cli/config/help.rb