Sha256: cc1e3b6fa94cfac16722e256b6d4e504e6a043b89c74fc30fb83bd731f7f561b

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module UltraCommandLine
  module Commands

    module Factory

      DEFAULT_BANNER = ''.freeze
      DEFAULT_COMMAND_TYPE = :bool

      include UltraCommandLine::Utils::YamlFactory

      def from_hash(definition_hash, factory_options = {})
        name = factory_options.fetch :name, ''
        options_definition_hash = definition_hash.fetch(:options, {})
        manager = factory_options[:manager]
        banner = definition_hash.fetch :banner, DEFAULT_BANNER
        type = definition_hash.fetch :type, DEFAULT_COMMAND_TYPE
        create_command name, type, options_definition_hash, banner, manager
      end

      private

      def create_command(name, type, options_definition_hash, banner, manager)
        options = options_definition_hash.map do |option_name, option_definition_hash|
          option_type = option_definition_hash[:type].to_sym
          UltraCommandLine::Commands::OptionDefinition.new option_name, option_type, option_definition_hash
        end
        new manager, name, type, banner, options: options
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ultra_command_line-0.4.9 lib/ultra_command_line/commands/factory.rb