class Skala::PrimoAdapter::Search::ResultTransformation::DocTransformation::SetIdentifier
Public Instance Methods
call()
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb, line 7 def call sanitizer = Rails::Html::FullSanitizer.new identifier_strings = transformation.read_source_values(".//display/identifier", split: ";") identifier_strings.map!{|s| sanitizer.sanitize(s)} isbns = extract_isbns(identifier_strings) issns = extract_issns(identifier_strings) dois = extract_dois(identifier_strings) target.record.isbn = isbns target.record.issn = issns target.record.identifier = dois.map{|i| {type: "doi", value: i}} end
Private Instance Methods
extract(identifier_strings, regexp, match_index: 0)
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb, line 36 def extract(identifier_strings, regexp, match_index: 0) values = [] identifier_strings.each do |s| values += s.scan(regexp).map{|r| r[match_index]} end values.compact end
extract_dois(identifier_strings)
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb, line 32 def extract_dois(identifier_strings) extract(identifier_strings, /doi:\s+([a-z0-9\-\.\/]+)/i) end
extract_isbns(identifier_strings)
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb, line 24 def extract_isbns(identifier_strings) extract(identifier_strings, /(isbn:|e-isbn:)\s+([a-z0-9\-\.\/]+)/i, match_index: 1) end
extract_issns(identifier_strings)
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb, line 28 def extract_issns(identifier_strings) extract(identifier_strings, /(issn:|e-issn:)\s+([a-z0-9\-\.\/]+)/i, match_index: 1) end