Sha256: 23ddba49d3714ca456d60619750dd744a2ef9db658b75056ee6ed3c8abca8475

Contents?: true

Size: 972 Bytes

Versions: 3

Compression:

Stored size: 972 Bytes

Contents

module Pione
  module CommandOption
    module OptionInterface
      # @api private
      def self.extended(klass)
        klass.instance_variable_set(:@command_options, {})
      end

      # Defines an option for the command.
      # @return [void]
      def define_option(*args, &b)
        @command_options[args.first] = [args, b]
      end

      # Removes the option.
      # @return [void]
      def remove_option(name)
        @command_options.delete(name)
      end

      # Returns the command options.
      # @return [Array]
      def command_options
        @command_options
      end

      # Installs the option module.
      # @return [void]
      def use_option_module(mod)
        @command_options = @command_options.update(mod.command_options)
      end
    end

    class BasicOption
      extend OptionInterface

      def self.inherited(klass)
        klass.instance_variable_set(:@command_options, command_options.clone)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.1.2 lib/pione/command-option/basic-option.rb
pione-0.1.1 lib/pione/command-option/basic-option.rb
pione-0.1.0 lib/pione/command-option/basic-option.rb