Sha256: 3b27a1901041da8e41834400fe5146062d24cd0733c5bbf03a7fbced4b506b0a

Contents?: true

Size: 1.28 KB

Versions: 10

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_cli/docopt_runner'

module EacCli
  module Docopt
    class DocBuilder
      class Alternative
        common_constructor :alternative

        def to_s
          (
            [::EacCli::DocoptRunner::PROGRAM_MACRO] +
              alternative.options_argument?.if_present([]) { |_v| ['[options]'] } +
              options +
              positionals
          ).join(::EacCli::Docopt::DocBuilder::SEP)
        end

        def options
          alternative.options.select(&:show_on_usage?).map do |option|
            ::EacCli::Docopt::DocBuilder.option_long(option)
          end
        end

        def option_argument(option)
          b = option.long
          b += '=<value>' if option.argument?
          b
        end

        def positionals
          alternative.positional.map { |p| positional(p) }.reject(&:blank?)
        end

        def positional(positional)
          return unless positional.visible?

          if positional.subcommand?
            ::EacCli::DocoptRunner::SUBCOMMANDS_MACRO
          else
            r = "<#{positional.name}>"
            r += '...' if positional.repeat?
            r = "[#{r}]" if positional.optional?
            r
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
eac_cli-0.20.4 lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.20.3 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.102.2 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.20.2 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.102.1 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.20.1 lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.20.0 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.102.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.19.0 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.101.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb