Module: Lutaml::Model::Liquefiable::ClassMethods

Included in:
Serialize::ClassMethods
Defined in:
lib/lutaml/model/liquefiable.rb

Instance Method Summary collapse

Instance Method Details

#drop_classObject



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_nameObject



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_classObject



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