Permalink
Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
Cannot retrieve contributors at this time
{ | |
"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 **/ |