489 lines
12 KiB
JavaScript
489 lines
12 KiB
JavaScript
|
{
|
|||
|
"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": "2019-06-10 22:52:50"
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
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) {
|
|||
|
let keywords = ZU.trimInternal(/Keywords:\s+(.*)/.exec(keywordLine)[1]);
|
|||
|
let keywordList = keywords.split(/,\s+/);
|
|||
|
newItem.tags = keywordList;
|
|||
|
}
|
|||
|
|
|||
|
// Author
|
|||
|
if (authorLine) {
|
|||
|
authorLine = ZU.trimInternal(authorLine);
|
|||
|
let authors = /[^0-9]+[0-9]+\s+(.*)/.exec(authorLine)[1];
|
|||
|
authors = authors.replace(/,?\s+and\s+/, ", ");
|
|||
|
let authorList = authors.split(/\s*,\s+/);
|
|||
|
for (let author in authorList) {
|
|||
|
newItem.creators.push(ZU.cleanAuthor(authorList[author], "author"));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Article number etc.
|
|||
|
if (topLine) {
|
|||
|
topLine = ZU.trimInternal(topLine);
|
|||
|
if (type == "book") {
|
|||
|
let number = /Graduate Surveys\s+([0-9]+)/.exec(topLine)[1];
|
|||
|
newItem.seriesNumber = number;
|
|||
|
}
|
|||
|
else if (type == "journalArticle") {
|
|||
|
let 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 **/
|