Module: Lutaml::Model::Liquefiable::ClassMethods
- Included in:
- Serialize::ClassMethods
- Defined in:
- lib/lutaml/model/liquefiable.rb
Instance Method Summary collapse
- #drop_class ⇒ Object
- #drop_class_name ⇒ Object
- #register_drop_method(method_name) ⇒ Object
- #register_liquid_drop_class ⇒ Object
- #validate_liquid! ⇒ Object
Instance Method Details
#drop_class ⇒ Object
32 33 34 35 36 |
# File 'lib/lutaml/model/liquefiable.rb', line 32 def drop_class const_get(drop_class_name) rescue StandardError nil end |
#drop_class_name ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/lutaml/model/liquefiable.rb', line 24 def drop_class_name @drop_class_name ||= if name "#{to_s.split('::').last}Drop" else "Drop" end end |
#register_drop_method(method_name) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/lutaml/model/liquefiable.rb', line 38 def register_drop_method(method_name) register_liquid_drop_class unless drop_class return if drop_class.method_defined?(method_name) drop_class.define_method(method_name) do value = @object.public_send(method_name) if value.is_a?(Array) value.map(&:to_liquid) else value.to_liquid end end end |
#register_liquid_drop_class ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/lutaml/model/liquefiable.rb', line 9 def register_liquid_drop_class validate_liquid! if drop_class raise "#{drop_class_name} Already exists!" end const_set(drop_class_name, Class.new(Liquid::Drop) do def initialize(object) super() @object = object end end) end |
#validate_liquid! ⇒ Object
53 54 55 56 57 |
# File 'lib/lutaml/model/liquefiable.rb', line 53 def validate_liquid! return if Object.const_defined?(:Liquid) raise Lutaml::Model::LiquidNotEnabledError end |