Class: DataClass::Definer
- Inherits:
-
Object
- Object
- DataClass::Definer
- Defined in:
- lib/data_class/definer.rb
Overview
An internal class for providing implementation of ‘Data.define`.
Instance Method Summary collapse
- #define_class(parent_class:, &block) ⇒ Class<Data>
-
#initialize(definition) ⇒ Definer
constructor
A new instance of Definer.
Constructor Details
#initialize(definition) ⇒ Definer
Returns a new instance of Definer.
7 8 9 |
# File 'lib/data_class/definer.rb', line 7 def initialize(definition) @definition = definition end |
Instance Method Details
#define_class(parent_class:, &block) ⇒ Class<Data>
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/data_class/definer.rb', line 13 def define_class(parent_class:, &block) attribute_names = @definition.attribute_names # defines a subclass of Data. Class.new(parent_class) do public_class_method :new private_class_method :define attribute_names.each { |key| define_method(key) { @data[key] } } define_singleton_method(:members) { attribute_names } class_eval(&block) unless block.nil? end end |