Sha256: 3ee5d407078f6c755703237ab8b0b09d6f51f965fc02d343cb9a45490f22c09f

Contents?: true

Size: 1.77 KB

Versions: 24

Compression:

Stored size: 1.77 KB

Contents

module GLI
  module Commands
    module HelpModules
      class OptionsFormatter
        def initialize(flags_and_switches,sorter,wrapper_class)
          @flags_and_switches = sorter.call(flags_and_switches)
          @wrapper_class = wrapper_class
        end

        def format
          list_formatter = ListFormatter.new(@flags_and_switches.map { |option|
            if option.respond_to? :argument_name
              [option_names_for_help_string(option,option.argument_name),description_with_default(option)]
            else
              [option_names_for_help_string(option),description_with_default(option)]
            end
          },@wrapper_class)
          stringio = StringIO.new
          list_formatter.output(stringio)
          stringio.string
        end

      private

        def description_with_default(option)
          if option.kind_of? Flag
            required = option.required? ? 'required, ' : ''
            multiple = option.multiple? ? 'may be used more than once, ' : ''

            String(option.description) + " (#{required}#{multiple}default: #{option.safe_default_value || 'none'})"
          else
            String(option.description) +  (option.default_value ?  " (default: enabled)" : "")
          end
        end

        def option_names_for_help_string(option,arg_name=nil)
          names = [option.name,Array(option.aliases)].flatten
          names = names.map { |name| CommandLineOption.name_as_string(name,option.kind_of?(Switch) ? option.negatable? : false) }
          if arg_name.nil?
            names.join(', ')
          else
            if names[-1] =~ /^--/
              names.join(', ') + "=#{arg_name}"
            else
              names.join(', ') + " #{arg_name}"
            end
          end
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
gli-2.22.2 lib/gli/commands/help_modules/options_formatter.rb
gli-2.22.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.22.0 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.5 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.4 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.3 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.2 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.21.0 lib/gli/commands/help_modules/options_formatter.rb
gli-2.20.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.20.0 lib/gli/commands/help_modules/options_formatter.rb
gli-2.19.2 lib/gli/commands/help_modules/options_formatter.rb
gli-2.19.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.19.0 lib/gli/commands/help_modules/options_formatter.rb
gli-2.18.2 lib/gli/commands/help_modules/options_formatter.rb
gli-2.18.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.18.0 lib/gli/commands/help_modules/options_formatter.rb
gli-2.17.2 lib/gli/commands/help_modules/options_formatter.rb
gli-2.17.1 lib/gli/commands/help_modules/options_formatter.rb
gli-2.17.0 lib/gli/commands/help_modules/options_formatter.rb