Sha256: db6f2ebb1b824385891c6e553b3428556fbdf051af476a482ac89a7b6f24b930

Contents?: true

Size: 1009 Bytes

Versions: 2

Compression:

Stored size: 1009 Bytes

Contents

require "Get_Set/version"
require 'Checked'

module Get_Set
  
  module DSL
    
    include Checked::DSL

    def self.included klass
      klass.extend Class_Methods
    end

    module Class_Methods
      
      include Checked::DSL
      
      def attr_get_set *names
        Array!(names).symbols!
        names.each { |n|
          class_eval %~
            def #{n} *args
              instance_variable_set( :@#{n}, nil ) unless instance_variable_defined?(:@#{n})
              Get_Set! :@#{n}, *args
            end
          ~, __FILE__, __LINE__
        }
      end
      
    end # === module Class_Methods
    
    def Get_Set! *args
      Size! args, 1..2
      name = args.shift
      raise ArgumentError, "Instance variable #{name.inspect} has not been defined." unless instance_variable_defined?(name)

      if args.empty?
        instance_variable_get name
      else
        instance_variable_set name, args.first
      end
    end
    
  end # === module DSL
  
end # === module Get_Set

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
Get_Set-1.1.1 lib/Get_Set.rb
Get_Set-1.1.0 lib/Get_Set.rb