lib/ooz/model/ooze.rb in ooze-parser-0.1.8 vs lib/ooz/model/ooze.rb in ooze-parser-0.1.9

- old
+ new

@@ -38,11 +38,29 @@ def fields membranes end - def fields_hash(key: "_id") - to_hash(fields, key: key) + def fields_hash(key: "_id", silent: true) + fields.group_by do |fld| + fld.send(key) + end.transform_values do |flds| + if flds.length == 1 + flds.first + else + master = flds.first + next master unless master.is_a?(Ooz::Model::Field::Select) + rest = flds[1..-1] + rest.each do |fld| + if fld.is_a?(Ooz::Model::Field::Select) + master.other ||= fld.other + master.multiple ||= fld.multiple + Ooz::Base::Field::Select.merge_options(master, fld, silent: silent) + end + end + master + end + end end def sections flow_nodes end