lib/bolognese/readers/datacite_reader.rb in bolognese-1.9.17 vs lib/bolognese/readers/datacite_reader.rb in bolognese-1.9.18

- old
+ new

@@ -155,17 +155,24 @@ .map { |s| s.to_s.squish.presence }.compact funding_references = Array.wrap(meta.dig("fundingReferences", "fundingReference")).compact.map do |fr| scheme_uri = parse_attributes(fr["funderIdentifier"], content: "schemeURI") funder_identifier = parse_attributes(fr["funderIdentifier"]) funder_identifier_type = parse_attributes(fr["funderIdentifier"], content: "funderIdentifierType") - if funder_identifier_type != "Other" - funder_identifier = !funder_identifier.to_s.start_with?("https://","http://") && scheme_uri.present? ? normalize_id(scheme_uri + funder_identifier) : normalize_id(funder_identifier) + + if funder_identifier_type == "Crossref Funder ID" + funder_identifier = validate_funder_doi(funder_identifier) + elsif funder_identifier_type == "ROR" + funder_identifier = normalize_ror(funder_identifier) + scheme_uri = "https://ror.org" + else + funder_identifier = normalize_id(funder_identifier) ? normalize_id(funder_identifier) : funder_identifier end { "funderName" => fr["funderName"], "funderIdentifier" => funder_identifier, "funderIdentifierType" => funder_identifier_type, + "schemeUri" => scheme_uri, "awardNumber" => parse_attributes(fr["awardNumber"]), "awardUri" => parse_attributes(fr["awardNumber"], content: "awardURI"), "awardTitle" => fr["awardTitle"] }.compact end related_identifiers = Array.wrap(meta.dig("relatedIdentifiers", "relatedIdentifier")).map do |ri|