Permalink
Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign up
translators/Theory of Computing.js
Find file
Copy path
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 **/ |