commit 44d7eadeacd2a3b9ea8e644754ce84fce2d31d50
parent 493588aac7509a2bf6814ba9f4bcff5130dca50c
Author: Matt Burton <mcburton@gmail.com>
Date: Mon, 27 Apr 2009 23:13:01 +0000
Adding Guy's Euclid.js to the repo
Diffstat:
| A | translators/Euclid.js | | | 116 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 116 insertions(+), 0 deletions(-)
diff --git a/translators/Euclid.js b/translators/Euclid.js
@@ -0,0 +1,116 @@
+{
+ "translatorID":"2e1c09a0-3006-11de-8c30-0800200c9a66",
+ "translatorType":4,
+ "label":"Project Euclid",
+ "creator":"Guy Freeman",
+ "target":"https?://[^/]*projecteuclid\\.org[^/]*/",
+ "minVersion":"1.0.0b4.r5",
+ "maxVersion":"",
+ "priority":100,
+ "inRepository":true,
+ "lastUpdated":"2008-04-18 08:55:00"
+}
+
+function detectWeb(doc, url){
+ var namespace = doc.documentElement.namespaceURI;
+ var nsResolver = namespace ? function(prefix) {
+ if (prefix == 'x') return namespace; else return null;
+ } : null;
+
+
+ var xpath = '//div[@class="abstract-text"]';
+ Zotero.debug(xpath);
+ if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
+ return "journalArticle";
+ }
+}
+
+function doWeb(doc, url){
+ var namespace = doc.documentElement.namespaceURI;
+ var nsResolver = namespace ? function(prefix) {
+ if (prefix == 'x') return namespace; else return null;
+ } : null;
+
+ var host = doc.location.host;
+ var newItem = new Zotero.Item("journalArticle");
+ newItem.url = doc.location.href;
+ Zotero.debug(doc.location.href);
+
+ var items = Object();
+ var header;
+ var contents;
+
+ var titleXPath = '//div[@id="main-text"]/h3';
+ var titleitem = doc.evaluate(titleXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
+ Zotero.debug(titleitem);
+ newItem.title = titleitem;
+
+ var authorXPath = '//div[@id="main-text"]/p[@class="bold"]';
+ var authoritem = doc.evaluate(authorXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent.replace(/^\s*|\s*$/g, '');
+ if (authoritem.search(/\sand\s/) == -1) {
+ var authoritem2 = "";
+ for (var authornamescount in authoritem.split(/\s/)) {
+ authoritem2 = authoritem2 + " " + authoritem.split(/\s/)[authornamescount][0] + authoritem.split(/\s/)[authornamescount].substring(1).toLowerCase();
+ }
+ newItem.creators.push(Zotero.Utilities.cleanAuthor(authoritem2, 'author'));
+ } else {
+ var authors = authoritem.split(/\sand\s/i);
+ for (var authorcount in authors) {
+ var author = "";
+ for (var authornames in authors[authorcount].split(/\s/)) {
+ author = author + " " + authors[authorcount].split(/\s/)[authornames][0] + authors[authorcount].split(/\s/)[authornames].substring(1).toLowerCase();
+ }
+ newItem.creators.push(Zotero.Utilities.cleanAuthor(author, 'author'));
+ }
+ }
+
+ var abstractXPath = '//div[@class="abstract-text"]/p';
+ var abstractitem = doc.evaluate(abstractXPath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext().textContent;
+ newItem.abstractNote = abstractitem;
+
+ var journalXPath = '//div[@id="secondary-content-plain"]/h2';
+ var journalitem = doc.evaluate(journalXPath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext().textContent;
+ newItem.publicationTitle = journalitem;
+
+ var journalabbXPath = '//div[@id="main-text"]/p[2]/a';
+ var journalabbitem = doc.evaluate(journalXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
+ newItem.journalAbbr = journalabbitem;
+
+ var volumeetcXPath = '//div[@id="main-text"]/p[2]/text()';
+ //var volumeetcitem = doc.evaluate(volumeetcXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().childNodes[2].textContent;
+ var volumeetcitem = doc.evaluate(volumeetcXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
+ Zotero.debug("volumeetcitem="+volumeetcitem);
+ var volumeetcitemarray = volumeetcitem.replace(/\s+/g," ").split(/\s/);
+ if (volumeetcitemarray[3].search(/Number/) == -1) {
+ var volumeitem = volumeetcitemarray[2].match(/\d+/);
+ var yearitem = volumeetcitemarray[3].match(/\d+/);
+ var pagesitem = volumeetcitemarray[4].match(/[^\.]+/);
+ newItem.volume = volumeitem;
+ newItem.pages = pagesitem;
+ newItem.date = yearitem;
+ } else {
+ var volumeitem = volumeetcitemarray[2].match(/\d+/);
+ var issueitem = volumeetcitemarray[4].match(/\d+/);
+ var yearitem = volumeetcitemarray[5].match(/\d+/);
+ var pagesitem = volumeetcitemarray[6].match(/[^\.]+/);
+ newItem.volume = volumeitem;
+ newItem.pages = pagesitem;
+ newItem.issue = issueitem;
+ newItem.date = yearitem;
+ }
+
+ var doixpath = '//div[@id="identifier"]/p';
+ try {
+ var doi = doc.evaluate(doixpath,doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().childNodes[2].textContent.match(/\d.*/);
+ newItem.DOI = doi;
+ } catch (e) {
+ // no doi, do nothing
+ }
+ var pdfurlxpath = '//div[@id="download-section"]/div/a';
+ if (doc.evaluate(pdfurlxpath,doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().textContent.search(/pdf/i) != -1) {
+ var pdfurl = doc.evaluate(pdfurlxpath,doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().href;
+ newItem.attachments.push({url:pdfurl, title:"Euclid Project PDF", mimeType:"application/pdf"});
+ }
+
+ newItem.complete();
+}