Module: L42::DataClass
- Defined in:
- lib/l42/data_class.rb
Defined Under Namespace
Classes: KeywordArgumentError, PositionalArgumentError
Instance Method Summary collapse
Instance Method Details
#attributes(*args, **kwds) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/l42/data_class.rb', line 8 def attributes(*args, **kwds) attr_reader(*args) attr_reader(*kwds.keys) define_method :initialize do |*a, **k| asize = a.size argssize = args.size raise PositionalArgumentError, "bad arity: expected were #{argssize} given are #{asize}\n#{a.inspect}" unless asize == args.size spourious = k.keys - kwds.keys raise KeywordArgumentError, "spurious keywords: #{spourious.inspect}" unless spourious.empty? args.zip(a).each { |name, value| instance_variable_set("@#{name}", value) } kwds.merge(k).each { |name, value| instance_variable_set("@#{name}", value) } begin init rescue NameError nil end end end |