commit 888f2aee6897dc7f65af118ff492c696c9f767d1
parent e9c561787ce8599d700140e35a00d2cceab2beaf
Author: Simon Kornblith <simon@simonster.com>
Date: Wed, 16 Jun 2010 07:44:31 +0000
faster COinS translator
Diffstat:
| M | translators/COinS.js | | | 78 | +++++++++++++++++++++++++++++++++--------------------------------------------- |
1 file changed, 33 insertions(+), 45 deletions(-)
diff --git a/translators/COinS.js b/translators/COinS.js
@@ -8,7 +8,7 @@
"maxVersion":"",
"priority":300,
"inRepository":true,
- "lastUpdated":"2007-09-15 20:08:46"
+ "lastUpdated":"2010-06-16 07:45:00"
}
function detectWeb(doc, url) {
@@ -16,24 +16,18 @@ function detectWeb(doc, url) {
var encounteredType = false;
- for(var i=0; i<spanTags.length; i++) {
- var spanClass = spanTags[i].getAttribute("class");
- if(spanClass) {
- var spanClasses = spanClass.split(" ");
- if(Zotero.Utilities.inArray("Z3988", spanClasses)) {
- var spanTitle = spanTags[i].getAttribute("title");
-
- // determine if it's a valid type
- var item = new Zotero.Item;
- var success = Zotero.Utilities.parseContextObject(spanTitle, item);
-
- if(item.itemType) {
- if(encounteredType) {
- return "multiple";
- } else {
- encounteredType = item.itemType;
- }
- }
+ var spans = doc.evaluate('//span[contains(@class, " Z3988") or contains(@class, "Z3988 ") or @class="Z3988"][@title]', doc, null, XPathResult.ANY_TYPE, null);
+ var span;
+ while(span = spans.iterateNext()) {
+ // determine if it's a valid type
+ var item = new Zotero.Item;
+ var success = Zotero.Utilities.parseContextObject(span.title, item);
+
+ if(item.itemType) {
+ if(encounteredType) {
+ return "multiple";
+ } else {
+ encounteredType = item.itemType;
}
}
}
@@ -147,33 +141,27 @@ function doWeb(doc, url) {
var needFullItems = new Array();
var couldUseFullItems = new Array();
- var spanTags = doc.getElementsByTagName("span");
-
- for(var i=0; i<spanTags.length; i++) {
- var spanClass = spanTags[i].getAttribute("class");
- if(spanClass) {
- var spanClasses = spanClass.split(" ");
- if(Zotero.Utilities.inArray("Z3988", spanClasses)) {
- var spanTitle = spanTags[i].getAttribute("title");
- var newItem = new Zotero.Item();
- newItem.repository = false; // do not save repository
- if(Zotero.Utilities.parseContextObject(spanTitle, newItem)) {
- if(newItem.title) {
- if(!newItem.creators.length) {
- // 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);
- }
+ var spans = doc.evaluate('//span[contains(@class, " Z3988") or contains(@class, "Z3988 ") or @class="Z3988"][@title]', doc, null, XPathResult.ANY_TYPE, null);
+ var span;
+ while(span = spans.iterateNext()) {
+ var spanTitle = span.title;
+ var newItem = new Zotero.Item();
+ newItem.repository = false; // do not save repository
+ if(Zotero.Utilities.parseContextObject(spanTitle, newItem)) {
+ if(newItem.title) {
+ if(!newItem.creators.length) {
+ // 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);
}
}
}