zotero/translators/Philosopher's Imprint.js
2009-01-08 08:28:59 +00:00

88 lines
3.2 KiB
JavaScript

{
"translatorID":"b0abb562-218c-4bf6-af66-c320fdb8ddd3",
"translatorType":4,
"label":"Philosopher's Imprint",
"creator":"Michael Berkowitz",
"target":"http://quod.lib.umich.edu/cgi/t/",
"minVersion":"1.0.0b4.r5",
"maxVersion":"",
"priority":100,
"inRepository":true,
"lastUpdated":"2009-01-08 08:19:07"
}
function detectWeb(doc, url) {
if (doc.evaluate('//div/span[text() = "Search Results"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
} else if (url.match(/\d+\.\d+\.\d+/)) {
return "journalArticle";
}
}
function getID(str) {
return str.match(/\d+\.\d+\.\d+/)[0];
}
function doWeb(doc, url) {
var ids = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var titles = doc.evaluate('//div[@class="itemcitation"]//a', doc, null, XPathResult.ANY_TYPE, null);
var title;
while (title = titles.iterateNext()) {
items[title.href] = title.textContent;
}
items = Zotero.selectItems(items);
for (var i in items) {
ids.push('http://quod.lib.umich.edu/cgi/t/text/text-idx?c=phimp;view=text;rgn=main;idno=' + getID(i));
}
} else {
ids = ['http://quod.lib.umich.edu/cgi/t/text/text-idx?c=phimp;view=text;rgn=main;idno=' + getID(url)];
}
Zotero.Utilities.processDocuments(ids, function(newDoc) {
var rows = newDoc.evaluate('//tr[td[@id="labelcell"]]', newDoc, null, XPathResult.ANY_TYPE, null);
var row;
var data = new Object();
while (row = rows.iterateNext()) {
var heading = newDoc.evaluate('./td[1]', row, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
var value = newDoc.evaluate('./td[2]', row, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
data[heading.replace(/[\s:]/g, "")] = value;
}
var item = new Zotero.Item("journalArticle");
item.title = Zotero.Utilities.trimInternal(data['Title']);
if (data['Author']) {
item.creators.push(Zotero.Utilities.cleanAuthor(data['Author'], "author"));
} else if (data['Authors']) {
var authors = data['Authors'].split(",");
for each (var a in authors) {
item.creators.push(Zotero.Utilities.cleanAuthor(a, "author"));
}
}
if (data['Keywords']) {
var kws = data['Keywords'].split(/\n/);
for each (var kw in kws) {
if (kw != "") item.tags.push(kw);
}
}
var voliss = data['Source'].replace(item.title, "");
if (item.creators.length > 1) {
voliss = voliss.replace(data['Authors'], "");
} else if (item.creators.length == 1) {
voliss = voliss.replace(data['Author'], "");
}
Zotero.debug(voliss);
item.volume = voliss.match(/vol\.\s+(\d+)/)[1];
item.issue = voliss.match(/no\.\s+(\d+)/)[1];
item.pages = voliss.match(/pp\.\s+([\d\-]+)/)[1];
item.date = Zotero.Utilities.trimInternal(voliss.match(/[^,]+$/)[0]);
item.place = "Ann Arbor, MI";
item.publisher = "University of Michigan";
item.abstractNote = data['Abstract'];
item.url = data['URL'];
item.attachments = [
{url:item.url, title:item.title + " Snapshot", mimeType:"text/html"},
{url:'http://quod.lib.umich.edu/p/phimp/images/' + getID(item.url) + '.pdf', title:"Philosopher's Imprint Full Text PDF", mimeType:"application/pdf"}
];
item.complete();
}, function() {Zotero.done();});
Zotero.wait();
}