Sha256: ffe51a391eace64850a1a8c4f25887b3a73ad87677b90d6c96fc4f7816e2ea73

Contents?: true

Size: 880 Bytes

Versions: 5

Compression:

Stored size: 880 Bytes

Contents

module Checked

  class Args
    
    Unknown_Class = Class.new(RuntimeError)

    module Base

      def initialize *arr
        arr.flatten.each { |var|
          case var
          when Array
            var.each { |k|
              define k
            }
          when Hash
            var.each { |k,v|
              define k
              send("#{k}=", v)
            }
          else
            raise Unknown_Class, var.inspect
          end
        }
      end

      def define *raw
        raw.flatten.each { |k|
          eval %~

        def #{k}
          @#{k}
        end

        def #{k}= v
          @#{k} = v
        end

        ~
        }
      end

      def defined? key
        respond_to?( key ) && 
          respond_to?( :"#{key}=" )
      end

    end # === module Base
    
    include Base
    
  end # === module Args
  
end # === module Checked

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
Checked-0.1.4 lib/Checked/Args.rb
Checked-0.1.3 lib/Checked/Args.rb
Checked-0.1.2 lib/Checked/Args.rb
Checked-0.1.1 lib/Checked/Args.rb
Checked-0.1.0 lib/Checked/Args.rb