lib/bolognese/utils.rb in bolognese-1.2.20 vs lib/bolognese/utils.rb in bolognese-1.3.1

- old
+ new

@@ -574,20 +574,46 @@ map_hash_keys(element: element, mapping: mapping) end def to_schema_org_creators(element) element = Array.wrap(element).map do |c| - c["affiliation"] = { "@type" => "Organization", "name" => Array.wrap(c["affiliation"]).first } if c["affiliation"].present? + c["affiliation"] = Array.wrap(c["affiliation"]).map do |a| + if a.is_a?(String) + name = a + id = nil + else + name = a["name"] + id = a["id"] + end + + { + "@type" => "Organization", + "@id" => id, + "name" => name }.compact + end.unwrap c["@type"] = c["nameType"].present? ? c["nameType"][0..-3] : nil c["@id"] = Array.wrap(c["nameIdentifiers"]).first.to_h.fetch("nameIdentifier", nil) c["name"] = c["familyName"].present? ? [c["givenName"], c["familyName"]].join(" ") : c["name"] c.except("nameIdentifiers", "nameType").compact end.unwrap end def to_schema_org_contributors(element) element = Array.wrap(element).map do |c| - c["affiliation"] = { "@type" => "Organization", "name" => Array.wrap(c["affiliation"]).first } if c["affiliation"].present? + c["affiliation"] = Array.wrap(c["affiliation"]).map do |a| + if a.is_a?(String) + name = a + id = nil + else + name = a["name"] + id = a["id"] + end + + { + "@type" => "Organization", + "@id" => id, + "name" => name }.compact + end.unwrap c["@type"] = c["nameType"].present? ? c["nameType"][0..-3] : nil c["@id"] = Array.wrap(c["nameIdentifiers"]).first.to_h.fetch("nameIdentifier", nil) c["name"] = c["familyName"].present? ? [c["givenName"], c["familyName"]].join(" ") : c["name"] c.except("nameIdentifiers", "nameType").compact end.unwrap