Sha256: 1a1b3bc1c079a8dbbb5ab2f88d26db6a234fdef726e802d68969ed31a613760e

Contents?: true

Size: 1.26 KB

Versions: 51

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/console/docopt_runner'

module EacCli
  module Docopt
    class DocBuilder
      class Alternative
        common_constructor :alternative

        def to_s
          (
            [::EacRubyUtils::Console::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) }
        end

        def positional(positional)
          if positional.subcommand?
            ::EacRubyUtils::Console::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

51 entries across 51 versions & 3 rubygems

Version Path
avm-tools-0.98.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.97.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.96.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.16.3 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.95.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.16.2 lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.16.1 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.94.3 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.16.0 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.94.2 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.94.1 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.15.1 lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.15.0 lib/eac_cli/docopt/doc_builder/alternative.rb
ehbrs-tools-0.20.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.94.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.14.0 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.93.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
eac_cli-0.13.0 lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.92.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
avm-tools-0.91.0 vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb