Class: Lutaml::Model::Transformer
- Inherits:
-
Object
- Object
- Lutaml::Model::Transformer
show all
- Defined in:
- lib/lutaml/model/services/transformer.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(rule, attribute, format = nil) ⇒ Transformer
Returns a new instance of Transformer.
43
44
45
46
47
|
# File 'lib/lutaml/model/services/transformer.rb', line 43
def initialize(rule, attribute, format = nil)
@rule = rule
@attribute = attribute
@format = format
end
|
Instance Attribute Details
#attribute ⇒ Object
Returns the value of attribute attribute.
41
42
43
|
# File 'lib/lutaml/model/services/transformer.rb', line 41
def attribute
@attribute
end
|
Returns the value of attribute format.
41
42
43
|
# File 'lib/lutaml/model/services/transformer.rb', line 41
def format
@format
end
|
#rule ⇒ Object
Returns the value of attribute rule.
41
42
43
|
# File 'lib/lutaml/model/services/transformer.rb', line 41
def rule
@rule
end
|
Class Method Details
.call(value, rule, attribute, format: nil) ⇒ Object
5
6
7
|
# File 'lib/lutaml/model/services/transformer.rb', line 5
def call(value, rule, attribute, format: nil)
new(rule, attribute, format).call(value)
end
|
Instance Method Details
68
69
70
71
72
73
74
|
# File 'lib/lutaml/model/services/transformer.rb', line 68
def apply_class_transformer(value, transformer_class, format)
if export_direction?
transformer_class.to(value, format)
else
transformer_class.from(value, format)
end
end
|
#call(value) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/lutaml/model/services/transformer.rb', line 49
def call(value)
methods = transformation_methods
class_transformers = ordered_sources.filter_map do |obj|
next unless obj&.transform.is_a?(Class) &&
obj.transform < Lutaml::Model::ValueTransformer
obj.transform
end
result = class_transformers.reduce(value) do |v, transformer_class|
apply_class_transformer(v, transformer_class, format)
end
methods.reduce(result) do |transformed_value, method|
method.call(transformed_value)
end
end
|
#export_direction? ⇒ Boolean
76
77
78
|
# File 'lib/lutaml/model/services/transformer.rb', line 76
def export_direction?
false
end
|
80
81
82
83
84
85
|
# File 'lib/lutaml/model/services/transformer.rb', line 80
def get_transform(obj, direction)
transform = obj&.transform
return nil if transform.is_a?(Class)
transform.is_a?(::Hash) ? transform[direction] : transform
end
|