1 //var marcdoc = new XML(environment.marc);
2 //var marc_ns = new Namespace('http://www.loc.gov/MARC21/slim');
4 var modsdoc = new XML(environment.mods);
5 var mods_ns = new Namespace('http://www.loc.gov/mods/');
7 //var mods3_ns = new Namespace('http://www.loc.gov/mods/v3');
9 default xml namespace = mods_ns;
13 function extract_typed_title( ti ) {
14 log_debug(ti.toString());
16 return ti.(hasOwnProperty("@type") && @type == 'uniform')[0] ||
17 ti.(hasOwnProperty("@type") && @type == 'translated')[0] ||
18 ti.(hasOwnProperty("@type") && @type == 'alternative')[0];
21 function extract_author( au ) {
22 log_debug(au.toString());
24 if ( au..role.length > 0 ) au = au.(role.text == 'creator' || role.text == 'author');
26 if ( au.(hasOwnProperty("@type")) ) {
27 au = au.(@type == 'personal')[0] ||
28 au.(@type == 'corporate')[0] ||
29 au.(@type == 'conference')[0];
32 return au ? au.namePart[0] : '';
35 log_debug("typeOfResource is " + modsdoc.typeOfResource);
39 // Treat non-text differently
40 if (modsdoc.typeOfResource != 'text') {
43 // Look in related items for a good title
44 for ( var index in modsdoc.relatedItem.( /^(?:host)|(?:series)$/.test(@type) ) ) {
45 var ri = modsdoc.relatedItem[index];
46 if ( ri.(!hasOwnProperty("@type") )) {
47 t = extract_typed_title( ti.titleInfo.(hasOwnProperty('@type')) );
57 log_debug('Found ['+modsdoc.typeOfResource+'] related titleInfo node: ' + t.toXMLString());
62 // Couldn't find a usable title in a related item
64 t = extract_typed_title( modsdoc.titleInfo.(hasOwnProperty('@type')) );
66 t = modsdoc.titleInfo[0];
73 log_debug('Found ['+modsdoc.typeOfResource+'] main titleInfo node: ' + t.toXMLString());
78 if (modsdoc.titleInfo.(hasOwnProperty('@type')))
79 t = extract_typed_title( modsdoc.titleInfo );
82 t = modsdoc.titleInfo[0];
88 log_debug('Found ['+modsdoc.typeOfResource+'] main titleInfo node: ' + t.toXMLString());
93 .replace(/\[.+?\]/,'')
94 .replace(/\bthe\b|\ban?d?\b|\W+/g,'');
98 ( modsdoc.typeOfResource != 'text' ?
99 extract_author(modsdoc.relatedItem.name) :
100 extract_author(modsdoc.name) ) ||
102 ).toLowerCase().replace(/^\s*(\w+).*?$/,"$1");
104 result.fingerprint = title + author;
105 result.quality = '' + quality;