module Mameconf::ClassMethods

Attributes

mameconf_attr_names[RW]

Public Instance Methods

mameconf(name, options={}) click to toggle source
# File lib/mameconf.rb, line 30
    def mameconf(name, options={})
      mameconf_attr_names << name
      
      default_value = options[:default]
      class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{name}
          if !instance_variables.include?(:@#{name})
            @#{name} ||= #{default_value.inspect}
          end
            
          @#{name}
        end

        def #{name}=(val)
          @#{name} = val
        end

        def to_hash
          ret = {}
          self.class.mameconf_attr_names.each do |attr|
            attr_sym = attr.to_sym
            ret[attr_sym] = self.__send__(attr_sym)
          end
          ret
        end
      RUBY
    end