Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
495 lines (448 sloc) 12.5 KB
{
"translatorID": "558babe7-5fca-47ea-af0f-2d9bb5bc5e53",
"label": "Theory of Computing",
"creator": "Piyush Srivastava",
"target": "^https?://(theoryofcomputing\\.org|toc\\.cse\\.iitk\\.ac\\.in|www\\.cims\\.nyu\\.edu/~regev/toc|toc\\.ilab\\.sztaki\\.hu|toc\\.nada\\.kth\\.se|tocmirror\\.cs\\.tau\\.ac\\.il)/articles/[vg].*(/|html?)$",
"minVersion": "1.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcv",
"lastUpdated": "2017-07-03 10:55:03"
}
/*****
Copyright 2013, Piyush Srivastava.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*****/
/*****
Theory of Computing translator
*****************************
The Theory of Computing journal has mirror sites located at the following
domains:
1) theoryofcomputing.org
2) toc.cse.iitk.ac.in
3) toc.nada.kth.se
4) toc.ilab.sztaki.hu
5) tocmirror.cs.tau.ac.il
6) www.cims.nyu.edu/~regev/toc/
It has two kinds of articles, "Graduate Surveys", which their provided BibTeX
classes regard as "books" and regular "Journal Articles". The structure of the
URL for the graduate survey looks like
DOMAIN/articles/gs[0-9]{3}/
while that of the articles looks like
DOMAIN/articles/v[0-9]{3}a{0-9]{3}/.
These formats are used by detectWeb to find out whether we are looking at a
graduate survey ("Book") or a journal article.
The theory of computing journal provides the PDF file for a given article (say
gs001) at the url DOMAIN/article/gs001/gs001.pdf.
******/
//A Regexp for extracting the Domain
var surveyRegexp = new RegExp("articles/(gs[^/]+)");
var journalRegexp = new RegExp("articles/(v[^/]+)");
function detectWeb(doc, url){
if (surveyRegexp.test(url))
return "book";
else
return "journalArticle";
}
function doWeb(doc, url){
var typeRegExp;
var type = detectWeb(doc, url);
//Select the right regexp according to the article type
if (type == "journalArticle")
typeRegExp = journalRegexp;
else
typeRegExp = surveyRegexp;
var urlData = typeRegExp.exec(url);
//urlData is an Array of three elements, with the element at index 1 containg the
//base domain of the mirror being accesses, and the element at index 2
//containing the article ID.
var articleID = urlData[1];
//We now start constructing the Zoetro item
var newItem = new Zotero.Item(type);
//Store the snapshot and the PDF file
newItem.attachments.push({
title: "Theory of Computing Snapshot",
document: doc});
var pdfLink = articleID + ".pdf";
newItem.attachments.push({
title: "Theory of computing Full Text PDF",
mimeType: "application/pdf",
url:pdfLink});
//Get the article topLine
var topLine = ZU.xpathText(doc, '//div[@id="articletopline"]');
//Get the article publication date lines
var pubDateLines = ZU.xpathText(doc, '//div[@id="articledates"]');
//Get the article copyright line (to determine authors)
//This seems the most consistent way of determining the authors for this
//journal.
var authorLine = ZU.xpathText(doc, '//div[@id="copyright"]/a[1]');
var keywordLine = ZU.xpathText(doc, '(//div[@class="hang"])[3]');
var DOI = ZU.xpathText(doc, '//div[@id="doi"]');
//Now start filling up data
//Title
var title = ZU.xpathText(doc, '//div[@id="articletitle"]');
if (!title)
title = ZU.xpathText(doc, '//div[@id="title"]');
newItem.title = title;
//DOI and URL
newItem.DOI = ZU.cleanDOI(DOI);
newItem.url = url;
//Publcication date line
if (pubDateLines){
var pubDateRegexp = /Published:\s+(\w+\s+[0-9]+(?:,|\s)+[0-9]+)/gm;
newItem.date = pubDateRegexp.exec(pubDateLines)[1];
//This also contain page information for surveys
if (type == "book"){
var pageNum = /([0-9]+)\s+pages/.exec(pubDateLines)[1];
newItem.numPages = pageNum;
}
}
//Keywords
if (keywordLine){
keywords = ZU.trimInternal(/Keywords:\s+(.*)/.exec(keywordLine)[1]);
keywordList = keywords.split(/,\s+/);
newItem.tags = keywordList;
}
//Author
if (authorLine){
authorLine = ZU.trimInternal(authorLine);
authors = /[^0-9]+[0-9]+\s+(.*)/.exec(authorLine)[1];
authors = authors.replace(/,?\s+and\s+/, ", ");
authorList = authors.split(/\s*,\s+/);
for (author in authorList){
newItem.creators.push(ZU.cleanAuthor(authorList[author], "author"));
}
}
//Article number etc.
if (topLine){
topLine = ZU.trimInternal(topLine);
if (type == "book"){
number = /Graduate Surveys\s+([0-9]+)/.exec(topLine)[1];
newItem.seriesNumber = number;
} else if (type == "journalArticle"){
volumeData = /Volume\s+([0-9]+).*Article\s+([0-9]+)\s+pp\.\s+([0-9]+)-([0-9]+)/.exec(topLine);
newItem.volume = volumeData[1];
newItem.number = volumeData[2];
newItem.pages = volumeData[3] + "" + volumeData[4];
}
}
//Format specific data
if (type == "book"){
newItem.series = "Graduate Surveys";
newItem.publisher = "Theory of Computing Library";
}
if (type == "journalArticle"){
newItem.publicationTitle = "Theory of Computing";
newItem.publisher = "Theory of Computing";
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://theoryofcomputing.org/articles/gs004/",
"items": [
{
"itemType": "book",
"title": "Variations on the Sensitivity Conjecture",
"creators": [
{
"firstName": "Pooya",
"lastName": "Hatami",
"creatorType": "author"
},
{
"firstName": "Raghav",
"lastName": "Kulkarni",
"creatorType": "author"
},
{
"firstName": "Denis",
"lastName": "Pankratov",
"creatorType": "author"
}
],
"date": "June 22, 2011",
"DOI": "10.4086/toc.gs.2011.004",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "27",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "4",
"url": "http://theoryofcomputing.org/articles/gs004/",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"block sensitivity",
"complexity measures of Boolean functions",
"sensitivity"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.nada.kth.se/articles/v009a013/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Optimal Hitting Sets for Combinatorial Shapes",
"creators": [
{
"firstName": "Aditya",
"lastName": "Bhaskara",
"creatorType": "author"
},
{
"firstName": "Devendra",
"lastName": "Desai",
"creatorType": "author"
},
{
"firstName": "Srikanth",
"lastName": "Srinivasan",
"creatorType": "author"
}
],
"date": "May 25, 2013",
"DOI": "10.4086/toc.2013.v009a013",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"number": "13",
"pages": "441–470",
"publicationTitle": "Theory of Computing",
"publisher": "Theory of Computing",
"url": "http://toc.nada.kth.se/articles/v009a013/index.html",
"volume": "9",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"derandomization",
"expanders",
"explicit construction",
"hitting sets",
"perfect hashing"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://tocmirror.cs.tau.ac.il/articles/gs003/index.html",
"items": [
{
"itemType": "book",
"title": "Selected Results in Additive Combinatorics: An Exposition",
"creators": [
{
"firstName": "Emanuele",
"lastName": "Viola",
"creatorType": "author"
}
],
"date": "May 15, 2011",
"DOI": "10.4086/toc.gs.2011.003",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "15",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "3",
"shortTitle": "Selected Results in Additive Combinatorics",
"url": "http://tocmirror.cs.tau.ac.il/articles/gs003/index.html",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"additive combinatorics",
"linearity testing"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.ilab.sztaki.hu/articles/v005a002/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Deterministic History-Independent Strategies for Storing Information on Write-Once Memories",
"creators": [
{
"firstName": "Tal",
"lastName": "Moran",
"creatorType": "author"
},
{
"firstName": "Moni",
"lastName": "Naor",
"creatorType": "author"
},
{
"firstName": "Gil",
"lastName": "Segev",
"creatorType": "author"
}
],
"date": "May 23, 2009",
"DOI": "10.4086/toc.2009.v005a002",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"number": "2",
"pages": "43–67",
"publicationTitle": "Theory of Computing",
"publisher": "Theory of Computing",
"url": "http://toc.ilab.sztaki.hu/articles/v005a002/index.html",
"volume": "5",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"conflict resolution",
"expander graphs",
"history-independent",
"information-theoretic security",
"tamper-evident",
"vote storage mechanism",
"write-once memory"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.nada.kth.se/articles/v009a009/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Quantum Money from Hidden Subspaces",
"creators": [
{
"firstName": "Scott",
"lastName": "Aaronson",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Christiano",
"creatorType": "author"
}
],
"date": "March 11, 2013",
"DOI": "10.4086/toc.2013.v009a009",
"libraryCatalog": "Theory of Computing",
"pages": "349–401",
"publicationTitle": "Theory of Computing",
"url": "http://toc.nada.kth.se/articles/v009a009/index.html",
"volume": "9",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"electronic cash",
"multivariate polynomials",
"quantum cryptography",
"quantum lower bounds"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.cims.nyu.edu/~regev/toc/articles/gs003/",
"items": [
{
"itemType": "book",
"title": "Selected Results in Additive Combinatorics: An Exposition",
"creators": [
{
"firstName": "Emanuele",
"lastName": "Viola",
"creatorType": "author"
}
],
"date": "May 15, 2011",
"DOI": "10.4086/toc.gs.2011.003",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "15",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "3",
"shortTitle": "Selected Results in Additive Combinatorics",
"url": "http://www.cims.nyu.edu/~regev/toc/articles/gs003/",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"additive combinatorics",
"linearity testing"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
You can’t perform that action at this time.