class Lutaml::Uml::Association

Attributes

action[RW]
member_end[RW]
member_end_attribute_name[RW]
member_end_cardinality[RW]
member_end_type[RW]
owner_end[RW]
owner_end_attribute_name[RW]
owner_end_cardinality[RW]
owner_end_type[RW]
static[RW]

Public Instance Methods

members=(value) click to toggle source

TODO: move to Parslet::Transform

# File lib/lutaml/uml/association.rb, line 20
def members=(value)
  value.group_by { |member| member.keys.first }
    .each do |(type, group)|
      if %w[owner_end member_end].include?(type)
        group.each do |member|
          member.each_pair do |key, member_value|
            public_send("#{associtaion_type(key)}=", member_value)
          end
        end
        next
      end
      attribute_value = group.map(&:values).flatten
      if attribute_value.length == 1 && !attribute_value.first.is_a?(Hash)
        next public_send("#{associtaion_type(type)}=", attribute_value.first)
      end

      public_send("#{associtaion_type(type)}=", attribute_value)
    end
end