zotero/translators/PEP Web.js

116 lines
3.3 KiB
JavaScript

{
"translatorID":"32ad4782-b106-4ccb-8ae1-ff102ba93eef",
"translatorType":4,
"label":"PEP Web",
"creator":"Akilesh Ayyar",
"target":"^https?://www\\.pep-web\\.org",
"minVersion":"1.0.0b3.r1",
"maxVersion":"",
"priority":100,
"inRepository":false,
"lastUpdated":"2011-02-15 04:50:00"
}
//Only works for journal articles, and only for single entries.
//Author names sometimes omit periods after the first initials.
function detectWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
if (url.match(/document/))
return "journalArticle";
}
function scrape(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var newItem = new Zotero.Item("journalArticle");
newItem.url = doc.location.href;
var xPathString = "//span[@id='maincite']";
var xPathString2 = '//p[@class="title"]/a';
var myXPathObject = doc.evaluate(xPathString, doc, nsResolver, XPathResult.ANY_TYPE, null);
var myXPathObject2 = doc.evaluate(xPathString2, doc, nsResolver, XPathResult.ANY_TYPE, null);
var citeString = myXPathObject.iterateNext().textContent;
var titleString = myXPathObject2.iterateNext().textContent;
//authors
var authors = citeString.match(/(^.*)\(/)[1].toString();
if (authors == ' ') {
authors = "Unknown";
}
var currentauthor;
//grab all but last author, if there are more than one
while (authors.match(/^(.*?)(\,)(\s)([A-Z]\.)*\,\s/)) {
currentauthor = authors.match(/^(.*?)(\,)(\s)([A-Z]\.)*/)[0].toString();
newItem.creators.push(Zotero.Utilities.cleanAuthor(currentauthor, "author", true));
authors = authors.replace(/^(.*?)(\,)(\s)([A-Z]\.)*\,\s/, '');
}
//grab remaining author, or sole author if there's only one
if (authors != null) {
currentauthor = authors;
newItem.creators.push(Zotero.Utilities.cleanAuthor(currentauthor, "author", true));
}
//title
newItem.title = titleString;
//year
var year = citeString.match(/\([0-9][0-9][0-9][0-9]\)/).toString();
year = year.replace(/\(/, '');
year = year.replace(/\)/, '');
newItem.date = year;
//publication name
var pubname = citeString.match(/(\)\.\s)(.*)(\,)/)[0].toString();
var pubminus = citeString.match(/(\)\.\s)(.*?)(\.)/)[0].toString();
pubname = pubname.replace(pubminus, '');
pubname = pubname.replace(/\,/, '');
pubname = pubname.replace(/\.*/, '');
pubname = pubname.replace(/^\s*/, '');
pubname = pubname.replace(/\s*$/, '')
newItem.publicationTitle = pubname;
//volume
var volumeandpages = citeString.match(/[0-9]*\:([0-9]*(\-?)[0-9]*)\.$/)[0].toString();
var volume = volumeandpages.match(/[0-9]*\:/)[0].toString();
volume = volume.replace(":", '');
newItem.volume = volume;
//pages
var pages = volumeandpages.match(/\:([0-9]*)(\-?)([0-9]*)/)[0].toString();
pages = pages.replace(":", '');
pages = pages.replace(".", '');
newItem.pages = pages;
newItem.attachments.push({url:doc.location.href, title:"PEP Web Snapshot", mimeType:"text/html"});
newItem.complete();
}
function doWeb(doc, url) {
var articles = new Array();
articles = [url];
Zotero.Utilities.processDocuments(articles, scrape, function(){Zotero.done();});
Zotero.wait();
}