Sha256: 650a74ae47463af38cf69a95b22699685b3975007ada62cf38cf30ad46096196

Contents?: true

Size: 1.37 KB

Versions: 15

Compression:

Stored size: 1.37 KB

Contents

require 'unicode'
module HammerCLI
  module Help
    class Builder < Clamp::Help::Builder
      DEFAULT_LABEL_INDENT = 29

      attr_reader :richtext

      def initialize(richtext = false)
        super()
        @richtext = richtext
      end

      def add_usage(invocation_path, usage_descriptions)
        heading(Clamp.message(:usage_heading))
        usage_descriptions.each do |usage|
          puts "    #{invocation_path} #{usage}".rstrip
        end
      end

      def add_list(heading, items)
        items.sort! do |a, b|
          a.help[0] <=> b.help[0]
        end
        items.reject! {|item| item.respond_to?(:hidden?) && item.hidden?}

        puts
        heading(heading)

        label_width = DEFAULT_LABEL_INDENT
        items.each do |item|
          label, description = item.help
          label_width = label.size if label.size > label_width
        end

        items.each do |item|
          label, description = item.help
          description.gsub(/^(.)/) { Unicode::capitalize($1) }.each_line do |line|
            puts " %-#{label_width}s %s" % [label, line]
            label = ''
          end
        end
      end

      def add_text(content)
        puts
        puts content
      end

      protected

      def heading(label)
        label = "#{label}:"
        label = HighLine.color(label, :bold) if @richtext
        puts label
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
hammer_cli-2.0.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.19.2 lib/hammer_cli/help/builder.rb
hammer_cli-0.19.1 lib/hammer_cli/help/builder.rb
hammer_cli-0.18.1 lib/hammer_cli/help/builder.rb
hammer_cli-0.19.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.18.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.17.1 lib/hammer_cli/help/builder.rb
hammer_cli-0.17.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.16.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.15.1 lib/hammer_cli/help/builder.rb
hammer_cli-0.15.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.14.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.13.1 lib/hammer_cli/help/builder.rb
hammer_cli-0.13.0 lib/hammer_cli/help/builder.rb
hammer_cli-0.12.0 lib/hammer_cli/help/builder.rb