Sha256: ec30deb6561c0fdc226553efb74af9b3ff1f5cc1fa032e039b3e027cf683f7a7

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require 'rprogram/extensions/meta'
require 'rprogram/non_option'
require 'rprogram/option'

module RProgram
  module Options
    def self.included(base)
      base.metaclass_eval do
        def non_options
          @non_options ||= {}
        end

        def has_non_option?(name)
          name = name.to_sym

          ancestors.each do |base|
            if base.include?(Options)
              return true if base.non_options.include?(name)
            end
          end

          return false
        end

        def get_non_option(name)
          name = name.to_sym

          ancestors.each do |base|
            if base.include?(Options)
              return base.non_options[name] if base.non_options.has_key?(name)
            end
          end

          return nil
        end

        def options
          @options ||= {}
        end

        def has_option?(name)
          name = name.to_sym

          ancestors.each do |base|
            if base.include?(Options)
              return true if base.options.has_key?(name)
            end
          end

          return false
        end

        def get_option(name)
          name = name.to_sym

          ancestors.each do |base|
            if base.include?(Options)
              return base.options[name] if base.options.has_key?(name)
            end
          end

          return nil
        end
      end
    end

    def has_non_option?(name)
      self.class.has_non_option?(name)
    end

    def get_non_option(name)
      self.class.get_non_option(name)
    end

    def has_option?(name)
      self.class.has_option?(name)
    end

    def get_option(name)
      self.class.get_option(name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rprogram-0.0.9 lib/rprogram/options.rb