lib/bolognese/datacite_utils.rb in bolognese-1.8.18 vs lib/bolognese/datacite_utils.rb in bolognese-1.9
- old
+ new
@@ -38,10 +38,11 @@
insert_contributors(xml)
insert_dates(xml)
insert_language(xml)
insert_alternate_identifiers(xml)
insert_related_identifiers(xml)
+ insert_related_items(xml)
insert_sizes(xml)
insert_formats(xml)
insert_version(xml)
insert_rights_list(xml)
insert_descriptions(xml)
@@ -84,11 +85,11 @@
Array.wrap(person["nameIdentifiers"]).each do |ni|
xml.nameIdentifier(ni["nameIdentifier"], 'nameIdentifierScheme' => ni["nameIdentifierScheme"], 'schemeURI' => ni["schemeUri"])
end
Array.wrap(person["affiliation"]).each do |affiliation|
attributes = { "affiliationIdentifier" => affiliation["affiliationIdentifier"], "affiliationIdentifierScheme" => affiliation["affiliationIdentifierScheme"], "schemeURI" => affiliation["schemeUri"] }.compact
- xml.affiliation(affiliation["name"], attributes)
+ xml.affiliation(affiliation["name"], attributes)
end
end
def insert_titles(xml)
xml.titles do
@@ -207,10 +208,75 @@
xml.relatedIdentifier(related_identifier["relatedIdentifier"], attributes)
end
end
end
+ def insert_related_items(xml)
+ return xml unless related_items.present?
+
+ xml.relatedItems do
+ related_items.each do |related_item|
+ attributes = {
+ 'relatedItemType' => related_item["relatedItemType"],
+ 'relationType' => related_item["relationType"],
+ }.compact
+
+ xml.relatedItem(related_item["relatedItem"], attributes) do
+
+ xml.relatedItemIdentifier(related_item["relatedItemIdentifier"]['relatedItemIdentifier'],
+ {
+ 'relatedItemIdentifierType' => related_item["relatedItemIdentifier"]["relatedItemIdentifierType"],
+ 'relatedMetadataScheme' => related_item["relatedItemIdentifier"]["relatedMetadataScheme"],
+ 'schemeURI' => related_item["relatedItemIdentifier"]["schemeURI"],
+ 'schemeType' => related_item["relatedItemIdentifier"]["schemeType"],
+ }.compact
+ )
+
+ xml.creators do
+ Array.wrap(related_item['creators']).each do |au|
+ xml.creator do
+ insert_person(xml, au, "creator")
+ end
+ end
+ end
+
+ xml.titles do
+ Array.wrap(related_item['titles']).each do |title|
+ if title.is_a?(Hash)
+ t = title
+ else
+ t = {}
+ t["title"] = title
+ end
+
+ attributes = { 'titleType' => t["titleType"], 'xml:lang' => t["lang"] }.compact
+ xml.title(t["title"], attributes)
+ end
+ end
+
+ xml.publicationYear(related_item['publicationYear'])
+ xml.volume(related_item['volume'])
+ xml.issue(related_item['issue'])
+ xml.number(related_item['number'], {'numberType' => related_item['numberType']}.compact)
+ xml.firstPage(related_item['firstPage'])
+ xml.lastPage(related_item['lastPage'])
+ xml.publisher(related_item['publisher'])
+ xml.edition(related_item['edition'])
+
+ xml.contributors do
+ Array.wrap(related_item["contributors"]).each do |con|
+ xml.contributor("contributorType" => con["contributorType"] || "Other") do
+ insert_person(xml, con, "contributor")
+ end
+ end
+ end
+
+ end
+ end
+ end
+ end
+
def insert_sizes(xml)
xml.sizes do
Array.wrap(sizes).each do |s|
xml.size(s)
end
@@ -236,15 +302,15 @@
r = {}
r["rights"] = rights
r["rightsUri"] = normalize_id(rights)
end
- attributes = {
+ attributes = {
"rightsURI" => r["rightsUri"],
"rightsIdentifier" => r["rightsIdentifier"],
"rightsIdentifierScheme" => r["rightsIdentifierScheme"],
"schemeURI" => r["schemeUri"],
- "xml:lang" => r["lang"]
+ "xml:lang" => r["lang"]
}.compact
xml.rights(r["rights"], attributes)
end
end