faster COinS translator

This commit is contained in:
Simon Kornblith 2010-06-16 07:44:31 +00:00
parent e9c561787c
commit 888f2aee68

View File

@ -8,7 +8,7 @@
"maxVersion":"", "maxVersion":"",
"priority":300, "priority":300,
"inRepository":true, "inRepository":true,
"lastUpdated":"2007-09-15 20:08:46" "lastUpdated":"2010-06-16 07:45:00"
} }
function detectWeb(doc, url) { function detectWeb(doc, url) {
@ -16,24 +16,18 @@ function detectWeb(doc, url) {
var encounteredType = false; var encounteredType = false;
for(var i=0; i<spanTags.length; i++) { var spans = doc.evaluate('//span[contains(@class, " Z3988") or contains(@class, "Z3988 ") or @class="Z3988"][@title]', doc, null, XPathResult.ANY_TYPE, null);
var spanClass = spanTags[i].getAttribute("class"); var span;
if(spanClass) { while(span = spans.iterateNext()) {
var spanClasses = spanClass.split(" "); // determine if it's a valid type
if(Zotero.Utilities.inArray("Z3988", spanClasses)) { var item = new Zotero.Item;
var spanTitle = spanTags[i].getAttribute("title"); var success = Zotero.Utilities.parseContextObject(span.title, item);
// determine if it's a valid type if(item.itemType) {
var item = new Zotero.Item; if(encounteredType) {
var success = Zotero.Utilities.parseContextObject(spanTitle, item); return "multiple";
} else {
if(item.itemType) { encounteredType = item.itemType;
if(encounteredType) {
return "multiple";
} else {
encounteredType = item.itemType;
}
}
} }
} }
} }
@ -147,33 +141,27 @@ function doWeb(doc, url) {
var needFullItems = new Array(); var needFullItems = new Array();
var couldUseFullItems = new Array(); var couldUseFullItems = new Array();
var spanTags = doc.getElementsByTagName("span"); var spans = doc.evaluate('//span[contains(@class, " Z3988") or contains(@class, "Z3988 ") or @class="Z3988"][@title]', doc, null, XPathResult.ANY_TYPE, null);
var span;
for(var i=0; i<spanTags.length; i++) { while(span = spans.iterateNext()) {
var spanClass = spanTags[i].getAttribute("class"); var spanTitle = span.title;
if(spanClass) { var newItem = new Zotero.Item();
var spanClasses = spanClass.split(" "); newItem.repository = false; // do not save repository
if(Zotero.Utilities.inArray("Z3988", spanClasses)) { if(Zotero.Utilities.parseContextObject(spanTitle, newItem)) {
var spanTitle = spanTags[i].getAttribute("title"); if(newItem.title) {
var newItem = new Zotero.Item(); if(!newItem.creators.length) {
newItem.repository = false; // do not save repository // if we have a title but little other identifying
if(Zotero.Utilities.parseContextObject(spanTitle, newItem)) { // information, say we'll get full item later
if(newItem.title) { newItem.contextObject = spanTitle;
if(!newItem.creators.length) { couldUseFullItems[newItems.length] = true;
// if we have a title but little other identifying
// information, say we'll get full item later
newItem.contextObject = spanTitle;
couldUseFullItems[newItems.length] = true;
}
// title and creators are minimum data to avoid looking up
newItems.push(newItem);
} else {
// retrieve full item
newItem.contextObject = spanTitle;
needFullItems.push(newItem);
}
} }
// title and creators are minimum data to avoid looking up
newItems.push(newItem);
} else {
// retrieve full item
newItem.contextObject = spanTitle;
needFullItems.push(newItem);
} }
} }
} }