Class: Lutaml::Model::Consolidation::AttributeGrouper

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/model/consolidation/attribute_grouper.rb

Instance Method Summary collapse

Instance Method Details

#process(collection, map, raw_items) ⇒ Object

Parameters:

  • collection (Collection)

    the collection instance

  • map (ConsolidationMap)

    consolidation configuration

  • raw_items (Array)

    raw parsed instances



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/lutaml/model/consolidation/attribute_grouper.rb', line 10

def process(collection, map, raw_items)
  gather_rule = map.rules.find { |r| r.is_a?(GatherRule) }
  dispatch_block = map.rules.find { |r| r.is_a?(DispatchBlock) }

  # Group by the attribute declared in map.by
  grouped = raw_items.group_by { |item| item.public_send(map.by) }

  organized = grouped.map do |_key, items|
    build_group(map.group_class, items, gather_rule, dispatch_block)
  end

  collection.public_send(:"#{map.to}=", organized)
end