class Estructural

Constants

VERSION

Public Class Methods

new(*attributes, **defaults, &block) click to toggle source
# File lib/estructural.rb, line 4
def self.new(*attributes, **defaults, &block)
  Class.new do
    (attributes + defaults.keys).each do |attr|
      define_method(attr) { instance_variable_get("@#{attr}") }
      define_method("#{attr}=") {|value| instance_variable_set("@#{attr}", value) }
    end

    define_method(:initialize) do |args = {}|
      defaults.each { |attribute, value| send("#{attribute}=", value.dup) }
      args.each { |attribute, value| send "#{attribute}=", value }
    end

    class_eval(&block) if block
  end
end