Class: L43::Base::DataClass::DataClassMaker
- Inherits:
-
Object
- Object
- L43::Base::DataClass::DataClassMaker
- Defined in:
- lib/l43/base/data_class/data_class_maker.rb
Instance Attribute Summary collapse
-
#block_name ⇒ Object
readonly
Returns the value of attribute block_name.
-
#block_required ⇒ Object
readonly
Returns the value of attribute block_required.
-
#defaulted ⇒ Object
readonly
Returns the value of attribute defaulted.
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
Instance Method Summary collapse
- #attributes ⇒ Object
- #defattr(name, required: false, default: Undefined, &init) ⇒ Object
- #defaults ⇒ Object
- #define(*required, **defaulted, &blk) ⇒ Object
- #required_att_names ⇒ Object
Instance Attribute Details
#block_name ⇒ Object (readonly)
Returns the value of attribute block_name.
10 11 12 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 10 def block_name @block_name end |
#block_required ⇒ Object (readonly)
Returns the value of attribute block_required.
10 11 12 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 10 def block_required @block_required end |
#defaulted ⇒ Object (readonly)
Returns the value of attribute defaulted.
10 11 12 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 10 def defaulted @defaulted end |
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
10 11 12 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 10 def klass @klass end |
Instance Method Details
#attributes ⇒ Object
27 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 27 def attributes = @__attributes__ ||= {} |
#defattr(name, required: false, default: Undefined, &init) ⇒ Object
12 13 14 15 16 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 12 def defattr(name, required: false, default: Undefined, &init) raise ArgumentError, "must not redefine attribute #{name}" if attributes[name] attributes.update(name => Attribute.new(name:, required:, default:, &init)) self end |
#defaults ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 29 def defaults @__defaults__ ||= attributes .values .reject { it.default == Undefined } .map { [it.name, it.default] } .to_h end |
#define(*required, **defaulted, &blk) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 18 def define(*required, **defaulted, &blk) add_required_attributes(required) add_defaulted_attributes(defaulted) @klass = Class.new(DataClassClass) define_klass klass.module_eval(&blk) if blk klass.freeze end |
#required_att_names ⇒ Object
37 |
# File 'lib/l43/base/data_class/data_class_maker.rb', line 37 def required_att_names = @__required_att_names__ ||= attributes.values.select(&:required).map(&:name) |