{ "translatorID":"2e1c09a0-3006-11de-8c30-0800200c9a66", "label":"Project Euclid", "creator":"Guy Freeman and Avram Lyon", "target":"^https?://[^/]*projecteuclid\\.org[^/]*/", "minVersion":"1.0", "maxVersion":"", "priority":100, "inRepository":"1", "translatorType":4, "lastUpdated":"2010-11-10 10:15: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[@class="abs-page-text-bold"]/span'; 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="main-image"]/img'; var journalitem = doc.evaluate(journalXPath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()["alt"]; newItem.publicationTitle = journalitem; var journalabbXPath = '//div[@class="abs-page-text"]/a'; var journalabbitem = doc.evaluate(journalabbXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; newItem.journalAbbreviation = journalabbitem; var idXPath = '//div[@id="identifier"]/p'; var idresult = doc.evaluate(idXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().innerHTML; var idrows = idresult.split('<br>'); var idrow, pieces; var identifiers = []; newItem.extra=""; for each (idrow in idrows) { pieces = idrow.match(/\s*([^:]+)\s*:\s*(.+)/); if (pieces && pieces[1] && pieces[2]) { switch (pieces[1]) { case "Digital Object Identifier": newItem.DOI = pieces[2].match(/^\s*doi:(.*)/)[1]; break; case "Mathematical Reviews number (MathSciNet)": case "Zentralblatt MATH identifier": identifiers.push(pieces[1] + ": " + pieces[2].match(/>(.*?)</)[1]); break; case "Permanent link to this document": newItem.url = pieces[2]; break; default: Zotero.debug("Discarding identifier: " + pieces[1] + ": " + pieces[2] ); break; } pieces = null; } newItem.extra = identifiers.join("; "); } var volumeetcXPath = '//div[@class="abs-page-text"]/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+/)[0]; var yearitem = volumeetcitemarray[3].match(/\d+/)[0]; var pagesitem = volumeetcitemarray[4].match(/[^\.]+/)[0]; newItem.volume = volumeitem; newItem.pages = pagesitem; newItem.date = yearitem; } else { var volumeitem = volumeetcitemarray[2].match(/\d+/)[0]; var issueitem = volumeetcitemarray[4].match(/\d+/)[0]; var yearitem = volumeetcitemarray[5].match(/\d+/)[0]; var pagesitem = volumeetcitemarray[6].match(/[^\.]+/)[0]; newItem.volume = volumeitem; newItem.pages = pagesitem; newItem.issue = issueitem; newItem.date = yearitem; } // From META tags newItem.publisher = doc.evaluate('//meta[@name="citation_publisher"]',doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().content; newItem.date = doc.evaluate('//meta[@name="citation_date"]',doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().content; newItem.ISSN = doc.evaluate('//meta[@name="citation_issn"]',doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().content; newItem.language = doc.evaluate('//meta[@name="citation_language"]',doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().content; var pdfurlxpath = '//meta[@name="citation_pdf_url"]'; if (doc.evaluate(pdfurlxpath,doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) { var pdfurl = doc.evaluate(pdfurlxpath,doc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext().content; newItem.attachments.push({url:pdfurl, title:"Euclid Project PDF", mimeType:"application/pdf"}); } newItem.complete(); }