Sha256: fa04a07419f6b893dc97c67d7d944933340247b90504777c668455ba79bbf6f5

Contents?: true

Size: 1.3 KB

Versions: 6

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require 'eac_cli/definition/option_or_positional'
require 'eac_ruby_utils/core_ext'

module EacCli
  class Definition
    class Positional < ::EacCli::Definition::OptionOrPositional
      DEFAULT_REQUIRED = true
      DEFAULT_VISIBLE = true

      lists.add_symbol :option, *OPTION_LIST, :subcommand, :visible

      # @!method initialize(name, options = {})
      # @param name [String]
      # @param options [Hash<Symbol, Object>]
      common_constructor :name, :options, default: [{}] do
        options.assert_valid_keys(self.class.lists.option.values)
      end

      # @param new_value [Array, Object]
      # @param previous_value [Array, Object]
      # @return [Array]
      def build_value(new_value, previous_value)
        if previous_value.is_a?(::Array)
          previous_value + [new_value]
        else
          new_value
        end
      end

      # @return [Object]
      def default_value
        repeat? ? [] : nil
      end

      # @return [Symbol]
      def identifier
        name.to_s.variableize.to_sym
      end

      # @return [Boolean]
      def subcommand?
        options[OPTION_SUBCOMMAND]
      end

      # @return [Boolean]
      def visible?
        options.key?(OPTION_VISIBLE) ? options.fetch(OPTION_VISIBLE) : DEFAULT_VISIBLE
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
eac_cli-0.42.0 lib/eac_cli/definition/positional.rb
eac_cli-0.40.1 lib/eac_cli/definition/positional.rb
eac_cli-0.40.0 lib/eac_cli/definition/positional.rb
eac_cli-0.39.0 lib/eac_cli/definition/positional.rb
eac_cli-0.38.1 lib/eac_cli/definition/positional.rb
eac_tools-0.82.0 sub/eac_cli/lib/eac_cli/definition/positional.rb