commit ae59249206fcfe34a9cacfecb734d240c7634ce1
parent 0972918018b07bbdc16fb249ea9ef898db55657f
Author: Avram Lyon <ajlyon@gmail.com>
Date: Sat, 25 Jun 2011 17:51:08 +0000
Trans: Add additional pattern for Informaworld; add tests. Per http://forums.zotero.org/discussion/12514
Diffstat:
1 file changed, 109 insertions(+), 16 deletions(-)
diff --git a/translators/Informaworld.js b/translators/Informaworld.js
@@ -1,14 +1,14 @@
{
- "translatorID":"1885b93c-cf37-4b25-aef5-283f42eada9d",
- "label":"Informaworld",
- "creator":"Michael Berkowitz",
- "target":"^http://www\\.informaworld\\.com",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "translatorType":4,
- "lastUpdated":"2011-05-23 06:45:00"
+ "translatorID": "1885b93c-cf37-4b25-aef5-283f42eada9d",
+ "label": "Informaworld",
+ "creator": "Michael Berkowitz",
+ "target": "^http://www\\.informaworld\\.com",
+ "minVersion": "1.0.0b4.r5",
+ "maxVersion": "",
+ "priority": 100,
+ "inRepository": true,
+ "translatorType": 4,
+ "lastUpdated": "2011-06-22 23:21:54"
}
/* Test URLs
@@ -22,26 +22,32 @@ Journal issue ToC:
*/
function detectWeb(doc, url) {
- if (url.indexOf("quicksearch") !== -1 || url.indexOf("title~db") !== -1) {
+ if (url.indexOf("quicksearch") !== -1 ||
+ (url.indexOf("title~db") !== -1
+ && !doc.evaluate('//div[@id="breadcrumb"]/a[text() = "Books"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext())) {
return "multiple";
} else if (url.indexOf("content=g") != -1 ||
doc.evaluate('//div[@id="browse"]//tbody/tr/td[2]/a[2]', doc, null, XPathResult.ANY_TYPE, null).iterateNext() ||
doc.evaluate('//div[@id="title"]//td[2]/div/strong/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
- } else if (doc.evaluate('//a[substring(text(), 2, 8) = "Download"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
+ } else if (doc.evaluate('//a[substring(text(), 2, 8) = "Download"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext() ||
+ doc.evaluate('//div[@id="breadcrumb"]/a[text() = "Journals" or text() = "Books"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext() ) {
if (doc.evaluate('//img[substring(@title, 1, 17) = "Publication type:"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- var pubtype = doc.evaluate('//img[substring(@title, 1, 17) = "Publication type:"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().title;
+ var pubtype = doc.evaluate('//div[@id="breadcrumb"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext().title;
if (pubtype.match("journal")) {
return "journalArticle";
} else if (pubtype.match("book")) {
return "bookSection";
}
} else {
+ if (doc.evaluate('//div[@id="breadcrumb"]/a[text() = "Books"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
+ return "book";
+ }
// Default to journal article
return "journalArticle";
}
} else {
- return true;
+ return false;
}
}
@@ -69,8 +75,9 @@ function doWeb(doc, url) {
var id = newDoc.location.href.match(/content=([\w\d]+)/);
// If URL has DOI rather than id, use navbar link to get id
if (id[1] == 10) {
- id = newDoc.evaluate('//div[@id="contenttabs"]//a[@title = "Article"]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().href;
- id = id.match(/content=([\w\d]+)/);
+ id = newDoc.evaluate('//div[@id="contenttabs"]//a[@title = "Article"]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext();
+ if (!id) id = newDoc.evaluate('//a[img[@class="downloadicon" and @title = "Download PDF"]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext();
+ id = id.href.match(/content=([\w\d]+)/);
}
var post = 'tab=citation&selecteditems=' + id[1].substr(1) + '&content=' + id[1] + '&citstyle=refworks&showabs=false&format=file';
data.postdata = post;
@@ -182,3 +189,89 @@ function doWeb(doc, url) {
Zotero.Utilities.processAsync(sets, callbacks, function () { Zotero.done(); });
Zotero.wait();
}
+
+
+/** BEGIN TEST CASES **/
+var testCases = [
+ {
+ "type": "web",
+ "url": "http://www.informaworld.com/smpp/content~db=all?content=10.1080/00221687509499713",
+ "items": [
+ {
+ "itemType": "journalArticle",
+ "creators": [
+ {
+ "lastName": "Savage",
+ "firstName": "S. B.",
+ "creatorType": "author"
+ },
+ {
+ "lastName": "Brimberg",
+ "firstName": "J.",
+ "creatorType": "author"
+ }
+ ],
+ "notes": [],
+ "tags": [],
+ "seeAlso": [],
+ "attachments": [
+ {
+ "url": "http://www.informaworld.com/smpp/ftinterface~content=a918972008~fulltext=713240930~frm=content",
+ "title": "Analysis Of Plunging Phenomena In Water Reservoirs",
+ "mimeType": "application/pdf"
+ }
+ ],
+ "publicationTitle": "Journal of Hydraulic Research",
+ "title": "Analysis Of Plunging Phenomena In Water Reservoirs",
+ "publisher": "Taylor & Francis",
+ "ISBN": "0022-1686",
+ "ISSN": "0022-1686",
+ "date": "1975",
+ "volume": "13",
+ "issue": "2",
+ "pages": "187",
+ "url": "",
+ "DOI": "10.1080/00221687509499713",
+ "libraryCatalog": "Informaworld"
+ }
+ ]
+ },
+ {
+ "type": "web",
+ "url": "http://www.informaworld.com/smpp/title~db=all~content=t777453493",
+ "items": [
+ {
+ "itemType": "book",
+ "creators": [
+ {
+ "lastName": "Wisnicki",
+ "firstName": "Adrian",
+ "creatorType": "author"
+ }
+ ],
+ "notes": [],
+ "tags": [],
+ "seeAlso": [],
+ "attachments": [
+ {
+ "url": "http://www.informaworld.com/978-0-415-95560-7",
+ "title": "Informaworld Link",
+ "snapshot": false
+ },
+ {
+ "url": null,
+ "title": "Conspiracy, Revolution, and Terrorism from Victorian Fiction to the Modern Novel",
+ "mimeType": "application/pdf"
+ }
+ ],
+ "title": "Conspiracy, Revolution, and Terrorism from Victorian Fiction to the Modern Novel",
+ "publisher": "Routledge",
+ "ISBN": "978-0-415-95560-7",
+ "ISSN": "978-0-415-95560-7",
+ "url": "",
+ "libraryCatalog": "Informaworld"
+ }
+ ]
+ }
+]
+/** END TEST CASES **/