{ "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 . */ /* 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 **/