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;
14 function extract_typed_title( ti ) {
17 var types = ['uniform','translated','alternative'];
18 for ( var j in types ) {
20 if (ti[i].attribute("type") == types[j])
31 function extract_author( au ) {
32 log_debug(au.toString());
34 if ( au..role.length() > 0 ) au = au.(role.text == 'creator' || role.text == 'author');
36 if ( au.(hasOwnProperty("@type")) ) {
37 au = au.(@type == 'personal')[0] ||
38 au.(@type == 'corporate')[0] ||
39 au.(@type == 'conference')[0];
42 return au ? au.namePart[0] : '';
45 log_debug("typeOfResource is " + modsdoc.typeOfResource);
49 // Treat non-text differently
50 if (modsdoc.typeOfResource != 'text') {
53 // Look in related items for a good title
54 for ( var index in modsdoc.relatedItem.( hasOwnProperty('@type') && @type != 'series' && @type != 'host' ) ) {
55 var ri = modsdoc.relatedItem[index];
56 if ( ri.(!hasOwnProperty("@type") )) {
57 t = extract_typed_title( ri.titleInfo.(hasOwnProperty('@type')) );
67 log_debug('Found ['+modsdoc.typeOfResource+'] related titleInfo node: ' + t.toXMLString());
72 // Couldn't find a usable title in a related item
74 t = extract_typed_title( modsdoc.titleInfo );
76 t = modsdoc.titleInfo[0];
83 log_debug('Found ['+modsdoc.typeOfResource+'] main titleInfo node: ' + t.toXMLString());
88 t = extract_typed_title( modsdoc.titleInfo );
91 t = modsdoc.titleInfo[0];
97 log_debug('Found ['+modsdoc.typeOfResource+'] main titleInfo node: ' + t.toXMLString());
102 .replace(/\[.+?\]/,'')
103 .replace(/\bthe\b|\ban?d?\b|\W+/g,'');
107 ( modsdoc.typeOfResource != 'text' ?
108 extract_author(modsdoc.relatedItem.name) :
109 extract_author(modsdoc.name) ) ||
111 ).toLowerCase().replace(/^\s*(\w+).*?$/,"$1");
113 result.fingerprint = title + author;
114 result.quality = '' + quality;