Class: Metaschema::ModelGenerator::Services::CollapsiblesCollapser
- Inherits:
-
Object
- Object
- Metaschema::ModelGenerator::Services::CollapsiblesCollapser
- Defined in:
- lib/metaschema/model_generator/services/collapsibles_collapser.rb
Overview
Collapses multiple model instances that share the same flag values into a single instance with array-valued content. Implements the Metaschema “collapsible” field semantics.
The inverse operation (expanding collapsed items) is performed by FieldDeserializer#separate.
Instance Attribute Summary collapse
-
#collapsibles ⇒ Object
readonly
Returns the value of attribute collapsibles.
Instance Method Summary collapse
- #call(value) ⇒ Object
-
#initialize(model_class, collapsible_attributes, format, models) ⇒ CollapsiblesCollapser
constructor
A new instance of CollapsiblesCollapser.
Constructor Details
#initialize(model_class, collapsible_attributes, format, models) ⇒ CollapsiblesCollapser
Returns a new instance of CollapsiblesCollapser.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/metaschema/model_generator/services/collapsibles_collapser.rb', line 15 def initialize(model_class, collapsible_attributes, format, models) @model_class = model_class @collapsible_attributes = collapsible_attributes @format = format @uncollapsible_mappings = model_class.mappings[format].mappings .reject { |n| collapsible_attributes.key?(n.to) } @collapsibles = [] @groups = {} process(models) end |
Instance Attribute Details
#collapsibles ⇒ Object (readonly)
Returns the value of attribute collapsibles.
13 14 15 |
# File 'lib/metaschema/model_generator/services/collapsibles_collapser.rb', line 13 def collapsibles @collapsibles end |
Instance Method Details
#call(value) ⇒ Object
26 27 28 |
# File 'lib/metaschema/model_generator/services/collapsibles_collapser.rb', line 26 def call(value) @groups.map { |_, group| collapse_group(group, value) } end |