[^\[]*\\[([^\\]]*)\]', 'i');
- var m = tagRe.exec(text);
- if(m[1] != "unclassified"){
- var tagstring = m[1].replace("&", "&", "g");
- var tags = tagstring.split(";")
- for(var j in tags) {
- newItem.tags.push(Zotero.Utilities.trimInternal(tags[j]));
- }
- }
- var authorRe = new RegExp('>'+title+',([^,]*),', "i");
- var m = authorRe.exec(text);
- var author = m[1];
- author = Zotero.Utilities.trimInternal(author);
- // reconcile author
- author = reconcileAuthor(author);
- if (author!="NA"){ // ignore unknown authors
- newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author", true));
- }
- newItem.creators.push({firstName:"Denis", lastName:"Diderot", creatorType:"editor"});
- newItem.creators.push({firstName:"Jean le Rond", lastName:"d'Alembert", creatorType:"editor"});
- newItem.complete();
- }, function() {Zotero.done();}, null);
- Zotero.wait();
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- if (url.indexOf("getobject.pl") != -1){
- // single article
- scrape(doc);
- } else {
- //search page
- var items = new Object();
- var xpath = '/html/body/div[@class="text"]/p/a';
- var elmts = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
- var elmt;
- while (elmt = elmts.iterateNext()){
- var title = elmt.textContent;
- var link = elmt.href;
- if (title && link){
- items[link] = title;
- }
- }
- var items = Zotero.selectItems(items);
- if(!items) {
- return true;
- }
- var urls = new Array();
- for(var i in items) {
- urls.push(i);
- }
- Zotero.Utilities.processDocuments(urls, scrape, function() { Zotero.done(); });
- Zotero.wait();
- }
-
-}
\ No newline at end of file
diff --git a/translators/ARTstor.js b/translators/ARTstor.js
deleted file mode 100644
index 0af9de96c0..0000000000
--- a/translators/ARTstor.js
+++ /dev/null
@@ -1,274 +0,0 @@
-{
- "translatorID":"5278b20c-7c2c-4599-a785-12198ea648bf",
- "translatorType":4,
- "label":"ARTstor",
- "creator":"Ameer Ahmed and Michael Berkowitz",
- "target":"http://[^/]artstor.org[^/]*",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2009-11-13 07:10:00"
-}
-
-function detectWeb(doc, url) {
- if (url.match(/(S|s)earch/) && (doc.evaluate('//div[@id="thumbContentWrap"]/div', doc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/\w+/))) return "multiple"
-}
-
-function doWeb(doc, url) {
- if (url.indexOf("|")!=-1){
- scrape(doc, url);
- }
-}
-
-// TODO: Remove this when we drop support for Fx3
-if (!JSON) {
- var JSON = new function() {
- this.parse = function (arg) {
- var j;
- if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(arg.
- replace(/\\./g, '@').
- replace(/"[^"\\\n\r]*"/g, ''))) {
- // Friendly AMO reviewer: This is the official json.org library and is safe.
- j = eval('(' + arg + ')');
- return j;
- }
- throw new SyntaxError('parseJSON');
- }
- }
-}
-
-function scrape(doc, url){
- var savedItems = new Array();
- var saved = 0;
- var urlstub = url.substring(url.indexOf('.org/')+5,url.length);
- urlstub = url.substring(0,url.indexOf('.org/')+5) + urlstub.substring(0, urlstub.indexOf('/')+1)
- var suburl = url.substring(url.indexOf('|')+1, url.length);
- var groupname = suburl.substring(0, suburl.indexOf("|"));
- var searchterm = '//*[@id="thumbSubTitle"]';
- var stt = doc.evaluate(searchterm, doc, null, XPathResult.ANY_TYPE, null).iterateNext();
- var st = stt.firstChild.nodeValue;
- var pageNn = '//*[@id="pageNo"]';
- var stt = doc.evaluate(pageNn, doc, null, XPathResult.ANY_TYPE, null).iterateNext();
- var pg;
- if (stt.value==1){
- pg = 1;
- } else if (stt.value==2){
- pg = 25;
- } else {
- pg = ((stt.value-1) * 24) + 1;
- }
- var groupid;
- //check if user is on search page if not construct the query using the 2nd pattern
- if (groupname.indexOf("search")!=-1){
- groupid = "1/" + pg + "/24/0?tn=1&name=&id=all&kw=" +st + "&type=1";
- }else {
- groupid = suburl.substring(suburl.indexOf('|')+1, suburl.indexOf('||')) + "//thumbnails/" + pg + "/24/0";
- }
- // Initial query to get results from the service - primary purpose is to get objectids. which in turn are required for the 2nd service call, which exposes the actual metadata
- Zotero.Utilities.HTTP.doGet(urlstub + "secure/" + groupname + "//" + groupid, function(text) {
- var json = JSON.parse(text);
- items = new Object();
- for(var i=0; i1) {
- dialogTitle+=" " + childtitle;
- }
- var sitem = child.id.substring(6,child.id.indexOf("_"));
- webitems[sitem-1] = dialogTitle;
- if (glow.indexOf(75)!=-1){
- selectedNums[si]=sitem-1;
- si++;
- }
- title = null;
- }
- }
- // GET VALUES FROM THE WEB
- var tcount=0;
- var newitems = null;
- if (selectedNums.length>0){
- newitems = new Object();
- for (j=0; j/g, "");
- } else {
- newArticle.rights = child.fieldValue.replace(//g, "");
- }
- }
- if (child.fieldName.indexOf("Subject")!=-1){
- newArticle.tags.push(Zotero.Utilities.trimInternal(child.fieldValue));
- }
- if (child.fieldName.indexOf("Location")!=-1){
- newArticle.tags.push(Zotero.Utilities.trimInternal(child.fieldValue));
- }
- if (child.fieldName.indexOf("Style Period")!=-1){
- newArticle.tags.push(Zotero.Utilities.trimInternal(child.fieldValue));
- }
- if (child.fieldName.indexOf("Work Type")!=-1){
- newArticle.tags.push(Zotero.Utilities.trimInternal(child.fieldValue));
- }
- if (child.fieldName.indexOf("Material")!=-1 || child.fieldName.indexOf("Technique")!=-1 ){
- if (newArticle.artworkMedium!=null){
- newArticle.artworkMedium+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.artworkMedium = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- if (child.fieldName.indexOf("Measurements")!=-1){
- if (newArticle.artworkSize!=null){
- newArticle.artworkSize+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.artworkSize = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- if (child.fieldName.indexOf("Date")!=-1){
- if (newArticle.date!=null){
- newArticle.date+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- //bug here!! when date parser fails, entire object is not saved in Zotero - works in Scaffold, fails in Zotero! to patch remove all occurrences of B.C
- newArticle.date = Zotero.Utilities.trimInternal(child.fieldValue.replace(/B.C./i, ""));
- }
- }
- if (child.fieldName.indexOf("Repository")!=-1){
- if (newArticle.repository!=null){
- newArticle.repository+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.repository = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- if (child.fieldName.indexOf("Source")!=-1){
- if (newArticle.archiveLocation!=null){
- newArticle.archiveLocation+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.archiveLocation = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- if (child.fieldName.indexOf("Description")!=-1){
- if (newArticle.abstractNote!=null){
- newArticle.abstractNote+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.abstractNote = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- if (child.fieldName.indexOf("Collection")!=-1){
- if (newArticle.extra!=null){
- newArticle.extra+= ";" + Zotero.Utilities.trimInternal(child.fieldValue);
- } else {
- newArticle.extra = Zotero.Utilities.trimInternal(child.fieldValue);
- }
- }
- }
- var objectId = json.objectId;
- //this is called to get the url stub for the ARTstor viewer
- Zotero.Utilities.HTTP.doGet(urlstub + "secure/metadata/" + objectId + "?_method=FpHtml", function(dom) {
- var testurl = dom.substring(dom.lastIndexOf('
')+21,dom.lastIndexOf('
'));
- var t2 = "http://www.artstor.org";
- var tmp2 = testurl.replace(//g, "");
- tmp2 = tmp2.substring(0, tmp2.indexOf("&userId"));
- //build ARTstorImageURL
- artstorimgurl = t2+tmp2;
- newArticle.url = artstorimgurl;
- newArticle.callNumber = objectId;
- newArticle.complete();
- Zotero.done();
- });
- Zotero.wait();
- });
- Zotero.wait();
-});
-Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/ASCE.js b/translators/ASCE.js
deleted file mode 100644
index 16e9f657f3..0000000000
--- a/translators/ASCE.js
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "translatorID":"303bdfc5-11b8-4107-bca1-63ca97701a0f",
- "translatorType":4,
- "label":"ASCE",
- "creator":"Michael Berkowitz",
- "target":"^http://ascelibrary.aip.org/.+",
- "minVersion":"1.0.0b3.r1",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2007-09-06 19:30:00"
-}
-
-function detectWeb(doc, url) {
- if (doc.evaluate('//div[@id="sr-content-wrap"]//div[@class="sr-right"]/p[@class="sr-art-title"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- } else {
- return "journalArticle";
- }
-}
-
-function getRIS(doc, url) {
- var newx = '//div[@id="sci-art-options-box"]//input[@name="SelectCheck"]';
- var key = doc.evaluate(newx, doc, null, XPathResult.ANY_TYPE, null).iterateNext().value;
- Zotero.debug(key);
- var citation = 'http://ascelibrary.aip.org/getabs/servlet/GetCitation?source=scitation&PrefType=ARTICLE&PrefAction=Add+Selected&SelectCheck=' + key + '&fn=open_refworks&downloadcitation=+Go+';
- Zotero.Utilities.HTTP.doGet(citation, function(text) {
- var translator = Zotero.loadTranslator("import");
- text = text.replace(/RT/, "TY");
- text = text.replace(/VO/, "VL");
- text = text.replace(/LK/, "UR");
- text = text.replace(/YR/, "PY");
- Zotero.debug(text);
- translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
- translator.setString(text.replace(/([A-Z][A-Z\d]\s)/g, "$1 - "));
- translator.setHandler("itemDone", function(obj, item) {
- item.attachments = [
- {url:item.url, title:"ASCE Snapshot", mimeType:"text/html"},
- {url:"http://ascelibrary.aip.org/getpdf/servlet/GetPDFServlet?filetype=pdf&id=" + key + "&idtype=cvips&prog=search", title:"EAS Full Text PDF", mimeType:"application/pdf"}
- ];
- //item.itemType = "journalArticle";
- item.complete();
- });
- translator.translate();
- Zotero.wait();
- Zotero.done();
- });
-}
-
-function doWeb(doc, url) {
- var articles = new Array();
- var items = new Object();
- var xpath = '//div[@class="sr-right"]/p[@class="sr-art-title"]/a';
- if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- var titles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
- while (new_title = titles.iterateNext()) {
- items[new_title.href] = new_title.textContent;
- }
-
- items = Zotero.selectItems(items);
-
- for (var i in items) {
- articles.push(i)
- }
- } else {
- var newx = '//div[@id="sci-art-options-box"]//input[@name="SelectCheck"]';
- var stuff = doc.evaluate(newx, doc, null, XPathResult.ANY_TYPE, null).iterateNext().value;
- Zotero.debug(stuff);
- articles.push(url);
- }
-
- Zotero.debug(articles);
- Zotero.Utilities.processDocuments(articles, getRIS, function() {Zotero.done});
- Zotero.wait();
-
-}
diff --git a/translators/Ab Imperio.js b/translators/Ab Imperio.js
deleted file mode 100644
index 05d4aebbc7..0000000000
--- a/translators/Ab Imperio.js
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "translatorID": "f3e31f93-c18d-4ba3-9aa6-1963702b5762",
- "label": "Ab Imperio",
- "creator": "Avram Lyon",
- "target": "^https?://(?:www\\.)?abimperio\\.net/",
- "minVersion": "2.0",
- "maxVersion": "",
- "priority": 100,
- "inRepository": true,
- "translatorType": 4,
- "lastUpdated": "2011-05-24 00:28:49"
-}
-
-/* FW LINE 46:127318f30c1d */ function flatten(c){var b=new Array();for(var d in c){var e=c[d];if(e instanceof Array){b=b.concat(flatten(e))}else{b.push(e)}}return b}var FW={_scrapers:new Array()};FW._Base=function(){this.callHook=function(b,c,e,a){if(typeof this["hooks"]==="object"){var d=this["hooks"][b];if(typeof d==="function"){d(c,e,a)}}};this.evaluateThing=function(f,e,c){var b=typeof f;if(b==="string"){return f}else{if(b==="object"){if(f instanceof Array){var d=this.evaluateThing;var a=f.map(function(g){return d(g,e,c)});return flatten(a)}else{return f.evaluate(e,c)}}else{if(b==="function"){return f(e,c)}else{return undefined}}}}};FW.Scraper=function(a){FW._scrapers.push(new FW._Scraper(a))};FW._Scraper=function(a){for(x in a){this[x]=a[x]}this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"];this._makeAttachments=function(q,b,f,s){if(f instanceof Array){f.forEach(function(k){this._makeAttachments(q,b,k,s)},this)}else{if(typeof f==="object"){var p=f.urls||f.url;var m=f.types||f.type;var e=f.titles||f.title;var h=this.evaluateThing(p,q,b);var o=this.evaluateThing(e,q,b);var r=this.evaluateThing(m,q,b);var l=(r instanceof Array);var n=(o instanceof Array);if(!(h instanceof Array)){h=[h]}for(var j in h){var c=h[j];var g;var d;if(l){g=r[j]}else{g=r}if(n){d=o[j]}else{d=o}s.attachments.push({url:c,title:d,type:g})}}}};this.makeItems=function(o,b,m,c,l){var q=new Zotero.Item(this.itemType);q.url=b;for(var h in this._singleFieldNames){var n=this._singleFieldNames[h];if(this[n]){var g=this.evaluateThing(this[n],o,b);if(g instanceof Array){q[n]=g[0]}else{q[n]=g}}}var r=["creators","tags"];for(var f in r){var p=r[f];var d=this.evaluateThing(this[p],o,b);if(d){for(var e in d){q[p].push(d[e])}}}this._makeAttachments(o,b,this["attachments"],q);c(q,this,o,b);l([q])}};FW._Scraper.prototype=new FW._Base;FW.MultiScraper=function(a){FW._scrapers.push(new FW._MultiScraper(a))};FW._MultiScraper=function(a){for(x in a){this[x]=a[x]}this._mkSelectItems=function(e,d){var b=new Object;for(var c in e){b[d[c]]=e[c]}return b};this._selectItems=function(d,c,e){var b=new Array();Zotero.selectItems(this._mkSelectItems(d,c),function(f){for(var g in f){b.push(g)}e(b)})};this._mkAttachments=function(g,d,f){var b=this.evaluateThing(this["attachments"],g,d);var c=new Object();if(b){for(var e in f){c[f[e]]=b[e]}}return c};this._makeChoices=function(f,p,c,d,h){if(f instanceof Array){f.forEach(function(k){this._makeTitlesUrls(k,p,c,d,h)},this)}else{if(typeof f==="object"){var m=f.urls||f.url;var e=f.titles||f.title;var n=this.evaluateThing(m,p,c);var j=this.evaluateThing(e,p,c);var l=(j instanceof Array);if(!(n instanceof Array)){n=[n]}for(var g in n){var b=n[g];var o;if(l){o=j[g]}else{o=j}h.push(b);d.push(o)}}}};this.makeItems=function(j,b,g,c,f){Zotero.debug("Entering MultiScraper.makeItems");if(this.beforeFilter){var k=this.beforeFilter(j,b);if(k!=b){this.makeItems(j,k,g,c,f);return}}var e=[];var h=[];this._makeChoices(this["choices"],j,b,e,h);var d=this._mkAttachments(j,b,h);this._selectItems(e,h,function(m){if(!m){f([])}else{var l=[];var n=this.itemTrans;Zotero.Utilities.processDocuments(m,function(q){var p=q.documentURI;var o=n;if(o===undefined){o=FW.getScraper(q,p)}if(o===undefined){}else{o.makeItems(q,p,d[p],function(r){l.push(r);c(r,o,q,p)},function(){})}},function(){f(l)})}})}};FW._MultiScraper.prototype=new FW._Base;FW.DelegateTranslator=function(a){return new FW._DelegateTranslator(a)};FW._DelegateTranslator=function(a){for(x in a){this[x]=a[x]}this._translator=Zotero.loadTranslator(this.translatorType);this._translator.setTranslator(this.translatorId);this.makeItems=function(g,d,b,f,c){Zotero.debug("Entering DelegateTranslator.makeItems");var e;Zotero.Utilities.HTTP.doGet(d,function(h){this._translator.setHandler("itemDone",function(k,j){e=j;if(b){j.attachments=b}});this._translator.setString(h);this._translator.translate();f(e)},function(){c([e])})}};FW.DelegateTranslator.prototype=new FW._Scraper;FW._StringMagic=function(){this._filters=new Array();this.addFilter=function(a){this._filters.push(a);return this};this.split=function(a){return this.addFilter(function(b){return b.split(a).filter(function(c){return(c!="")})})};this.replace=function(c,b,a){return this.addFilter(function(d){if(d.match(c)){return d.replace(c,b,a)}else{return d}})};this.prepend=function(a){return this.replace(/^/,a)};this.append=function(a){return this.replace(/$/,a)};this.remove=function(b,a){return this.replace(b,"",a)};this.trim=function(){return this.addFilter(function(a){return Zotero.Utilities.trim(a)})};this.trimInternal=function(){return this.addFilter(function(a){return Zotero.Utilities.trimInternal(a)})};this.match=function(a,b){if(!b){b=0}return this.addFilter(function(d){var c=d.match(a);if(c===undefined||c===null){return undefined}else{return c[b]}})};this.cleanAuthor=function(b,a){return this.addFilter(function(c){return Zotero.Utilities.cleanAuthor(c,b,a)})};this.key=function(a){return this.addFilter(function(b){return b[a]})};this.capitalizeTitle=function(){return this.addFilter(function(a){return Zotero.Utilities.capitalizeTitle(a)})};this.unescapeHTML=function(){return this.addFilter(function(a){return Zotero.Utilities.unescapeHTML(a)})};this.unescape=function(){return this.addFilter(function(a){return unescape(a)})};this._applyFilters=function(c,e){for(i in this._filters){c=flatten(c);c=c.filter(function(a){return((a!==undefined)&&(a!==null))});for(var d=0;d0&&a[0]){return f}}}return undefined};FW.getScraper=function(b,a){var c=FW.detectWeb(b,a);return FW._scrapers.filter(function(d){return(d.evaluateThing(d.itemType,b,a)==c)&&(d.evaluateThing(d.detect,b,a))})[0]};FW.doWeb=function(c,a){Zotero.debug("Entering FW.doWeb");var b=FW.getScraper(c,a);b.makeItems(c,a,[],function(f,e,g,d){e.callHook("scraperDone",f,g,d);if(!f.title){f.title=""}f.complete()},function(){Zotero.done()});Zotero.wait();Zotero.debug("Leaving FW.doWeb")};
-
-/*
- Ab Imperio Translator
- Copyright (C) 2011 Avram Lyon, ajlyon@gmail.com
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
- */
-
-function detectWeb(doc, url) {
- return FW.detectWeb(doc, url);
-}
-function doWeb(doc, url) { return FW.doWeb(doc, url); }
-
-
-/** Articles */
-FW.Scraper({ itemType : 'journalArticle',
- detect : FW.Xpath('//center[h3]/h3'),
- title : FW.Xpath('//center[h3]/h3').text().trim(),
- attachments : [
- {
- url : FW.Xpath('//a[contains(@href,"pdf") and contains(text(),"PDF")]').key("href"),
- type : "application/pdf",
- title: "Ab Imperio PDF"
- },
- {
- url : FW.Url(),
- type : "text/html",
- title: "Ab Imperio Snapshot"
- },
- {
- url : FW.Xpath('//table//td/a[img[contains(@src,"doc.gif")]]').key("href"),
- type : "text/html",
- title: "Ab Imperio Snapshot"
- }],
- creators : FW.Xpath('//center[h3]').text().remove(/^[^\n]*\n/).remove(/\n.*/).cleanAuthor("author"),
- // Of course, release date is always later, but we'll still call this a date and not a volume
- date : FW.Xpath('//center[h3]/font').text().match(/\/([0-9]{4})/,1),
- issue : FW.Xpath('//center[h3]/font').text().match(/([0-9]+)\//,1),
- abstractNote : FW.Xpath('//center[h3]/following-sibling::p[1]').text(),
- publicationTitle : "Ab Imperio"
-});
-
-/* This can be thrown off by articles that the user doesn't have access to... */
-/** Search results */
-FW.MultiScraper({ itemType : "multiple",
- detect : FW.Url().match(/state=(?:shown|srch)/),
- choices : {
- titles : FW.Xpath('//a[contains(@href,"state=showa")]').text(),
- urls : FW.Xpath('//a[contains(@href,"state=showa")]').key('href').text()
- }
-});
diff --git a/translators/AcademicJournals.net.js b/translators/AcademicJournals.net.js
deleted file mode 100644
index 3980557e91..0000000000
--- a/translators/AcademicJournals.net.js
+++ /dev/null
@@ -1,91 +0,0 @@
-{
- "translatorID":"252c6a50-0900-41c5-a66b-ec456137c43c",
- "translatorType":4,
- "label":"AcademicJournals.net",
- "creator":"Michael Berkowitz",
- "target":"http://www.academicjournals.net/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2009-01-08 08:19:07"
-}
-
-function detectWeb(doc, url) {
- if (url.match('articleno=')) {
- return "journalArticle";
- } else if (url.match('issueno=') || url.match('current.php')) {
- return "multiple";
- }
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return prefix; else return null;
- } : namespace;
-
- var arts = new Array();
- if (detectWeb(doc, url) == "multiple") {
- var items = new Object();
- var titles = doc.evaluate('//tr[2]/td//table/tbody/tr[1]/td[2]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var title;
- var links = doc.evaluate('//tr[4]/td[2]/div/a[@class="links"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var link;
- while ((title = titles.iterateNext()) && (link = links.iterateNext())) {
- items[link.href] = Zotero.Utilities.trimInternal(title.textContent);
- }
- items = Zotero.selectItems(items);
- for (var i in items) {
- arts.push(i);
- }
- } else {
- arts = [url];
- }
- Zotero.Utilities.processDocuments(arts, function(doc) {
- var item = new Zotero.Item("journalArticle");
- item.url = doc.location.href;
- //title
- item.title = Zotero.Utilities.trimInternal(doc.evaluate('//td[2]/table/tbody/tr/td/div/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent);
-
- //voliss, etc.
- var voliss = doc.evaluate('//table/tbody/tr/td[2]/font/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
- voliss = voliss.match(/^([^\d]+)(\d+)\s+\((\d+)\):\s+([\d\-]+),\s+(\d+)/);
- Zotero.debug(voliss);
- item.publicationTitle = voliss[1];
- item.volume = voliss[2];
- item.issue = voliss[3];
- item.pages = voliss[4];
- item.date = voliss[5];
-
- //authors
- var authorsx = doc.evaluate('//td[2]/font/a[@class="links"]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var author;
- var authors = new Array();
- while (author = authorsx.iterateNext()) {
- authors.push(author.textContent);
- }
- for each (var aut in authors) {
- item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
- }
-
- item.abstractNote = Zotero.Utilities.trimInternal(doc.evaluate('//table/tbody/tr/td/div/table/tbody/tr/td[2]/div/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent);
-
- //attachments
- var pdfurl = doc.evaluate('//a[contains(@href, ".pdf")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href;
- item.attachments = [
- {url:item.url, title:"AcademicJournals.net Snapshot", mimeType:"text/html"},
- {url:pdfurl, title:"AcademicJournals.net PDF", mimeType:"application/pdf"}
- ];
-
- //tags
- var tagspath = doc.evaluate('//tbody/tr/td/table/tbody/tr[2]/td/font/a[@class="links"]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var tag;
- var tags = new Array();
- while (tag = tagspath.iterateNext()) {
- tags.push(tag.textContent);
- }
- item.tags = tags;
- item.complete();
- }, function() {Zotero.done();});
-}
\ No newline at end of file
diff --git a/translators/AdvoCAT.js b/translators/AdvoCAT.js
deleted file mode 100644
index 0792b437e1..0000000000
--- a/translators/AdvoCAT.js
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- "translatorID":"138de272-0d2a-4ab5-8cfb-0fd879958d04",
- "translatorType":4,
- "label":"AdvoCAT",
- "creator":"Adam Crymble",
- "target":"^http://(142.57.32.51|library.lsuc.on.ca)",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-07-25 17:40:00"
-}
-
-function detectWeb(doc, url) {
- if (doc.location.href.match("Search_Code")) {
- return "multiple";
- } else if (doc.title.match("Record View")) {
- return "book";
- }
-}
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var dataTags = new Object();
- var fieldTitle;
-
- var newItem = new Zotero.Item("book");
-
- var headers = doc.evaluate('//table[2]/tbody/tr/th', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathCount = doc.evaluate('count (//table[2]/tbody/tr/th)', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var contents = doc.evaluate('//table[2]/tbody/tr/td', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- for (i=0; i0&&a[0]){return f}}}return undefined};FW.getScraper=function(b,a){var c=FW.detectWeb(b,a);return FW._scrapers.filter(function(d){return(d.evaluateThing(d.itemType,b,a)==c)&&(d.evaluateThing(d.detect,b,a))})[0]};FW.doWeb=function(c,a){Zotero.debug("Entering FW.doWeb");var b=FW.getScraper(c,a);b.makeItems(c,a,[],function(f,e,g,d){e.callHook("scraperDone",f,g,d);if(!f.title){f.title=""}f.complete()},function(){Zotero.done()});Zotero.wait();Zotero.debug("Leaving FW.doWeb")};
-function detectWeb(doc, url) { return FW.detectWeb(doc, url); }
-function doWeb(doc, url) { return FW.doWeb(doc, url); }
-
-// Articles
-FW.Scraper({
- itemType : 'magazineArticle',
- detect : FW.Xpath('//meta[@name="title"]/@content'),
- title : FW.Xpath('//div[@class="headline"]/h1').text(),
- creators : FW.Xpath('//meta[@name="author"]/@content').text().split(',').cleanAuthor("author"),
- date : FW.Xpath('//div[@class="story-date"]/em').text(),
- abstractNote : FW.Xpath('//div[@class="teaser"]').text().trim(),
- extra : FW.Xpath('//meta[@name="source"]/@content').text().prepend("Source of article: "),
- tags : FW.Xpath('//meta[@name="keywords"]/@content').text().split(",").trim(),
- attachments : [ {url:FW.Xpath('//div[@class="story_tools_print"]/a').key("href"), type:"text/html", title:"AlterNet Article Snapshot"} ],
- publicationTitle : "AlterNet",
- url : FW.Url(),
-});
-
-// Blogs
-FW.Scraper({
- itemType : 'blogPost',
- detect : FW.Url().match(/blogs\.alternet/),
- title : FW.Xpath('//div[@class="headline"]/h1').text(),
- creators : FW.Xpath('//div[@class="byline body_"]/a').text().split(',').cleanAuthor("author"),
- date : FW.Xpath('//div[@class="byline body_"]').text().match(/(am|pm)\s*(.*)$/, 2).trim(),
- //abstractNote : FW.Xpath('//
- //extra : FW.Xpath('//
- //tags : FW.Xpath('//
- //TODO print version of blog posts are CSS swaps and so would require a workaround to save
- attachments : [ {url: FW.Url(), type:"text/html", title:"AlterNet Article Snapshot"} ],
- publicationTitle : "AlterNet",
- url : FW.Url(),
-});
-
-/** Search results
-Erik's framework won't work, since the results are in an iframe
-This will need to be done the traditional way, or the framework will need to be extended
-FW.MultiScraper({
- itemType : "multiple",
- detect : FW.Url().match(/google\.com.*search_results\.html/),
- titles : FW.Xpath('//div[@id="res"]//ol/li//h2/a').text(),
- urls : FW.Xpath('//div[@id="res"]//ol/li//h2/a').key('href').text()
-});
-//*/
diff --git a/translators/Aluka.js b/translators/Aluka.js
deleted file mode 100644
index 6bbb066d1b..0000000000
--- a/translators/Aluka.js
+++ /dev/null
@@ -1,191 +0,0 @@
-{
- "translatorID":"e8fc7ebc-b63d-4eb3-a16c-91da232f7220",
- "translatorType":4,
- "label":"Aluka",
- "creator":"Sean Takats",
- "target":"https?://(?:www\\.)aluka.org/action/(?:showMetadata\\?doi=[^&]+|doSearch\\?|doBrowseResults\\?)",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-02-12 10:00:00"
-}
-
-function detectWeb(doc, url){
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var xpath = '//a[@class="title"]';
-
- if (url.match(/showMetadata\?doi=[^&]+/)){
- return "document";
- } else if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- }
-}
-
-// Aluka types we can import
-// TODO: Improve support for other Aluka item types?
-// Correspondence, Circulars, Newsletters, Interviews, Pamphlets, Policy Documents, Posters, Press Releases, Reports, Testimonies, Transcripts
-var typeMap = {
- "Books":"book",
- "Aluka Essays":"report",
- "photograph":"artwork",
- "Photographs":"artwork",
- "Panoramas":"artwork",
- "Journals (Periodicals)":"journalArticle",
- "Articles":"journalArticle",
- "Correspondence":"letter",
- "Interviews":"interview",
- "Reports":"report"
-}
-
-function doWeb(doc, url){
- var urlString = "http://www.aluka.org/action/showPrimeXML?doi=" ;
- var uris = new Array();
- var m = url.match(/showMetadata\?doi=([^&]+)/);
- if (m) { //single page
- uris.push(urlString+ m[1]);
- } else { //search results page
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var xpath = '//a[@class="title"]';
- var items = new Object();
- var elmts = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
- var elmt;
- while (elmt = elmts.iterateNext()) {
- var title = elmt.textContent;
- var link = elmt.href;
- var m = link.match(/showMetadata\?doi=([^&]+)/);
- if (title && m){
- items[m[1]] = title;
- }
- }
-
- var items = Zotero.selectItems(items);
- if(!items) {
- return true;
- }
-
- for(var i in items) {
- uris.push(urlString + i);
- }
- }
- // http://www.aluka.org/action/showPrimeXML?doi=10.5555/AL.SFF.DOCUMENT.cbp1008
-
- Zotero.Utilities.HTTP.doGet(uris, function(text) {
- text = text.replace(/<\?xml[^>]*\?>/, ""); // strip xml header
- text = text.replace(/(<[^>\.]*)\.([^>]*>)/g, "$1_$2"); // replace dots in tags with underscores
- var xml = new XML(text);
- var metadata = xml..MetadataDC;
- var itemType = "Unknown";
- if (metadata.length()){
- itemType = "document";
- if (metadata[0].Type.length()){
- var value = metadata[0].Type[0].text().toString();
- if(typeMap[value]) {
- itemType = typeMap[value];
- } else {
- Zotero.debug("Unmapped Aluka Type: " + value);
- }
- }
- var newItem = new Zotero.Item(itemType);
- var title = "";
- if (metadata[0].Title.length()){
- var title = Zotero.Utilities.trimInternal(metadata[0].Title[0].text().toString());
- if (title == ""){
- title = " ";
- }
- newItem.title = title;
- }
- if (metadata[0].Title_Alternative.length()){
- newItem.extra = Zotero.Utilities.trimInternal(metadata[0].Title_Alternative[0].text().toString());
- }
- for(var i=0; i]*>/, "").replace(/<\?xml[^>]*\?>/, "");
- var texts = text.split("");
- texts = texts[1].split("");
- text = "" + texts[0];
- var xml = (new DOMParser()).parseFromString(text, "text/xml");
- var publisher = "";
-
- if (!ZU.xpath(xml, "//Errors").length) {
- var publisher = getXPathNodeTrimmed(xml, "Publisher");
- var binding = getXPathNodeTrimmed(xml, "Binding");
- var productGroup = getXPathNodeTrimmed(xml, "ProductGroup");
-
- if (productGroup=="Book") {
- var newItem = new Zotero.Item("book");
- newItem.publisher = publisher;
- }
- else if (productGroup == "Music") {
- var newItem = new Zotero.Item("audioRecording");
- newItem.label = publisher;
- newItem.audioRecordingType = binding;
- getCreatorNodes(xml, "Artist", newItem, "performer");
- }
- else if (productGroup == "DVD" | productGroup == "Video") {
- var newItem = new Zotero.Item("videoRecording");
- newItem.studio = publisher;
- newItem.videoRecordingType = binding;
- getCreatorNodes(xml, "Actor", newItem, "castMember");
- getCreatorNodes(xml, "Director", newItem, "director");
- }
- else{
- var newItem = new Zotero.Item("book");
- newItem.publisher = publisher;
- }
-
- newItem.runningTime = getXPathNodeTrimmed(xml, "RunningTime");
-
- // Retrieve authors and other creators
- getCreatorNodes(xml, "Author", newItem, "author");
- if (newItem.creators.length == 0){
- getCreatorNodes(xml, "Creator", newItem, "author");
- }
-
- newItem.date = getXPathNodeTrimmed(xml, "PublicationDate");
- if (!newItem.date){
- newItem.date = getXPathNodeTrimmed(xml, "ReleaseDate");
- }
- newItem.edition = getXPathNodeTrimmed(xml, "Edition");
- newItem.ISBN = getXPathNodeTrimmed(xml, "ISBN");
- newItem.numPages = getXPathNodeTrimmed(xml, "NumberOfPages");
- var title = getXPathNodeTrimmed(xml, "Title");
- if(title.lastIndexOf("(") != -1 && title.lastIndexOf(")") == title.length-1) {
- title = title.substring(0, title.lastIndexOf("(")-1);
- }
- var ASIN = getXPathNodeTrimmed(xml, "ASIN");
- if (ASIN){
- var url = "http://www.amazon." + suffix + "/dp/" + ASIN;
- newItem.attachments.push({title:"Amazon.com Link", snapshot:false, mimeType:"text/html", url:url});
- }
-
- newItem.extra = getXPathNodeTrimmed(xml, "OriginalReleaseDate");
-
- newItem.title = title;
- newItem.complete();
- }
-}
-
-function getXPathNodeTrimmed(xml, name) {
- var node = ZU.xpath(xml, "//"+name);
- var val = "";
- if(node.length){
- val = Zotero.Utilities.trimInternal(node[0].textContent);
- }
- return val;
-}
-
-function getCreatorNodes(xml, name, newItem, creatorType) {
- var nodes = ZU.xpath(xml, "//"+name);
- for(var i=0; i 16) bkey = binb_sha256(bkey, key.length * 8);
-
- var ipad = Array(16), opad = Array(16);
- for(var i = 0; i < 16; i++)
- {
- ipad[i] = bkey[i] ^ 0x36363636;
- opad[i] = bkey[i] ^ 0x5C5C5C5C;
- }
-
- var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
- return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));
-}
-
-/*
- * Convert a raw string to a hex string
- */
-function rstr2hex(input)
-{
- try { hexcase } catch(e) { hexcase=0; }
- var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
- var output = "";
- var x;
- for(var i = 0; i < input.length; i++)
- {
- x = input.charCodeAt(i);
- output += hex_tab.charAt((x >>> 4) & 0x0F)
- + hex_tab.charAt( x & 0x0F);
- }
- return output;
-}
-
-/*
- * Convert a raw string to a base-64 string
- */
-function rstr2b64(input)
-{
- try { b64pad } catch(e) { b64pad=''; }
- var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var output = "";
- var len = input.length;
- for(var i = 0; i < len; i += 3)
- {
- var triplet = (input.charCodeAt(i) << 16)
- | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
- | (i + 2 < len ? input.charCodeAt(i+2) : 0);
- for(var j = 0; j < 4; j++)
- {
- if(i * 8 + j * 6 > input.length * 8) output += b64pad;
- else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
- }
- }
- return output;
-}
-
-/*
- * Convert a raw string to an arbitrary string encoding
- */
-function rstr2any(input, encoding)
-{
- var divisor = encoding.length;
- var remainders = Array();
- var i, q, x, quotient;
-
- /* Convert to an array of 16-bit big-endian values, forming the dividend */
- var dividend = Array(Math.ceil(input.length / 2));
- for(i = 0; i < dividend.length; i++)
- {
- dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
- }
-
- /*
- * Repeatedly perform a long division. The binary array forms the dividend,
- * the length of the encoding is the divisor. Once computed, the quotient
- * forms the dividend for the next step. We stop when the dividend is zero.
- * All remainders are stored for later use.
- */
- while(dividend.length > 0)
- {
- quotient = Array();
- x = 0;
- for(i = 0; i < dividend.length; i++)
- {
- x = (x << 16) + dividend[i];
- q = Math.floor(x / divisor);
- x -= q * divisor;
- if(quotient.length > 0 || q > 0)
- quotient[quotient.length] = q;
- }
- remainders[remainders.length] = x;
- dividend = quotient;
- }
-
- /* Convert the remainders to the output string */
- var output = "";
- for(i = remainders.length - 1; i >= 0; i--)
- output += encoding.charAt(remainders[i]);
-
- /* Append leading zero equivalents */
- var full_length = Math.ceil(input.length * 8 /
- (Math.log(encoding.length) / Math.log(2)))
- for(i = output.length; i < full_length; i++)
- output = encoding[0] + output;
-
- return output;
-}
-
-/*
- * Encode a string as utf-8.
- * For efficiency, this assumes the input is valid utf-16.
- */
-function str2rstr_utf8(input)
-{
- var output = "";
- var i = -1;
- var x, y;
-
- while(++i < input.length)
- {
- /* Decode utf-16 surrogate pairs */
- x = input.charCodeAt(i);
- y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
- if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
- {
- x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
- i++;
- }
-
- /* Encode output as utf-8 */
- if(x <= 0x7F)
- output += String.fromCharCode(x);
- else if(x <= 0x7FF)
- output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
- 0x80 | ( x & 0x3F));
- else if(x <= 0xFFFF)
- output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
- 0x80 | ((x >>> 6 ) & 0x3F),
- 0x80 | ( x & 0x3F));
- else if(x <= 0x1FFFFF)
- output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
- 0x80 | ((x >>> 12) & 0x3F),
- 0x80 | ((x >>> 6 ) & 0x3F),
- 0x80 | ( x & 0x3F));
- }
- return output;
-}
-
-/*
- * Encode a string as utf-16
- */
-function str2rstr_utf16le(input)
-{
- var output = "";
- for(var i = 0; i < input.length; i++)
- output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
- (input.charCodeAt(i) >>> 8) & 0xFF);
- return output;
-}
-
-function str2rstr_utf16be(input)
-{
- var output = "";
- for(var i = 0; i < input.length; i++)
- output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
- input.charCodeAt(i) & 0xFF);
- return output;
-}
-
-/*
- * Convert a raw string to an array of big-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-function rstr2binb(input)
-{
- var output = Array(input.length >> 2);
- for(var i = 0; i < output.length; i++)
- output[i] = 0;
- for(var i = 0; i < input.length * 8; i += 8)
- output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
- return output;
-}
-
-/*
- * Convert an array of big-endian words to a string
- */
-function binb2rstr(input)
-{
- var output = "";
- for(var i = 0; i < input.length * 32; i += 8)
- output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
- return output;
-}
-
-/*
- * Main sha256 function, with its support functions
- */
-function sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}
-function sha256_R (X, n) {return ( X >>> n );}
-function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
-function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
-function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
-function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
-function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
-function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
-function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
-function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
-function sha256_Gamma0512(x) {return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7));}
-function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
-
-var sha256_K = new Array
-(
- 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,
- -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,
- 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,
- 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
- -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,
- 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,
- 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,
- -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,
- 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,
- 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,
- -1866530822, -1538233109, -1090935817, -965641998
-);
-
-function binb_sha256(m, l)
-{
- var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534,
- 1359893119, -1694144372, 528734635, 1541459225);
- var W = new Array(64);
- var a, b, c, d, e, f, g, h;
- var i, j, T1, T2;
-
- /* append padding */
- m[l >> 5] |= 0x80 << (24 - l % 32);
- m[((l + 64 >> 9) << 4) + 15] = l;
-
- for(i = 0; i < m.length; i += 16)
- {
- a = HASH[0];
- b = HASH[1];
- c = HASH[2];
- d = HASH[3];
- e = HASH[4];
- f = HASH[5];
- g = HASH[6];
- h = HASH[7];
-
- for(j = 0; j < 64; j++)
- {
- if (j < 16) W[j] = m[j + i];
- else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
- sha256_Gamma0256(W[j - 15])), W[j - 16]);
-
- T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
- sha256_K[j]), W[j]);
- T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
- h = g;
- g = f;
- f = e;
- e = safe_add(d, T1);
- d = c;
- c = b;
- b = a;
- a = safe_add(T1, T2);
- }
-
- HASH[0] = safe_add(a, HASH[0]);
- HASH[1] = safe_add(b, HASH[1]);
- HASH[2] = safe_add(c, HASH[2]);
- HASH[3] = safe_add(d, HASH[3]);
- HASH[4] = safe_add(e, HASH[4]);
- HASH[5] = safe_add(f, HASH[5]);
- HASH[6] = safe_add(g, HASH[6]);
- HASH[7] = safe_add(h, HASH[7]);
- }
- return HASH;
-}
-
-function safe_add (x, y)
-{
- var lsw = (x & 0xFFFF) + (y & 0xFFFF);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xFFFF);
-}
-
-
-
-/** BEGIN TEST CASES **/
-var testCases = [
- {
- "type": "web",
- "url": "http://www.amazon.com/Test-William-Sleator/dp/0810989891/ref=sr_1_1?ie=UTF8&qid=1308010556&sr=8-1",
- "items": [
- {
- "itemType": "book",
- "creators": [
- {
- "firstName": "William",
- "lastName": "Sleator",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [
- {
- "title": "Amazon.com Link",
- "snapshot": false,
- "mimeType": "text/html",
- "url": false
- }
- ],
- "publisher": "Amulet Books",
- "date": "2010-04-01",
- "edition": "Reprint",
- "ISBN": "0810989891",
- "numPages": "320",
- "title": "Test",
- "libraryCatalog": "Amazon.com"
- }
- ]
- },
- {
- "type": "web",
- "url": "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&field-keywords=foot&x=0&y=0",
- "items": "multiple"
- },
- {
- "type": "web",
- "url": "http://www.amazon.com/Loveless-My-Bloody-Valentine/dp/B000002LRJ/ref=ntt_mus_ep_dpi_1",
- "items": [
- {
- "itemType": "audioRecording",
- "creators": [
- {
- "firstName": "My Bloody",
- "lastName": "Valentine",
- "creatorType": "performer"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [
- {
- "title": "Amazon.com Link",
- "snapshot": false,
- "mimeType": "text/html",
- "url": false
- }
- ],
- "label": "Sire / London/Rhino",
- "audioRecordingType": "Audio CD",
- "date": "1991-11-05",
- "extra": "1991-11-05",
- "title": "Loveless",
- "libraryCatalog": "Amazon.com"
- }
- ]
- },
- {
- "type": "web",
- "url": "http://www.amazon.com/Adaptation-Superbit-Collection-Nicholas-Cage/dp/B00005JLRE/ref=sr_1_1?ie=UTF8&qid=1309683150&sr=8-1",
- "items": [
- {
- "itemType": "videoRecording",
- "creators": [
- {
- "firstName": "Nicholas",
- "lastName": "Cage",
- "creatorType": "castMember"
- },
- {
- "firstName": "Chris",
- "lastName": "Cooper",
- "creatorType": "castMember"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [
- {
- "title": "Amazon.com Link",
- "snapshot": false,
- "mimeType": "text/html",
- "url": false
- }
- ],
- "studio": "Sony Pictures Home Entertainment",
- "videoRecordingType": "DVD",
- "runningTime": "114",
- "date": "2003-05-20",
- "ISBN": "0767879805",
- "extra": "2002-12-06",
- "title": "Adaptation",
- "libraryCatalog": "Amazon.com"
- }
- ]
- },
- {
- "type": "web",
- "url": "http://www.amazon.com/s?ie=UTF8&keywords=The%20Harvard%20Concise%20Dictionary%20of%20Music%20and%20Musicians&index=blended&Go=o",
- "items": "multiple"
- }
-]
-/** END TEST CASES **/
diff --git a/translators/American Institute of Aeronautics and Astronautics.js b/translators/American Institute of Aeronautics and Astronautics.js
deleted file mode 100644
index 5765e3e366..0000000000
--- a/translators/American Institute of Aeronautics and Astronautics.js
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "translatorID":"75edc5a1-6470-465a-a928-ccb77d95eb72",
- "translatorType":4,
- "label":"American Institute of Aeronautics and Astronautics",
- "creator":"Michael Berkowitz",
- "target":"http://www.aiaa.org/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-05-12 19:00:00"
-}
-
-function detectWeb(doc, url) {
- if (doc.evaluate('//td/div[@class="title"]/b/div[@class="centerHeadlines"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- }
-}
-
-function doWeb(doc, url) {
- var n = doc.documentElement.namespaceURI;
- var ns = n ? function(prefix) {
- if (prefix == 'x') return n; else return null;
- } : null;
-
- var items = new Object();
- var oldItems = doc.evaluate('//table/tbody/tr/td[div[@class="title"]]', doc, ns, XPathResult.ANY_TYPE, null);
- var nextItem;
- while (nextItem = oldItems.iterateNext()) {
- var data = new Object();
- data['title'] = Zotero.Utilities.trimInternal(doc.evaluate('./div[@class="title"]//div[@class="centerHeadlines"]', nextItem, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- data['pages'] = Zotero.Utilities.trimInternal(doc.evaluate('./div[@class="title"]//div[@class="centerHeadlinesSub2"]', nextItem, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/[\d\w]+\-[\d\w]+/)[0]);
- data['authors'] = Zotero.Utilities.trimInternal(doc.evaluate('./ul/i', nextItem, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- var extra = Zotero.Utilities.trimInternal(doc.evaluate('./ul', nextItem, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- var extra = extra.replace(data['authors'], "");
- data['extra'] = Zotero.Utilities.trimInternal(extra);
- var pdf = doc.evaluate('.//a', nextItem, ns, XPathResult.ANY_TYPE, null).iterateNext().href;
- Zotero.debug(pdf);
- data['pdfurl'] = pdf;
- items[data['title']] = data;
- }
- var volume;
- var issue;
- var date;
- if (doc.evaluate('//td[2]/table/tbody/tr/td[1]/strong', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) {
- var voliss = Zotero.Utilities.trimInternal(doc.evaluate('//td[2]/table/tbody/tr/td[1]/strong', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- voliss = voliss.match(/(\d+)\s+vol\.\s*(\d+)\s+no\.\s*(\d+)/);
- volume = voliss[2];
- issue = voliss[3];
- date = voliss[1];
- } else if (doc.evaluate('//select', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) {
- var voliss = Zotero.Utilities.trimInternal(doc.evaluate('//select[@name="volume"]/option[@selected]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- var issue = Zotero.Utilities.trimInternal(doc.evaluate('//select[@name="issue"]/option[@selected]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- voliss = voliss.match(/vol\.\s*(\d+)\s*\-\s*(\d+)/);
- volume = voliss[1];
- date = voliss[2];
- }
- if (doc.evaluate('//tr[1]/td/b/div[@class="centerHeadlines"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) {
- var journal = Zotero.Utilities.trimInternal(doc.evaluate('//tr[1]/td/b/div[@class="centerHeadlines"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- var ISSN = Zotero.Utilities.trimInternal(doc.evaluate('//tr[1]/td/font[@class="centerHeadlinesSub2"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent.replace(/(\(|\))/g, ""));
- } else if (doc.evaluate('//div[@class="centerHeadlinesTitle"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) {
- var journal = Zotero.Utilities.trimInternal(doc.evaluate('//div[@class="centerHeadlinesTitle"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent);
- var ISSN = Zotero.Utilities.trimInternal(doc.evaluate('//tr/td[1]/table/tbody/tr[2]/td/div', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/ISSN\s*([\d\-]+)/)[1]);
- }
- var searchItems = new Array();
- for (var i in items) {
- searchItems.push(i);
- }
-
- searchItems = Zotero.selectItems(searchItems);
- for (var i in items) {
- for each (var title in searchItems) {
- if (i == title) {
- var data = items[i];
- var item = new Zotero.Item("journalArticle");
- item.volume = volume;
- item.issue = issue;
- item.date = date;
- item.title = data['title'];
- item.pages = data['pages'];
- item.publicationTitle = Zotero.Utilities.capitalizeTitle(journal);
- item.ISSN = ISSN;
- if (data['authors'].match(/\w+/)) {
- var authors = data['authors'].split(/(\band\b|,|;)/);
- for each (var aut in authors) {
- if (aut.match(/\w+/) && aut != "and") {
- item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
- }
- }
- }
- item.attachments = [{url:data['pdfurl'], title:"AIAA PDF (first page)", mimeType:"application/pdf"}];
- item.complete();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/translators/Ancestry.com US Federal Census.js b/translators/Ancestry.com US Federal Census.js
deleted file mode 100644
index 115e80f8c5..0000000000
--- a/translators/Ancestry.com US Federal Census.js
+++ /dev/null
@@ -1,235 +0,0 @@
-{
- "translatorID":"0dda3f89-15de-4479-987f-cc13f1ba7999",
- "translatorType":4,
- "label":"Ancestry.com US Federal Census",
- "creator":"Elena Razlogova",
- "target":"^https?://search.ancestry.com/(.*)usfedcen|1890orgcen|1910uscenindex",
- "minVersion":"1.0.0b4.r1",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2011-01-11 04:31:00"
-}
-
-function detectWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var result = doc.evaluate('//div[@class="g_container"]/div[@class="g_panelWrap"]/div[@class="g_panelCore"]/div[@class="s_container"]/div[@class="p_rsltList"]', doc, nsResolver,
- XPathResult.ANY_TYPE, null).iterateNext();
-
- var rows = doc.evaluate('//div[@class="g_container"]/div[@class="g_panelWrap"]/div[@class="g_panelCore"]/div[@class="s_container"]/div[@class="p_rsltList"]/table/tbody/tr[@class="tblrow record"]',
- doc, nsResolver, XPathResult.ANY_TYPE, null);
- var row;
- while(row = rows.iterateNext()) {
- links = doc.evaluate('.//a', row, nsResolver, XPathResult.ANY_TYPE, null);
- var linkNo=0;
- while(link=links.iterateNext()) {
- linkNo=linkNo+1;
- }
- break;
- }
-
- if(result && linkNo == 2) {
- return "multiple";
- } else {
- var indivRe = /indiv=1/;
- var m = indivRe.exec(doc.location.href);
- var indiv = 0;
- if(m) {
- indiv = 1;
- }
-
- checkURL = doc.location.href.replace("pf=", "");
- if(doc.location.href == checkURL && indiv == 1) {
- return "bookSection";
- }
- }
-}
-
-// this US Federal Census scraper is a hack - so far there is no proper item type in Zotero for this kind of data (added to trac as a low priority ticket)
-// this scraper creates proper citation for the census as a whole (should be cited as book)
-// but also adds name, city, and state for a particular individual to the citation to make scanning for names & places easier in the middle pane
-// (that's why the resulting item type is a book section)
-// it also adds all searchable text as a snapshot and a scan of the census record as an image
-
-function scrape(doc) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- // get initial census data; a proper census record item type should have separate fields for all of these except perhaps dbid
- var info = doc.evaluate('//div[@class="facets"][@id="connect"]/div[@class="g_box"]/p/a',
- doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
-
- if(info) {
-
- info = info.toString();
- var data = new Array();
- var parts = info.split(/[?&]/);
- for each(var part in parts) {
- var index = part.indexOf("=");
- if(index !== -1) {
- data[part.substr(0, index)] = part.substr(index+1);
- }
- }
-
- if(data.ln) {
- var lastName = data.ln.replace(/\+/g, " ");
- var firstName = data.fn.replace(/\+/g, " ");
- } else {
- var lastName = data.fn.replace(/\+/g, " ");
- var firstName = "";
- }
- var dOb = data.by; // this does not get saved yet because no field is available; the info is in the snapshot
- if(data.rfd) {
- var yearRe = /([0-9]{4})/;
- var m = yearRe.exec(data.rfd);
- if(m) {
- var year = m[1];
- }
- } else { var year = data.ry; }
- var state = data.rs.replace(/\+/g, " ");
- var county = data.rcnty.replace(/\+/g, " "); // this does not get saved yet because no field is available; the info is in the snapshot
- var city = data.rcty.replace(/\+/g, " ");
- var dbid = data.dbid;
- }
-
- // set census number for citation - let me know if this can be done in a better way
- var censusYear = 0;
- var censusNo = "";
- var censusNos = new Array("1790", "First", "1800", "Second", "1810", "Third", "1820", "Fourth", "1830", "Fifth", "1840", "Sixth", "1850", "Seventh", "1860", "Eighth", "1870", "Ninth",
- "1880", "Tenth", "1890", "Eleventh", "1900", "Twelfth", "1910", "Thirteenth", "1920", "Fourteenth", "1930", "Fifteenth")
- for(var i in censusNos) {
- if(censusYear == 1) { censusNo = censusNos[i] };
- if(censusNos[i] == year) { censusYear = 1 } else {censusYear= 0 };
- }
-
- //begin adding item
- var newItem = new Zotero.Item("bookSection");
- newItem.title = city+", "+state; // this is not proper citation but is needed to easily scan for placenames in middle pane
- newItem.publicationTitle = censusNo+" Census of the United States, "+year;
- newItem.publisher = "National Archives and Records Administration";
- newItem.place = "Washington, DC";
- newItem.date = year;
-
- // get snapshot with all searchable text and a simplified link to the record for the URL field
- var dbRe = /db=([0-9a-z]+)/;
- var m = dbRe.exec(doc.location.href);
- if(m) {
- db = m[1];
- }
- var snapshotRe = /\&h=([0-9]+)/;
- var m = snapshotRe.exec(doc.location.href);
- if(m) {
- snapshotURL = "http://search.ancestry.com/cgi-bin/sse.dll?db="+db+"&indiv=1&pf=1&h="+m[1];
- newItem.attachments.push({title:"Ancestry.com Snapshot", mimeType:"text/html", url:snapshotURL, snapshot:true});
- cleanURL = "http://search.ancestry.com/cgi-bin/sse.dll?indiv=1&db="+db+"&fh=0&h="+m[1];
- newItem.url = cleanURL;
- }
-
- // add particular individual being surveyed as contributor - this is not proper citation but is needed so one could easily scan for names in middle pane
- var creator = new Array();
- creator.firstName = firstName;
- creator.lastName = lastName;
- creator.creatorType = "author";
- newItem.creators.push(creator);
-
- //add proper author for citation
- var creator = new Array();
- creator.lastName = "United States of America, Bureau of the Census";
- creator.creatorType = "contributor";
- newItem.creators.push(creator);
-
- // get scan of the census image
- var scanInfo = doc.evaluate('//div[@id="record-main"]/table[@class="p_recTable"]/tbody/tr/td[2][@class="recordTN"]/a',
- doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
-
- if(scanInfo) {
- var scanRe = /iid=([A-Z0-9_-]+)/;
- var m = scanRe.exec(scanInfo);
- if(m) {
- scanURL = "http://content.ancestry.com/Browse/print_u.aspx?dbid="+dbid+"&iid="+m[1];
- Zotero.debug("scan url: " + scanURL);
- }
- }
-
- if(scanURL){
- Zotero.Utilities.HTTP.doGet(scanURL, function(text) {
- Zotero.debug("running doGet");
- Zotero.debug(text);
- var imageRe = /950 src="([^"]+)"/;
- var m = imageRe.exec(text);
- if(m) {
- imageURL = m[1];
- Zotero.debug("image url: " + imageURL);
- newItem.attachments.push({title:"Ancestry.com Image", mimeType:"image/jpeg", url:imageURL, snapshot:true});
- }
-
- newItem.complete();
- Zotero.done();
- });
- } else {
- newItem.complete();
- Zotero.done();
- }
-}
-
-function doWeb(doc, url) {
- var resultsRegexp = /&h=/;
- if(resultsRegexp.test(url)) {
- scrape(doc);
- } else {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- // get census year for links to items
- var yearRe = /db=([0-9]+)/;
- var m = yearRe.exec(doc.location.href);
- if(m) {
- year = m[1];
- }
-
- var dbRe = /db=([0-9a-z]+)/;
- var m = dbRe.exec(doc.location.href);
- if(m) {
- db = m[1];
- }
-
- //select items
- var items = new Array();
- var listElts = doc.evaluate('//tr[@class="tblrow record keySelect"] | //tr[@class="tblrow record"] | //tr[@class="tblrowalt record"]',
- doc, nsResolver, XPathResult.ANY_TYPE, null);
- var recid;
- var link;
- var name;
- while (listElt = listElts.iterateNext()) {
- recInfo = doc.evaluate('.//a', listElt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
- var recidRe = /recid=([0-9]+)/;
- var m = recidRe.exec(recInfo);
- if(m) {
- recid = m[1];
- }
- link = "http://search.ancestry.com/cgi-bin/sse.dll?indiv=1&db="+db+"&fh=0&h="+recid;
- name = doc.evaluate('.//span[@class="srchHit"]', listElt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
- items[link] = Zotero.Utilities.trimInternal(name);
- }
-
- items = Zotero.selectItems(items);
- if(!items) return true;
-
- var urls = new Array();
- for(var i in items) {
- urls.push(i);
- }
-
- Zotero.Utilities.processDocuments(urls, scrape, function() { Zotero.done(); });
- Zotero.wait();
-
- }
-}
\ No newline at end of file
diff --git a/translators/Archeion.js b/translators/Archeion.js
deleted file mode 100644
index b298aaf904..0000000000
--- a/translators/Archeion.js
+++ /dev/null
@@ -1,157 +0,0 @@
-{
- "translatorID":"f6717cbb-2771-4043-bde9-dbae19129bb3",
- "translatorType":4,
- "label":"Archeion",
- "creator":"Adam Crymble",
- "target":"http://archeion-aao",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-07-24 05:15:00"
-}
-
-function detectWeb(doc, url) {
- if (doc.evaluate('//td[@class="full"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- } else if (doc.evaluate('//div[@class="main"]/h1', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "book";
- }
-}
-
-//Archeion translator. code by Adam Crymble
-//The way the site is formatted, I can't split the creators up logically. I have left them off for now.
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- newItem = new Zotero.Item("book");
-
- var xPathHeadings = doc.evaluate('//th', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathContent = doc.evaluate('//table[@class="results"]/tbody/tr/td', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathCount = doc.evaluate('count (//th)', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- var fieldTitle;
- var dataTags = new Object();
- var multiAuthorCheck = new Array();
-
-
- for (var i = 0; i < xPathCount.numberValue; i++) {
- fieldTitle=xPathHeadings.iterateNext().textContent.replace(/\s+/g, '');
-
- //This was Michael Berkowitz's suggested Fix.
-
- /*var ts = doc.getElementsByTagName(("table"), 1) = ts.length, ar = [];
- while ((i--)) {
- if (ts[i].className&&ts[i].className.match("results")) {
- ar[ar.length] = ts[i].getElementsByTagName("td")[0].split(/\ /);
- }
- }
- Zotero.debug(ar[0][0]); */
-
- //COULDN"T SPLIT BY ("\n") TO SEPARATE MULTIPLE CREATORS.
- if (fieldTitle == "Creator:" | fieldTitle == "Créateur:") {
- fieldTitle == "Creator:";
-
- var authorContent = xPathContent.iterateNext().textContent;
- //Zotero.debug(authorContent);
-
- //if (authorContent.match(' (*) ')) {
- // Zotero.debug(doc.title);
- //}
-
-
-
- //var test = authorContent.split(/\ /);
- //Zotero.debug(test);
-
- authors = authorContent.match(/\w+,?\s+[\w\(\)\.]+/g);
-
- //Zotero.debug(authors);
-
-
- for (i = 0; i < authors.length; i++) {
-
- var author = authors[i].split(", ");
-
- if (author.length < 2) {
-
- dataTags["Creator:"] = author[0];
- newItem.creators.push({lastName: dataTags["Creator:"], creatorType: "creator"});
-
- } else {
-
- dataTags["Creator:"] = (author[1] + (" ") + author[0]);
- //Zotero.debug(authorArranged);
- newItem.creators.push(Zotero.Utilities.cleanAuthor(dataTags["Creator:"], "creator"));
- }
- }
-
- } else {
-
-
-
- dataTags[fieldTitle] = Zotero.Utilities.cleanTags(xPathContent.iterateNext().textContent);
- //Zotero.debug(fieldTitle);
- }
- }
-
- associateData (newItem, dataTags, "Datesofmaterial:", "date");
- associateData (newItem, dataTags, "Repository:", "repository");
- associateData (newItem, dataTags, "ReferenceNumber:", "callNumber");
- associateData (newItem, dataTags, "PhysicalDescription:", "extra");
- associateData (newItem, dataTags, "Scopeandcontent", "abstractNote");
-
- associateData (newItem, dataTags, "Dates:", "date");
- associateData (newItem, dataTags, "Centred'archives:", "repository");
- associateData (newItem, dataTags, "Numéroderéférence:", "callNumber");
- associateData (newItem, dataTags, "Descriptionmatérielle:", "extra");
- associateData (newItem, dataTags, "Portéeetcontenu", "abstractNote");
-
- newItem.title = doc.evaluate('//h1', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
-
- newItem.url = doc.location.href;
- newItem.complete();
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var articles = new Array();
-
- if (detectWeb(doc, url) == "multiple") {
- var items = new Object();
- var xPathLinks = doc.evaluate('//td[@class="full"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var linksCounter = doc.evaluate('count (//td[@class="full"]/a)', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathTitles = doc.evaluate('//table[@class="results"]/tbody/tr[1]/td', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- var next_link;
- for (var i = 0; i < linksCounter.numberValue; i++) {
- next_link = xPathLinks.iterateNext().href;
- items[next_link] = xPathTitles.iterateNext().textContent;
-
- }
-
- items = Zotero.selectItems(items);
- for (var i in items) {
- articles.push(i);
- }
- } else {
- articles = [url];
- }
- Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
- Zotero.wait();
-
-}
diff --git a/translators/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js b/translators/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js
deleted file mode 100644
index 4788af91c1..0000000000
--- a/translators/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "translatorID":"dedcae51-073c-48fb-85ce-2425e97f128d",
- "translatorType":4,
- "label":"Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC)",
- "creator":"Michael Berkowitz",
- "target":"http://archivesic.ccsd.cnrs.fr/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2009-01-08 08:19:07"
-}
-
-function detectWeb(doc, url) {
- if (doc.title.toLowerCase().match("fulltext search")) {
- return "multiple";
- } else if (url.match(/sic_\d+/)) {
- return "journalArticle";
- }
-}
-
-var metaTags = {
- "DC.relation":"url",
- "DC.date":"date",
- "DC.description":"abstractNote",
- "DC.creator":"creators",
- "DC.title":"title"
-}
-
-function doWeb(doc, url) {
- var articles = new Array();
- if (detectWeb(doc, url) == "multiple") {
- var items = Zotero.Utilities.getItemArray(doc, doc, /sic_\d+\/fr\//);
- items = Zotero.selectItems(items)
- for (var i in items) {
- articles.push(i);
- }
- } else {
- articles = [url];
- }
- Zotero.Utilities.processDocuments(articles, function(doc) {
- var xpath = '//meta[@name]';
- var data = new Object();
- var metas = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
- var meta;
- while (meta = metas.iterateNext()) {
- if (data[meta.name]) {
- data[meta.name] = data[meta.name] + ";" + meta.content;
- } else {
- data[meta.name] = meta.content;
- }
- }
- Zotero.debug(data);
- var item = new Zotero.Item("journalArticle");
- for (var tag in metaTags) {
- if (tag == "DC.creator") {
- var authors = data['DC.creator'].split(";");
- for each (var aut in authors) {
- aut = aut.replace(/^([^,]+),\s+(.*)$/, "$2 $1");
- item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
- }
- } else {
- item[metaTags[tag]] = data[tag];
- }
- }
- var pdfurl = doc.evaluate('//a[contains(@href, ".pdf")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().href.match(/url=([^&]+)&/)[1];
- Zotero.debug(pdfurl);
- item.attachments = [
- {url:item.url, title:"AOSIC Snapshot", mimeType:"text/html"},
- {url:pdfurl, title:"AOSIC Full Text PDF", mimeType:"application/pdf"}
- ];
- item.complete();
- }, function() {Zotero.done();});
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/Archives Canada-France.js b/translators/Archives Canada-France.js
deleted file mode 100644
index f12f8c93c7..0000000000
--- a/translators/Archives Canada-France.js
+++ /dev/null
@@ -1,148 +0,0 @@
-{
- "translatorID":"d9a16cf3-8b86-4cab-8610-dbd913ad1a44",
- "translatorType":4,
- "label":"Archives Canada-France",
- "creator":"Adam Crymble",
- "target":"http://bd.archivescanadafrance.org",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-07-24 05:30:00"
-}
-
-function detectWeb(doc, url) {
-
- if (doc.location.href.match("doc.xsp?")) {
- return "book";
- } else if (doc.evaluate('//li/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- } else if (doc.evaluate('//td[1][@class="icones"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- }
-}
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
-
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var dataTags = new Object();
- var tagsContent = new Array();
- var fieldTitle;
-
- var newItem = new Zotero.Item("book");
- var xPathHeaders = '//td[2]/div[@class="ead-c"]/div[@class="ead-did"]/table[@class="ead-did"]/tbody/tr/td[1]';
-
- if (doc.evaluate(xPathHeaders, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- var headers = doc.evaluate(xPathHeaders, doc, nsResolver, XPathResult.ANY_TYPE, null);
- var contents = doc.evaluate('//td[2][@class="did-content"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- while (fieldTitle = headers.iterateNext()) {
- fieldTitle = fieldTitle.textContent.replace(/\s+/g, '');
- if (fieldTitle == "Origination" || fieldTitle == "Origine") {
- fieldTitle = "Origination";
- }
- dataTags[fieldTitle] = Zotero.Utilities.cleanTags(contents.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
- }
-
- if (dataTags["Origination"]) {
- var author = dataTags["Origination"];
- if (!author.match(", ")) {
- newItem.creators.push({lastName: author, creatorType: "author"});
- } else {
- var authors = author.split(", ");
- author = authors[1] + " " + authors[0];
- newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
- }
- }
- }
-
-
- if (doc.evaluate('//h1[@class="doc-title"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- newItem.title = doc.evaluate('//h1[@class="doc-title"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
- } else if (doc.evaluate('//td[2]/div[@class="notice"]/p', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- newItem.title = doc.evaluate('//td[2]/div[@class="notice"]/p', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
- } else {
- newItem.title = doc.title + " Title Not Found";
- }
-
- associateData (newItem, dataTags, "PhysicalDescription", "pages");
- associateData (newItem, dataTags, "Descriptionmatérielle", "pages");
-
- associateData (newItem, dataTags, "Repository", "repository");
- associateData (newItem, dataTags, "Lieudeconservation", "repository");
-
- associateData (newItem, dataTags, "LanguageoftheMaterial", "language");
- associateData (newItem, dataTags, "Langue", "language");
-
- associateData (newItem, dataTags, "Identifier", "callNumber");
- associateData (newItem, dataTags, "Cote", "callNumber");
-
- associateData (newItem, dataTags, "Datesextrêmes", "date");
- associateData (newItem, dataTags, "Dates", "date");
-
- newItem.url = doc.location.href;
- newItem.complete();
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var articles = new Array();
-
- if (detectWeb(doc, url) == "multiple") {
-
- var items = new Object();
-
- if (doc.evaluate('//td[1][@class="icones"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- var titles = doc.evaluate('//td[2][@class="ressource"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var titlesCount = doc.evaluate('count (//td[2][@class="ressource"])', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var links = doc.evaluate('//td[1][@class="icones"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- var next_link;
-
- for (var i = 0; i < titlesCount.numberValue; i++) {
- next_link = links.iterateNext().href;
- if (!next_link.match("doc.xsp")) {
- next_link = links.iterateNext().href;
- }
- items[next_link] = titles.iterateNext().textContent;
- }
- }
-
- if (doc.evaluate('//li/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
- var titles = doc.evaluate('//li/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var next_title;
- while (next_title = titles.iterateNext()) {
- items[next_title.href] = next_title.textContent;
- }
- }
-
- items = Zotero.selectItems(items);
- for (var i in items) {
- articles.push(i);
- }
-
- } else if (doc.evaluate('//div[@class="ancestor"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
-
- var link = doc.evaluate('//div[@class="ancestor"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href;
-
- articles = [link];
- } else {
- articles = [url]
- }
- Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/Archives Canada.js b/translators/Archives Canada.js
deleted file mode 100644
index 84bb210b87..0000000000
--- a/translators/Archives Canada.js
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "translatorID":"18bc329c-51af-497e-a7cf-aa572fae363d",
- "translatorType":4,
- "label":"Archives Canada",
- "creator":"Adam Crymble",
- "target":"http://(www.)?archivescanada.ca",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-06-20 20:45:00"
-}
-
-function detectWeb (doc, url) {
- if (doc.location.href.match("RouteRqst")) {
- return "multiple";
- } else if (doc.location.href.match("ItemDisplay")) {
- return "book";
- }
-}
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var dataTags = new Object();
- var tagsContent = new Array();
- var cainNo;
- var newItem = new Zotero.Item("book");
-
- var data = doc.evaluate('//td/p', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var dataCount = doc.evaluate('count (//td/p)', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- for (i=0; i 0) {
- var tmp = panel[0].innerHTML;
- newItem.creators.push({lastName:tmp, creatorType:"judge", fieldMode:true});
-
- }
- // citation
- var cite = doc.getElementsByTagName("CITATION");
- if (cite.length > 0) {
- var tmpc = cite[0].childNodes[0].innerHTML;
- newItem.notes.push({note:tmpc});
- }
-
- newItem.complete();
-}
-
-function doWeb(doc, url) {
- var liiRegexp= /http:\/\/www\.bailii\.org(?:\/cgi\-bin\/markup\.cgi\?doc\=)?\/\w+\/cases\/.+/
- if(liiRegexp.test(url)) {
- scrape(doc);
- } else {
-
- var items = Zotero.Utilities.getItemArray(doc, doc, liiRegexp);
- items = Zotero.selectItems(items);
-
- if(!items) {
- return true;
- }
-
- var urls = new Array();
- for(var i in items) {
- urls.push(i);
- }
-
- Zotero.Utilities.processDocuments(urls, scrape, function() { Zotero.done(); });
- Zotero.wait();
- }
-}
\ No newline at end of file
diff --git a/translators/BBC.js b/translators/BBC.js
deleted file mode 100644
index 7b748e8270..0000000000
--- a/translators/BBC.js
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "translatorID":"f4130157-93f7-4493-8f24-a7c85549013d",
- "translatorType":4,
- "label":"BBC",
- "creator":"Ben Parr",
- "target":"^https?://(?:www|news?)\\.bbc\\.co.uk",
- "minVersion":"1.0.0b4.r1",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2007-08-27 05:00:00"
-}
-
-function detectWeb(doc, url)
-{
-
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var xpath;
-
- xpath='//meta[@name="Headline"]';
- if(content=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext())
- { return "newspaperArticle"; }
-
- xpath='//font[@class="poshead"]/b';
- if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext())
- { return "newspaperArticle"; }
-
- return null;
-}
-
-function scrape(doc,url,title)
-{
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var newItem = new Zotero.Item("newspaperArticle");
-
- newItem.url=url;
- newItem.repository="bbc.co.uk";
- newItem.publicationTitle="BBC";
- newItem.title=title;
-
- xpath='//meta[@name="OriginalPublicationDate"]/@content';
- var temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext();
- if(temp)
- {
- temp=temp.value;
- temp=temp.split(" ")[0];
- newItem.date=temp;
- }
- else
- {
- xpath='//font[@class="postxt"][@size="1"]';
- var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null);
- var row;
- while(row=rows.iterateNext())
- {
- temp=row.textContent;
- if(temp.substr(0,9)=="Created: ")
- {
- newItem.date=temp.substr(9);
- break;
- }
- }
- }
-
- xpath='//meta[@name="Section"]/@content';
- temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext();
- if(temp)
- { newItem.section=temp.value; }
-
- xpath='//meta[@name="Description"]/@content';
- temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext();
- if(temp)
- { newItem.abstractNote=temp.value; }
- else
- {
- xpath='//meta[@name="description"]/@content';
- temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext();
- if(temp)
- { newItem.abstractNote=temp.value; }
- }
-
- newItem.attachments.push({url:url, title:"BBC News Snapshot",mimeType:"text/html"});
-
- newItem.complete();
-}
-
-
-
-function doWeb(doc,url)
-{
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var xpath='//meta[@name="Headline"]/@content';
- var title;
- if(title=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext())
- { scrape(doc,url,title.value) }
- else
- {
- xpath='//font[@class="poshead"]/b';
- if(title=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext())
- { scrape(doc,url,title.textContent) }
- }
-
-
-}
\ No newline at end of file
diff --git a/translators/BC Archival Information Network.js b/translators/BC Archival Information Network.js
deleted file mode 100644
index bbb039579e..0000000000
--- a/translators/BC Archival Information Network.js
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- "translatorID":"c76d6c19-b4c6-4e51-bd7a-0a81752305ae",
- "translatorType":4,
- "label":"BC Archival Information Network",
- "creator":"Adam Crymble",
- "target":"http://(mayne.)?aabc.bc.ca/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-06-20 20:45:00"
-}
-
-function detectWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
-
- var entryType = (doc.evaluate('/html/body/h3', doc, nsResolver, XPathResult.ANY_TYPE, null));
- if (entryType.iterateNext()) {
- var entryType1 = entryType.iterateNext().textContent;
-
- if (entryType1.match("Search") && entryType1 != ("Search Results - BCAUL Repositories")) {
- return "multiple";
- } else if (entryType1.match("Display") && entryType1 != ("Display - BCAUL Repositories") && doc.location.href.match("display")) {
- return "book";
- }
- }
-}
-
-//BCAIN translator. Code by Adam Crymble
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var newItem = new Zotero.Item("book");
-
- var dataTags = new Object();
- var manyAuthors = new Array();
- var tagsContent = new Array();
-
- var xPathHeaders = doc.evaluate('//td[1][@class="datalabel"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathContent = doc.evaluate('//td[2][@class="datatext"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathCount = doc.evaluate('count (//td[1][@class="datalabel"])', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- Zotero.debug(xPathCount.numberValue);
-
- for (var i = 0; i < xPathCount.numberValue; i++) {
- fieldTitle = xPathHeaders.iterateNext().textContent.replace(/\s+/g, '');
-
- if (fieldTitle =="Provenance:") {
-
- dataTags[fieldTitle] = (xPathContent.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
-
- if (dataTags[fieldTitle].match("; ")) {
- manyAuthors = dataTags[fieldTitle].split("; ");
- } else {
- manyAuthors.push(dataTags[fieldTitle]);
- }
-
- for (var j = 0; j < manyAuthors.length; j++) {
- if (manyAuthors[j].match(", ")) {
- var authorName = manyAuthors[j].split(",");
- authorName[0] = authorName[0].replace(/^\s*|\s*$/g, '');
- newItem.creators.push(Zotero.Utilities.cleanAuthor((authorName[1] + (" ") + authorName[0]), "author"));
- } else {
- newItem.creators.push({lastName: dataTags["Provenance:"], creatorType: "creator"});
- }
- }
-
- } else if (fieldTitle == "Partof:") {
-
- dataTags[fieldTitle] = ("Part of " + Zotero.Utilities.cleanTags(xPathContent.iterateNext().textContent.replace(/^\s*|\s*$/g, '')));
-
- } else if (fieldTitle == "OnlineFindingAid:") {
- dataTags[fieldTitle] = ("Online Finding Aid: " + xPathContent.iterateNext().textContent);
- Zotero.debug(dataTags["OnlineFindingAid:"]);
-
- } else if (fieldTitle == "Names:") {
- dataTags[fieldTitle] = (xPathContent.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
- tagsContent = dataTags[fieldTitle].split(";");
-
- } else {
-
- dataTags[fieldTitle] = Zotero.Utilities.cleanTags(xPathContent.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
- }
- }
-
- for (var i = 0; i < tagsContent.length; i++) {
- tagsContent[i] = tagsContent[i].replace(/^\s*|\s*$/g, '');
- newItem.tags[i] = tagsContent[i];
- }
-
- associateData (newItem, dataTags, "Title:", "title");
- associateData (newItem, dataTags, "Dates:", "date");
- associateData (newItem, dataTags, "Physicaldesc.:", "pages");
- associateData (newItem, dataTags, "Repository:", "repository");
- associateData (newItem, dataTags, "Scope/Content:", "abstractNote");
- associateData (newItem, dataTags, "Partof:", "series");
- associateData (newItem, dataTags, "OnlineFindingAid:", "extra");
-
- newItem.notes.push({title:"Title", note:"To view this entry in your browser, please go to'http://aabc.bc.ca/WWW.aabc.archbc/access' and search for the entry Title "});
- newItem.complete();
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var articles = new Array();
-
- if (detectWeb(doc, url) == "multiple") {
- var items = new Object();
-
- var xPathTitles = doc.evaluate('//tr[1]/td[2][@class="datatext"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var nextTitle;
-
- var xPathLinks = doc.evaluate('//td[1][@class="dataleft"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var nextLink;
-
- while (nextTitle = xPathTitles.iterateNext()) {
- items[xPathLinks.iterateNext().href] = nextTitle.textContent;
- }
-
- items = Zotero.selectItems(items);
- for (var i in items) {
- articles.push(i);
- }
- } else {
- articles = [url];
- }
- Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/BIBSYS.js b/translators/BIBSYS.js
deleted file mode 100644
index fb944c9fb8..0000000000
--- a/translators/BIBSYS.js
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "translatorID":"ab961e61-2a8a-4be1-b8a3-044f20d52d78",
- "translatorType":4,
- "label":"BIBSYS",
- "creator":"Ramesh Srigiriraju",
- "target":"^http://ask\\.bibsys\\.no/ask/action",
- "minVersion":"1.0.0b4.r1",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2007-07-31 16:45:00"
-}
-
-function detectWeb(doc, url) {
- var multireg=new RegExp("^http://ask\.bibsys\.no/ask/action/result");
- if(multireg.test(url))
- return "multiple";
- var singlereg=new RegExp("^http://ask\.bibsys\.no/ask/action/show");
- if(singlereg.test(url))
- return "book";
-}
-
-function doWeb(doc, url) {
- var namespace=doc.documentElement.namespaceURI;
- var nsResolver=namespace?function(prefix) {
- return (prefix=="x")?namespace:null;
- }:null;
- var multireg=new RegExp("http://ask\.bibsys\.no/ask/action/result");
- if(multireg.test(url)) {
- var titlpath='//tr/td[@width="49%"][@align="left"][@valign="top"]/a/text()';
- var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null);
- var codepath='//tr/td/input[@type="checkbox"][@name="valg"]/@value';
- var codes=doc.evaluate(codepath, doc, nsResolver, XPathResult.ANY_TYPE, null);
- var items=new Array();
- var title;
- titles.iterateNext();
- while(title=titles.iterateNext())
- items[codes.iterateNext().nodeValue]=title.nodeValue;
- items=Zotero.selectItems(items);
- var string="http://ask.bibsys.no/ask/action/result?control=ctr_top";
- for(var codes in items)
- string+="&valg="+codes;
- string+="&control=ctr_bottom&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil";
- Zotero.Utilities.HTTP.doGet(string, function(text) {
- var trans=Zotero.loadTranslator("import");
- trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
- trans.setString(text);
- trans.translate();
- Zotero.done();
- });
- Zotero.wait();
- }
- var singlereg=new RegExp("http://ask\.bibsys\.no/ask/action/show");
- if(singlereg.test(url)) {
- var urlstring="http://ask.bibsys.no/ask/action/show";
- var data="visningsformat=fortekst_m_eksemplarer&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil";
- Zotero.Utilities.HTTP.doPost(urlstring, data, function(text) {
- var trans=Zotero.loadTranslator("import");
- trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
- trans.setString(text);
- trans.translate();
- Zotero.done();
- });
- Zotero.wait();
- }
-}
\ No newline at end of file
diff --git a/translators/BIUM.js b/translators/BIUM.js
deleted file mode 100644
index e4b25444b2..0000000000
--- a/translators/BIUM.js
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "translatorID":"cae7d3ec-bc8d-465b-974f-8b0dcfe24290",
- "translatorType":4,
- "label":"BIUM",
- "creator":"Michael Berkowitz",
- "target":"http://hip.bium.univ-paris5.fr/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2009-01-08 08:19:07"
-}
-
-function detectWeb(doc, url) {
- if (doc.evaluate('//td/a[@class="itemTitle"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "multiple";
- } else if (doc.evaluate('//td[1]/span[@class="uportal-channel-strong"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- return "book";
- }
-}
-
-function makeMARCurl(link, rsId, rrsId, query) {
- return 'http://hip.bium.univ-paris5.fr/uPortal/Print?link=' + link + '&xslFileName=com/dynix/hip/uportal/channels/standard/FullMarc.xsl&F=/searching/getmarcdata&responseSessionId=' + rsId + '&responseResultSetId=' + rrsId + '&searchGroup=BIUM-13&query=' + query + '&searchTargets=16&locale=fr_FR';
-}
-
-function doWeb(doc, url) {
- var n = doc.documentElement.namespaceURI;
- var ns = n ? function(prefix) {
- if (prefix == 'x') return n; else return null;
- } : null;
-
- var books = new Array();
- if (detectWeb(doc, url) == "multiple") {
- var items = new Object();
- var links = doc.evaluate('//a[@class="itemTitle"]', doc, ns, XPathResult.ANY_TYPE, null);
- var link;
- while (link = links.iterateNext()) {
- items[link.href] = Zotero.Utilities.trimInternal(link.textContent);
- }
- items = Zotero.selectItems(items);
- var rsId = doc.evaluate('//input[@name="responseSessionId"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().value;
- var rrsId = doc.evaluate('//input[@name="responseResultSetId"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().value;
- var query = doc.evaluate('//input[@name="query"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().value;
- var linkRE = new RegExp("'([^']+)'", "g");
- for (var i in items) {
- var link = linkRE.exec(i)[1];
- Zotero.debug(link);
- books.push(makeMARCurl(link, rsId, rrsId, query));
- }
- } else {
- var link = url.match(/link=([^&]+)/)[1];
- var rsId = url.match(/responseSessionId=([^&]+)/)[1];
- var rrsId = url.match(/responseResultSetId=([^&]+)/)[1];
- var query = url.match(/query=([^&]+)/)[1];
- books = [makeMARCurl(link, rsId, rrsId, query)];
- }
- var translator = Zotero.loadTranslator("import");
- translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
- var marc = translator.getTranslatorObject();
- Zotero.Utilities.processDocuments(books, function(doc) {
- var rows = doc.evaluate('//center/table/tbody/tr', doc, ns, XPathResult.ANY_TYPE, null);
- var row;
- var record = new marc.record();
- while (row = rows.iterateNext()) {
- var field = Zotero.Utilities.trimInternal(doc.evaluate('./td[1]', row, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent.replace(":", ""));
- if (field) {
- var value = doc.evaluate('./td[2]', row, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent;
- if (value.split(/\n/)[1]) value = Zotero.Utilities.trimInternal(value.split(/\n/)[1]);
- if (field == "LDR") {
- record.leader = value;
- } else if (field != "FMT") {
- value = value.replace(/\¤([a-z])/g, marc.subfieldDelimiter+ "$1");
- var code = field.substring(0, 3);
- var ind = "";
- if (field.length > 3) {
- ind = field[3];
- if (field.length > 4) {
- ind += field[4];
- }
- }
- record.addField(code, ind, value);
- }
- }
- }
- var item = new Zotero.Item();
- record.translate(item);
-
- var oldauthors = item.creators;
- var newauthors = new Array();
- for each (var aut in oldauthors) {
- if (aut.lastName.match(/^[A-Z][^\s]+\s[^\s]+/)) newauthors.push(Zotero.Utilities.cleanAuthor(aut.lastName.match(/^[A-Z][^\s]+\s[^\s]+/)[0].replace(/^([^\s]+)\s+(.*)$/, "$2 $1"), "author"));
- }
- item.creators = newauthors;
- item.complete();
- }, function() {Zotero.done();});
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/BOCC.js b/translators/BOCC.js
deleted file mode 100644
index 25016406c7..0000000000
--- a/translators/BOCC.js
+++ /dev/null
@@ -1,212 +0,0 @@
-{
- "translatorID":"ecd1b7c6-8d31-4056-8c15-1807b2489254",
- "label":"BOCC",
- "creator":"José Antonio Meira da Rocha",
- "target":"^http:\\/\\/[^/]*bocc[^/]*/(?:_listas|_esp)",
- "minVersion":"1.0",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "translatorType":4,
- "lastUpdated":"2010-09-20 18:12:01"
-}
-
-/* Translator for Biblioteca Online de Ciências da Comunicação (BOCC,
-Communication Science Online Library, http://www.bocc.ubi.pt/) */
-
-/*
- BOCC Translator - Parses BOCC indexes and creates Zotero-based metadata.
- Copyright (C) 2010 José Antonio Meira da Rocha
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-// Standard Zotero function
-function detectWeb(doc, url) {
- if (doc.evaluate("//table[@class='ag']/tbody/tr[1]/td[@class='agenda']", doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
- Zotero.debug("multiple");
- return "multiple";
- }
-}
-///////////////////////////////////////
-function getAuthors(newItem, itemsAutors) {
- //Formatting and saving "Author" field
- if (items["AUTOR"]) {
- var author = itemsAutors["AUTOR"];
- if (author.match(";")) {
- var authors = author.split(";");
- for (var i in authors) {
- newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[i], "author"));
- }
- } else {
- newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
- }
- }
-}
-// Standard Zotero translator entry point
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
- var articles = new Array();
- var items = new Object();
- var itemsAutors = new Object();
- var itemDate = new Object();
- var nextTitle;
- var urls = new Array();
- var bloco;
- var lines = new Array();
- var resite = /^http:\/\/[^\/]*bocc[^\/]*\/(?:_listas|_esp)/;
- var site = resite.exec(url);
- site = site[0];
- site = site.replace("/_esp", "");
- site = site.replace("/_listas", "");
- Zotero.debug('Site===>'+site+'<===');
- if (detectWeb(doc, url) == "multiple") {
- // Return XPathResult object
- // accessible with .iterateNext() method
- var content = doc.evaluate("//table[@class='ag']/tbody/tr[1]/td[@class='agenda']", doc, nsResolver, XPathResult.ANY_TYPE, null);
- // All articles are in same
- // Get the first
data
- bloco = content.iterateNext().innerHTML;
- lines = bloco.split('
');
- //Zotero.debug('Artigo===>'+lines[0]+'<===');
- ///////////////////////////////////////////////
- // Try get tags
- var tematica = doc.evaluate("//title", doc, nsResolver, XPathResult.ANY_TYPE, null);
- tematica = tematica.iterateNext().textContent;
- //Zotero.debug('===>'+tematica+'<===');
- var isTematica = tematica.match('Temática');
- if (isTematica) {
- // Get tematicas list to build tags list
- var tematicanum;
- var tematicasnums = doc.evaluate('//a[@class="tematica"]/@href', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var tematicasname;
- var tematicasnames = doc.evaluate('//a[@class="tematica"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- var tematicas = new Object();
- while (tematicanum = tematicasnums.iterateNext()) {
- tematicanum = tematicanum.textContent;
- tematicanum = tematicanum.match(/=[\d]+$/)[0];
- tematicanum = tematicanum.replace('=','');
- tematicaname = tematicasnames.iterateNext().textContent;
- tematicas[tematicanum] = tematicaname;
- }
- ////////////////////////////////////////////
- // Get current tematica
- var tagsContent = new Array();
-
-
- tematica = tematica.match(/:\s[\d]*\s-/)[0];
- tematica = tematica.replace(': ','');
- tematica = tematica.replace(' -','');
- tematicaname = tematicas[tematica];
- //Zotero.debug('Tematica ===>'+tematicaname+'<===');
- // Build tags
- if (tematicaname.match(' e ')) {
- tagsContent = tematicaname.split(' e ');
- if (tagsContent[0].match(',')) {
- var temp = tagsContent[0].split(',');
- tagsContent.push(temp[1]);
- tagsContent[0] = temp[0];
- }
- } else {
- tagsContent[0] = tematicaname;
- }
- //for (var i in tagsContent) {
- // Zotero.debug('Tag ===>'+i+'='+tagsContent[i]+'<===');
- //}
- } // if (isTematica)
- /////////////////////////////////////////////
- var title;
- var docurl;
- var autores = new Array();
- var reurl = /href="([^"]+)/ ;
- var reautor= /autor.php[^>]+"agenda">([^<]+)/g ;
- var redate = /(\d\d\d\d$)/g ;
- for (var n in lines) {
- title = Zotero.Utilities.cleanTags(lines[n].split(' ')[0]);
- title = Zotero.Utilities.trimInternal(Zotero.Utilities.trim(title));
- title = Zotero.Utilities.unescapeHTML(title);
- docurl = reurl.exec(lines[n]);
- if (docurl) {
- if (docurl[1].match('autor')) {
- docurl = '';
- } else {
- items[docurl[1]] = title;
- autores = lines[n].match(reautor);
- for(var i in autores){
- autores[i] = autores[i].split('>')[1];
- }
- itemsAutors[docurl[1]] = autores ;
- date = lines[n].match(redate);
- //Zotero.debug('Data===>'+date[0]+'<===');
- itemDate[docurl[1]] = date[0] ;
- }
- }
- }
- //Zotero.debug('URL===>'+docurl[1]+'<===');
- /* Zotero.selectItems()
- * Presents items to select in the select box.
- * Assumes window.arguments[0].dataIn is an object with
- * URLs as keys and descriptions as values
- */
- items = Zotero.selectItems(items);
- for (var n in items) {
- Zotero.debug('Item '+n+' ==>'+items[n]+'<==');
- };
-
- var filetitle;
- var filemime;
- for (var item in items) {
- var newItem = new Zotero.Item("journalArticle");
- newItem.title = items[item];
- newItem.date = itemDate[item];
- newItem.publicationTitle = "Biblioteca Online de Ciências da Comunicação";
- newItem.ISSN = '1646-3137';
- newItem.journalAbbreviation = 'BOCC' ;
- // http://www.bocc.ubi.pt
- newItem.url = site+item.replace("..", "");
- fileurl = site+item.replace("..", "")
- Zotero.debug('Doc ===>'+fileurl+'<===');
- if (fileurl.match('.html$|.htm$|.HTML$|.HTM$')) {
- filetitle = 'Anexo HTML';
- filemime = 'text/html';
- };
- if (fileurl.match('.pdf$|.PDF$')) {
- filetitle = 'Anexo PDF';
- filemime = 'application/pdf';
- };
- Zotero.debug('File title ===>'+filetitle+'<===');
- Zotero.debug('File mime ===>'+filemime+'<===');
- newItem.attachments.push(
- {url:fileurl, title:filetitle, mimeType:filemime}
- );
- temp = itemsAutors[item];
- for (var i in temp) {
- newItem.creators.push(Zotero.Utilities.cleanAuthor(temp[i], "author"));
- }
- if (isTematica) {
- for (var i = 0; i < tagsContent.length; i++) {
- newItem.tags[i] = tagsContent[i];
- }
- }
- newItem.complete();
- }
- //debug
-
- Zotero.wait();
- }
-}
diff --git a/translators/Berkeley Electronic Press.js b/translators/Berkeley Electronic Press.js
deleted file mode 100644
index 061d124efc..0000000000
--- a/translators/Berkeley Electronic Press.js
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "translatorID":"2a5dc3ed-ee5e-4bfb-baad-36ae007e40ce",
- "translatorType":4,
- "label":"Berkeley Electronic Press",
- "creator":"Michael Berkowitz",
- "target":"http://www.bepress.com/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2009-01-08 08:19:07"
-}
-
-function detectWeb(doc, url) {
- if (url.match("cgi/query.cgi")) {
- return "multiple";
- } else if (url.match(/vol[\d+]\/iss[\d]+/)) {
- return "journalArticle";
- }
-}
-
-var tagMap = {
- journal_title:"publicationTitle",
- title:"title",
- date:"date",
- volume:"volume",
- issue:"issue",
- abstract_html_url:"url",
- doi:"DOI"
-}
-
-function doWeb(doc, url) {
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var articles = new Array();
- if (detectWeb(doc, url) == "multiple") {
- var items = new Object();
- var titles = doc.evaluate('//table[@id="query"]/tbody/tr/td[4]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var next_title;
- while (next_title = titles.iterateNext()) {
- items[next_title.href] = next_title.textContent;
- }
- items = Zotero.selectItems(items);
- for (var i in items) {
- articles.push(i);
- }
- } else {
- articles = [url];
- }
- Zotero.debug(articles);
- Zotero.Utilities.processDocuments(articles, function(newDoc) {
- var metatags = new Object();
- var metas = newDoc.evaluate('//meta[contains(@name, "bepress_citation")]', newDoc, null, XPathResult.ANY_TYPE, null);
- var next_meta;
- while (next_meta = metas.iterateNext()) {
- metatags[next_meta.name.replace("bepress_citation_", "")] = next_meta.content;
- }
- var item = new Zotero.Item("journalArticle");
-
- //regularly mapped tags
- for (var tag in tagMap) {
- if (metatags[tag]) {
- item[tagMap[tag]] = metatags[tag];
- }
- }
-
- //authors
- var authors = metatags['authors'].split(";");
- for each (var author in authors) {
- item.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
- }
-
- //attachments
- item.attachments = [
- {url:item.url, title:item.title, mimeType:"text/html"},
- {url:metatags['pdf_url'], title:"Berkeley Electronic Press Full Text PDF", mimeType:"application/pdf"}
- ];
- item.complete();
- }, function() {Zotero.done();});
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/Berkeley Library Catalog.js b/translators/Berkeley Library Catalog.js
deleted file mode 100644
index a2cac4e46f..0000000000
--- a/translators/Berkeley Library Catalog.js
+++ /dev/null
@@ -1,95 +0,0 @@
-{
- "translatorID":"9c335444-a562-4f88-b291-607e8f46a9bb",
- "translatorType":4,
- "label":"Berkeley Library Catalog",
- "creator":"Simon Kornblith",
- "target":"^https?://[^/]*berkeley.edu[^/]*/WebZ/(?:html/results.html|FETCH)\\?.*sessionid=",
- "minVersion":"1.0.0b3.r1",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2011-01-11 04:31:00"
-}
-
-function detectWeb(doc, url) {
- var resultsRegexp = /\/WebZ\/html\/results.html/i
- if(resultsRegexp.test(url)) {
- return "multiple";
- } else {
- return "book";
- }
-}
-
-function reformURL(url) {
- return url.replace(/fmtclass=[^&]*/, "")+":fmtclass=marc";
-}
-
-function doWeb(doc, url) {
- var resultsRegexp = /\/WebZ\/html\/results.html/i
-
- if(resultsRegexp.test(url)) {
- var items = Zotero.Utilities.getItemArray(doc, doc, "/WebZ/FETCH", "^[0-9]*$");
- items = Zotero.selectItems(items);
-
- if(!items) {
- return true;
- }
-
- var urls = new Array();
- for(var i in items) {
- urls.push(reformURL(i));
- }
- } else {
- var urls = [reformURL(url)];
- }
-
- var translator = Zotero.loadTranslator("import");
- translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
- var marc = translator.getTranslatorObject();
-
- Zotero.Utilities.processDocuments(urls, function(newDoc) {
- var uri = newDoc.location.href;
-
- var namespace = newDoc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var elmts = newDoc.evaluate('//table/tbody/tr[@valign="top"]',
- newDoc, nsResolver, XPathResult.ANY_TYPE, null);
-
- var record = new marc.record();
- while(elmt = elmts.iterateNext()) {
- var field = Zotero.Utilities.superCleanString(newDoc.evaluate('./TD[1]/text()[1]', elmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
- var value = newDoc.evaluate('./TD[2]/text()[1]', elmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue;
- // remove spacing
- value = value.replace(/^\s+/, "");
- value = value.replace(/\s+$/, "");
- if(field == 0) {
- record.leader = "00000"+value;
- } else {
- var ind = value[3]+value[5];
- if (value.match(/^\d{1,2}\s{3}/)) value = Zotero.Utilities.trimInternal(value.replace(/^\d{1,2}\s{3}/, ""));
- value = value.replace(/\$([a-z0-9]) /g, marc.subfieldDelimiter+"$1");
- if(value[0] != marc.subfieldDelimiter) {
- value = marc.subfieldDelimiter+"a"+value;
- }
- record.addField(field, ind, value);
- }
- }
-
- var newItem = new Zotero.Item();
- record.translate(newItem);
- var oldTags = newItem.tags;
- var newTags = new Array();
- for each (var tag in oldTags) {
- if (newTags.indexOf(tag) == -1) newTags.push(tag)
- }
- newItem.tags = newTags;
- newItem.repository = "Berkeley Library Catalog";
-
- newItem.complete();
- }, function() { Zotero.done(); }, null);
-
- Zotero.wait();
-}
\ No newline at end of file
diff --git a/translators/Bezneng Gajit.js b/translators/Bezneng Gajit.js
deleted file mode 100644
index ff785eae52..0000000000
--- a/translators/Bezneng Gajit.js
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "translatorID": "7500180d-ca99-4ef7-a9a9-3e58bba91d28",
- "label": "Безнең гәҗит",
- "creator": "Avram Lyon",
- "target": "^https?://(?:www\\.)?beznen\\.ru",
- "minVersion": "1.0",
- "maxVersion": "",
- "priority": 100,
- "inRepository": true,
- "translatorType": 4,
- "lastUpdated": "2011-05-26 13:03:49"
-}
-
-/* FW LINE 46:127318f30c1d */ function flatten(c){var b=new Array();for(var d in c){var e=c[d];if(e instanceof Array){b=b.concat(flatten(e))}else{b.push(e)}}return b}var FW={_scrapers:new Array()};FW._Base=function(){this.callHook=function(b,c,e,a){if(typeof this["hooks"]==="object"){var d=this["hooks"][b];if(typeof d==="function"){d(c,e,a)}}};this.evaluateThing=function(f,e,c){var b=typeof f;if(b==="string"){return f}else{if(b==="object"){if(f instanceof Array){var d=this.evaluateThing;var a=f.map(function(g){return d(g,e,c)});return flatten(a)}else{return f.evaluate(e,c)}}else{if(b==="function"){return f(e,c)}else{return undefined}}}}};FW.Scraper=function(a){FW._scrapers.push(new FW._Scraper(a))};FW._Scraper=function(a){for(x in a){this[x]=a[x]}this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"];this._makeAttachments=function(q,b,f,s){if(f instanceof Array){f.forEach(function(k){this._makeAttachments(q,b,k,s)},this)}else{if(typeof f==="object"){var p=f.urls||f.url;var m=f.types||f.type;var e=f.titles||f.title;var h=this.evaluateThing(p,q,b);var o=this.evaluateThing(e,q,b);var r=this.evaluateThing(m,q,b);var l=(r instanceof Array);var n=(o instanceof Array);if(!(h instanceof Array)){h=[h]}for(var j in h){var c=h[j];var g;var d;if(l){g=r[j]}else{g=r}if(n){d=o[j]}else{d=o}s.attachments.push({url:c,title:d,type:g})}}}};this.makeItems=function(o,b,m,c,l){var q=new Zotero.Item(this.itemType);q.url=b;for(var h in this._singleFieldNames){var n=this._singleFieldNames[h];if(this[n]){var g=this.evaluateThing(this[n],o,b);if(g instanceof Array){q[n]=g[0]}else{q[n]=g}}}var r=["creators","tags"];for(var f in r){var p=r[f];var d=this.evaluateThing(this[p],o,b);if(d){for(var e in d){q[p].push(d[e])}}}this._makeAttachments(o,b,this["attachments"],q);c(q,this,o,b);l([q])}};FW._Scraper.prototype=new FW._Base;FW.MultiScraper=function(a){FW._scrapers.push(new FW._MultiScraper(a))};FW._MultiScraper=function(a){for(x in a){this[x]=a[x]}this._mkSelectItems=function(e,d){var b=new Object;for(var c in e){b[d[c]]=e[c]}return b};this._selectItems=function(d,c,e){var b=new Array();Zotero.selectItems(this._mkSelectItems(d,c),function(f){for(var g in f){b.push(g)}e(b)})};this._mkAttachments=function(g,d,f){var b=this.evaluateThing(this["attachments"],g,d);var c=new Object();if(b){for(var e in f){c[f[e]]=b[e]}}return c};this._makeChoices=function(f,p,c,d,h){if(f instanceof Array){f.forEach(function(k){this._makeTitlesUrls(k,p,c,d,h)},this)}else{if(typeof f==="object"){var m=f.urls||f.url;var e=f.titles||f.title;var n=this.evaluateThing(m,p,c);var j=this.evaluateThing(e,p,c);var l=(j instanceof Array);if(!(n instanceof Array)){n=[n]}for(var g in n){var b=n[g];var o;if(l){o=j[g]}else{o=j}h.push(b);d.push(o)}}}};this.makeItems=function(j,b,g,c,f){Zotero.debug("Entering MultiScraper.makeItems");if(this.beforeFilter){var k=this.beforeFilter(j,b);if(k!=b){this.makeItems(j,k,g,c,f);return}}var e=[];var h=[];this._makeChoices(this["choices"],j,b,e,h);var d=this._mkAttachments(j,b,h);this._selectItems(e,h,function(m){if(!m){f([])}else{var l=[];var n=this.itemTrans;Zotero.Utilities.processDocuments(m,function(q){var p=q.documentURI;var o=n;if(o===undefined){o=FW.getScraper(q,p)}if(o===undefined){}else{o.makeItems(q,p,d[p],function(r){l.push(r);c(r,o,q,p)},function(){})}},function(){f(l)})}})}};FW._MultiScraper.prototype=new FW._Base;FW.DelegateTranslator=function(a){return new FW._DelegateTranslator(a)};FW._DelegateTranslator=function(a){for(x in a){this[x]=a[x]}this._translator=Zotero.loadTranslator(this.translatorType);this._translator.setTranslator(this.translatorId);this.makeItems=function(g,d,b,f,c){Zotero.debug("Entering DelegateTranslator.makeItems");var e;Zotero.Utilities.HTTP.doGet(d,function(h){this._translator.setHandler("itemDone",function(k,j){e=j;if(b){j.attachments=b}});this._translator.setString(h);this._translator.translate();f(e)},function(){c([e])})}};FW.DelegateTranslator.prototype=new FW._Scraper;FW._StringMagic=function(){this._filters=new Array();this.addFilter=function(a){this._filters.push(a);return this};this.split=function(a){return this.addFilter(function(b){return b.split(a).filter(function(c){return(c!="")})})};this.replace=function(c,b,a){return this.addFilter(function(d){if(d.match(c)){return d.replace(c,b,a)}else{return d}})};this.prepend=function(a){return this.replace(/^/,a)};this.append=function(a){return this.replace(/$/,a)};this.remove=function(b,a){return this.replace(b,"",a)};this.trim=function(){return this.addFilter(function(a){return Zotero.Utilities.trim(a)})};this.trimInternal=function(){return this.addFilter(function(a){return Zotero.Utilities.trimInternal(a)})};this.match=function(a,b){if(!b){b=0}return this.addFilter(function(d){var c=d.match(a);if(c===undefined||c===null){return undefined}else{return c[b]}})};this.cleanAuthor=function(b,a){return this.addFilter(function(c){return Zotero.Utilities.cleanAuthor(c,b,a)})};this.key=function(a){return this.addFilter(function(b){return b[a]})};this.capitalizeTitle=function(){return this.addFilter(function(a){return Zotero.Utilities.capitalizeTitle(a)})};this.unescapeHTML=function(){return this.addFilter(function(a){return Zotero.Utilities.unescapeHTML(a)})};this.unescape=function(){return this.addFilter(function(a){return unescape(a)})};this._applyFilters=function(c,e){for(i in this._filters){c=flatten(c);c=c.filter(function(a){return((a!==undefined)&&(a!==null))});for(var d=0;d0&&a[0]){return f}}}return undefined};FW.getScraper=function(b,a){var c=FW.detectWeb(b,a);return FW._scrapers.filter(function(d){return(d.evaluateThing(d.itemType,b,a)==c)&&(d.evaluateThing(d.detect,b,a))})[0]};FW.doWeb=function(c,a){Zotero.debug("Entering FW.doWeb");var b=FW.getScraper(c,a);b.makeItems(c,a,[],function(f,e,g,d){e.callHook("scraperDone",f,g,d);if(!f.title){f.title=""}f.complete()},function(){Zotero.done()});Zotero.wait();Zotero.debug("Leaving FW.doWeb")};
-
-/*
- Bezneng Gajit Translator
- Copyright (C) 2011 Avram Lyon, ajlyon@gmail.com
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
- */
-
-function detectWeb(doc, url) { return FW.detectWeb(doc, url); }
-function doWeb(doc, url) { return FW.doWeb(doc, url); }
-
-/** Articles */
-FW.Scraper({
-itemType : 'newspaperArticle',
-detect : FW.Url().match(/\/basma\/[0-9-]+\/\w+/),
-title : FW.Xpath('//h1[@class="entry-title"]').text().trim(),
-attachments : [{ url: FW.Url(),
- title: "Безнең гәҗит Snapshot",
- type: "text/html" }],
-creators : FW.Xpath('//div[@class="entry-meta"]/p[@class="authors"]//a')
- .text().replace(/^.*Килгән\sхатлардан.*$/, "").cleanAuthor("author"),
-date : FW.Xpath('//div[@class="entry-meta"]/p[@class="post-category"]').text().replace(/(\d{4}),\s№\s?\d+\s\((.*)\)/,"$2 $1"),
-issue : FW.Xpath('//div[@class="entry-meta"]/p[@class="post-category"]').text().match(/№\s?(\d+)/,1),
-publicationTitle : "Безнең гәҗит",
-language : "татарча",
-hooks : { "scraperDone": function (item,doc, url) {
- for (i in item.creators) {
- if (item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
- item.creators[i].lastName = Zotero.Utilities.capitalizeTitle(
- item.creators[i].lastName.toLowerCase(),true);
- }
- }}
-}
-});
-
-FW.MultiScraper({
-itemType : 'multiple',
-detect : FW.Url().match(/\/rubric\/|\?s=/),
-choices : {
- titles : FW.Xpath('//h2[@class="entry-title"]/a').text().trim(),
- urls : FW.Xpath('//h2[@class="entry-title"]/a').key("href")
-}
-});
diff --git a/translators/BibTeX.js b/translators/BibTeX.js
deleted file mode 100644
index ba2cb4808a..0000000000
--- a/translators/BibTeX.js
+++ /dev/null
@@ -1,2388 +0,0 @@
-{
- "translatorID": "9cb70025-a888-4a29-a210-93ec52da40d4",
- "label": "BibTeX",
- "creator": "Simon Kornblith and Richard Karnesky",
- "target": "bib",
- "minVersion": "2.1.9",
- "maxVersion": "",
- "priority": 200,
- "displayOptions": {
- "exportCharset": "UTF-8",
- "exportNotes": true,
- "exportFileData": false
- },
- "inRepository": true,
- "translatorType": 3,
- "browserSupport": "gcs",
- "lastUpdated": "2011-08-16 15:07:38"
-}
-
-function detectImport() {
- var maxChars = 1048576; // 1MB
-
- var inComment = false;
- var block = "";
- var buffer = "";
- var chr = "";
- var charsRead = 0;
-
- var re = /^\s*@[a-zA-Z]+[\(\{]/;
- while((buffer = Zotero.read(4096)) && charsRead < maxChars) {
- Zotero.debug("Scanning " + buffer.length + " characters for BibTeX");
- charsRead += buffer.length;
- for (var i=0; i", // TRIANGULAR BULLET
- "\u2024":".", // ONE DOT LEADER
- "\u2025":"..", // TWO DOT LEADER
- "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS
- "\u2027":"-", // HYPHENATION POINT
- "\u202F":" ", // NARROW NO-BREAK SPACE
- "\u2030":"{\\textperthousand}", // PER MILLE SIGN
- "\u2032":"'", // PRIME
- "\u2033":"'", // DOUBLE PRIME
- "\u2034":"'''", // TRIPLE PRIME
- "\u2035":"`", // REVERSED PRIME
- "\u2036":"``", // REVERSED DOUBLE PRIME
- "\u2037":"```", // REVERSED TRIPLE PRIME
- "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- "\u203C":"!!", // DOUBLE EXCLAMATION MARK
- "\u203E":"-", // OVERLINE
- "\u2043":"-", // HYPHEN BULLET
- "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH
- "\u2048":"?!", // QUESTION EXCLAMATION MARK
- "\u2049":"!?", // EXCLAMATION QUESTION MARK
- "\u204A":"7", // TIRONIAN SIGN ET
- "\u2070":"$^{0}$", // SUPERSCRIPT ZERO
- "\u2074":"$^{4}$", // SUPERSCRIPT FOUR
- "\u2075":"$^{5}$", // SUPERSCRIPT FIVE
- "\u2076":"$^{6}$", // SUPERSCRIPT SIX
- "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN
- "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT
- "\u2079":"$^{9}$", // SUPERSCRIPT NINE
- "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN
- "\u207B":"$^{-}$", // SUPERSCRIPT MINUS
- "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN
- "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS
- "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS
- "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N
- "\u2080":"$_{0}$", // SUBSCRIPT ZERO
- "\u2081":"$_{1}$", // SUBSCRIPT ONE
- "\u2082":"$_{2}$", // SUBSCRIPT TWO
- "\u2083":"$_{3}$", // SUBSCRIPT THREE
- "\u2084":"$_{4}$", // SUBSCRIPT FOUR
- "\u2085":"$_{5}$", // SUBSCRIPT FIVE
- "\u2086":"$_{6}$", // SUBSCRIPT SIX
- "\u2087":"$_{7}$", // SUBSCRIPT SEVEN
- "\u2088":"$_{8}$", // SUBSCRIPT EIGHT
- "\u2089":"$_{9}$", // SUBSCRIPT NINE
- "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN
- "\u208B":"$_{-}$", // SUBSCRIPT MINUS
- "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN
- "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS
- "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS
- "\u20AC":"{\\texteuro}", // EURO SIGN
- "\u2100":"a/c", // ACCOUNT OF
- "\u2101":"a/s", // ADDRESSED TO THE SUBJECT
- "\u2103":"{\\textcelsius}", // DEGREE CELSIUS
- "\u2105":"c/o", // CARE OF
- "\u2106":"c/u", // CADA UNA
- "\u2109":"F", // DEGREE FAHRENHEIT
- "\u2113":"l", // SCRIPT SMALL L
- "\u2116":"{\\textnumero}", // NUMERO SIGN
- "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT
- "\u2120":"{\\textservicemark}", // SERVICE MARK
- "\u2121":"TEL", // TELEPHONE SIGN
- "\u2122":"{\\texttrademark}", // TRADE MARK SIGN
- "\u2126":"{\\textohm}", // OHM SIGN
- "\u212A":"K", // KELVIN SIGN
- "\u212B":"A", // ANGSTROM SIGN
- "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL
- "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD
- "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS
- "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH
- "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS
- "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS
- "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS
- "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH
- "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS
- "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH
- "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS
- "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS
- "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS
- "\u215F":" 1/", // FRACTION NUMERATOR ONE
- "\u2160":"I", // ROMAN NUMERAL ONE
- "\u2161":"II", // ROMAN NUMERAL TWO
- "\u2162":"III", // ROMAN NUMERAL THREE
- "\u2163":"IV", // ROMAN NUMERAL FOUR
- "\u2164":"V", // ROMAN NUMERAL FIVE
- "\u2165":"VI", // ROMAN NUMERAL SIX
- "\u2166":"VII", // ROMAN NUMERAL SEVEN
- "\u2167":"VIII", // ROMAN NUMERAL EIGHT
- "\u2168":"IX", // ROMAN NUMERAL NINE
- "\u2169":"X", // ROMAN NUMERAL TEN
- "\u216A":"XI", // ROMAN NUMERAL ELEVEN
- "\u216B":"XII", // ROMAN NUMERAL TWELVE
- "\u216C":"L", // ROMAN NUMERAL FIFTY
- "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED
- "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED
- "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND
- "\u2170":"i", // SMALL ROMAN NUMERAL ONE
- "\u2171":"ii", // SMALL ROMAN NUMERAL TWO
- "\u2172":"iii", // SMALL ROMAN NUMERAL THREE
- "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR
- "\u2174":"v", // SMALL ROMAN NUMERAL FIVE
- "\u2175":"vi", // SMALL ROMAN NUMERAL SIX
- "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN
- "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT
- "\u2178":"ix", // SMALL ROMAN NUMERAL NINE
- "\u2179":"x", // SMALL ROMAN NUMERAL TEN
- "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN
- "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE
- "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY
- "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED
- "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED
- "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND
- "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW
- "\u2191":"{\\textuparrow}", // UPWARDS ARROW
- "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW
- "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW
- "\u2194":"<->", // LEFT RIGHT ARROW
- "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW
- "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW
- "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW
- "\u2212":"-", // MINUS SIGN
- "\u2215":"/", // DIVISION SLASH
- "\u2216":"\\", // SET MINUS
- "\u2217":"*", // ASTERISK OPERATOR
- "\u2218":"o", // RING OPERATOR
- "\u2219":".", // BULLET OPERATOR
- "\u221E":"$\\infty$", // INFINITY
- "\u2223":"|", // DIVIDES
- "\u2225":"||", // PARALLEL TO
- "\u2236":":", // RATIO
- "\u223C":"\\~{}", // TILDE OPERATOR
- "\u2260":"/=", // NOT EQUAL TO
- "\u2261":"=", // IDENTICAL TO
- "\u2264":"<=", // LESS-THAN OR EQUAL TO
- "\u2265":">=", // GREATER-THAN OR EQUAL TO
- "\u226A":"<<", // MUCH LESS-THAN
- "\u226B":">>", // MUCH GREATER-THAN
- "\u2295":"(+)", // CIRCLED PLUS
- "\u2296":"(-)", // CIRCLED MINUS
- "\u2297":"(x)", // CIRCLED TIMES
- "\u2298":"(/)", // CIRCLED DIVISION SLASH
- "\u22A2":"|-", // RIGHT TACK
- "\u22A3":"-|", // LEFT TACK
- "\u22A6":"|-", // ASSERTION
- "\u22A7":"|=", // MODELS
- "\u22A8":"|=", // TRUE
- "\u22A9":"||-", // FORCES
- "\u22C5":".", // DOT OPERATOR
- "\u22C6":"*", // STAR OPERATOR
- "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO
- "\u22D8":"<<<", // VERY MUCH LESS-THAN
- "\u22D9":">>>", // VERY MUCH GREATER-THAN
- "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET
- "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET
- "\u2400":"NUL", // SYMBOL FOR NULL
- "\u2401":"SOH", // SYMBOL FOR START OF HEADING
- "\u2402":"STX", // SYMBOL FOR START OF TEXT
- "\u2403":"ETX", // SYMBOL FOR END OF TEXT
- "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION
- "\u2405":"ENQ", // SYMBOL FOR ENQUIRY
- "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE
- "\u2407":"BEL", // SYMBOL FOR BELL
- "\u2408":"BS", // SYMBOL FOR BACKSPACE
- "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION
- "\u240A":"LF", // SYMBOL FOR LINE FEED
- "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION
- "\u240C":"FF", // SYMBOL FOR FORM FEED
- "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN
- "\u240E":"SO", // SYMBOL FOR SHIFT OUT
- "\u240F":"SI", // SYMBOL FOR SHIFT IN
- "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE
- "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE
- "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO
- "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE
- "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR
- "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE
- "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE
- "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK
- "\u2418":"CAN", // SYMBOL FOR CANCEL
- "\u2419":"EM", // SYMBOL FOR END OF MEDIUM
- "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE
- "\u241B":"ESC", // SYMBOL FOR ESCAPE
- "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR
- "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR
- "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR
- "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR
- "\u2420":"SP", // SYMBOL FOR SPACE
- "\u2421":"DEL", // SYMBOL FOR DELETE
- "\u2423":"{\\textvisiblespace}", // OPEN BOX
- "\u2424":"NL", // SYMBOL FOR NEWLINE
- "\u2425":"///", // SYMBOL FOR DELETE FORM TWO
- "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO
- "\u2460":"(1)", // CIRCLED DIGIT ONE
- "\u2461":"(2)", // CIRCLED DIGIT TWO
- "\u2462":"(3)", // CIRCLED DIGIT THREE
- "\u2463":"(4)", // CIRCLED DIGIT FOUR
- "\u2464":"(5)", // CIRCLED DIGIT FIVE
- "\u2465":"(6)", // CIRCLED DIGIT SIX
- "\u2466":"(7)", // CIRCLED DIGIT SEVEN
- "\u2467":"(8)", // CIRCLED DIGIT EIGHT
- "\u2468":"(9)", // CIRCLED DIGIT NINE
- "\u2469":"(10)", // CIRCLED NUMBER TEN
- "\u246A":"(11)", // CIRCLED NUMBER ELEVEN
- "\u246B":"(12)", // CIRCLED NUMBER TWELVE
- "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN
- "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN
- "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN
- "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN
- "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN
- "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN
- "\u2472":"(19)", // CIRCLED NUMBER NINETEEN
- "\u2473":"(20)", // CIRCLED NUMBER TWENTY
- "\u2474":"(1)", // PARENTHESIZED DIGIT ONE
- "\u2475":"(2)", // PARENTHESIZED DIGIT TWO
- "\u2476":"(3)", // PARENTHESIZED DIGIT THREE
- "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR
- "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE
- "\u2479":"(6)", // PARENTHESIZED DIGIT SIX
- "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN
- "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT
- "\u247C":"(9)", // PARENTHESIZED DIGIT NINE
- "\u247D":"(10)", // PARENTHESIZED NUMBER TEN
- "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN
- "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE
- "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN
- "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN
- "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN
- "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN
- "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN
- "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN
- "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN
- "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY
- "\u2488":"1.", // DIGIT ONE FULL STOP
- "\u2489":"2.", // DIGIT TWO FULL STOP
- "\u248A":"3.", // DIGIT THREE FULL STOP
- "\u248B":"4.", // DIGIT FOUR FULL STOP
- "\u248C":"5.", // DIGIT FIVE FULL STOP
- "\u248D":"6.", // DIGIT SIX FULL STOP
- "\u248E":"7.", // DIGIT SEVEN FULL STOP
- "\u248F":"8.", // DIGIT EIGHT FULL STOP
- "\u2490":"9.", // DIGIT NINE FULL STOP
- "\u2491":"10.", // NUMBER TEN FULL STOP
- "\u2492":"11.", // NUMBER ELEVEN FULL STOP
- "\u2493":"12.", // NUMBER TWELVE FULL STOP
- "\u2494":"13.", // NUMBER THIRTEEN FULL STOP
- "\u2495":"14.", // NUMBER FOURTEEN FULL STOP
- "\u2496":"15.", // NUMBER FIFTEEN FULL STOP
- "\u2497":"16.", // NUMBER SIXTEEN FULL STOP
- "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP
- "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP
- "\u249A":"19.", // NUMBER NINETEEN FULL STOP
- "\u249B":"20.", // NUMBER TWENTY FULL STOP
- "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A
- "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B
- "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C
- "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D
- "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E
- "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F
- "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G
- "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H
- "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I
- "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J
- "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K
- "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L
- "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M
- "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N
- "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O
- "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P
- "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q
- "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R
- "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S
- "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T
- "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U
- "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V
- "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W
- "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X
- "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y
- "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z
- "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A
- "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B
- "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C
- "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D
- "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E
- "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F
- "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G
- "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H
- "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I
- "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J
- "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K
- "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L
- "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M
- "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N
- "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O
- "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P
- "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q
- "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R
- "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S
- "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T
- "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U
- "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V
- "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W
- "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X
- "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y
- "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z
- "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A
- "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B
- "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C
- "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D
- "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E
- "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F
- "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G
- "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H
- "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I
- "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J
- "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K
- "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L
- "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M
- "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N
- "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O
- "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P
- "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q
- "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R
- "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S
- "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T
- "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U
- "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V
- "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W
- "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X
- "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y
- "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z
- "\u24EA":"(0)", // CIRCLED DIGIT ZERO
- "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL
- "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL
- "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL
- "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL
- "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
- "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
- "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
- "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
- "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
- "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
- "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
- "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
- "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT
- "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
- "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
- "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT
- "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT
- "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
- "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
- "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT
- "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT
- "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
- "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
- "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT
- "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT
- "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY
- "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT
- "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT
- "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
- "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
- "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
- "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
- "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
- "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
- "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT
- "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT
- "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
- "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
- "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
- "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
- "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
- "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
- "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT
- "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
- "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
- "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
- "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
- "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
- "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
- "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
- "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL
- "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
- "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
- "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
- "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
- "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
- "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
- "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL
- "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
- "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
- "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
- "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
- "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
- "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
- "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
- "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
- "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
- "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
- "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
- "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
- "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
- "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
- "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
- "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
- "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
- "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
- "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
- "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL
- "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL
- "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
- "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
- "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT
- "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
- "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
- "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT
- "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
- "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
- "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT
- "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
- "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
- "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT
- "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
- "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
- "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
- "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
- "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
- "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
- "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
- "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
- "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
- "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
- "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
- "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
- "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
- "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
- "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
- "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
- "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT
- "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT
- "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT
- "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
- "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
- "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS
- "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
- "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN
- "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
- "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN
- "\u25CB":"o", // WHITE CIRCLE
- "\u25E6":"{\\textopenbullet}", // WHITE BULLET
- "\u2605":"*", // BLACK STAR
- "\u2606":"*", // WHITE STAR
- "\u2612":"X", // BALLOT BOX WITH X
- "\u2613":"X", // SALTIRE
- "\u2639":":-(", // WHITE FROWNING FACE
- "\u263A":":-)", // WHITE SMILING FACE
- "\u263B":"(-:", // BLACK SMILING FACE
- "\u266D":"b", // MUSIC FLAT SIGN
- "\u266F":"$\\#$", // MUSIC SHARP SIGN
- "\u2701":"$\\%<$", // UPPER BLADE SCISSORS
- "\u2702":"$\\%<$", // BLACK SCISSORS
- "\u2703":"$\\%<$", // LOWER BLADE SCISSORS
- "\u2704":"$\\%<$", // WHITE SCISSORS
- "\u270C":"V", // VICTORY HAND
- "\u2713":"v", // CHECK MARK
- "\u2714":"V", // HEAVY CHECK MARK
- "\u2715":"x", // MULTIPLICATION X
- "\u2716":"x", // HEAVY MULTIPLICATION X
- "\u2717":"X", // BALLOT X
- "\u2718":"X", // HEAVY BALLOT X
- "\u2719":"+", // OUTLINED GREEK CROSS
- "\u271A":"+", // HEAVY GREEK CROSS
- "\u271B":"+", // OPEN CENTRE CROSS
- "\u271C":"+", // HEAVY OPEN CENTRE CROSS
- "\u271D":"+", // LATIN CROSS
- "\u271E":"+", // SHADOWED WHITE LATIN CROSS
- "\u271F":"+", // OUTLINED LATIN CROSS
- "\u2720":"+", // MALTESE CROSS
- "\u2721":"*", // STAR OF DAVID
- "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK
- "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK
- "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK
- "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK
- "\u2726":"+", // BLACK FOUR POINTED STAR
- "\u2727":"+", // WHITE FOUR POINTED STAR
- "\u2729":"*", // STRESS OUTLINED WHITE STAR
- "\u272A":"*", // CIRCLED WHITE STAR
- "\u272B":"*", // OPEN CENTRE BLACK STAR
- "\u272C":"*", // BLACK CENTRE WHITE STAR
- "\u272D":"*", // OUTLINED BLACK STAR
- "\u272E":"*", // HEAVY OUTLINED BLACK STAR
- "\u272F":"*", // PINWHEEL STAR
- "\u2730":"*", // SHADOWED WHITE STAR
- "\u2731":"*", // HEAVY ASTERISK
- "\u2732":"*", // OPEN CENTRE ASTERISK
- "\u2733":"*", // EIGHT SPOKED ASTERISK
- "\u2734":"*", // EIGHT POINTED BLACK STAR
- "\u2735":"*", // EIGHT POINTED PINWHEEL STAR
- "\u2736":"*", // SIX POINTED BLACK STAR
- "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR
- "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
- "\u2739":"*", // TWELVE POINTED BLACK STAR
- "\u273A":"*", // SIXTEEN POINTED ASTERISK
- "\u273B":"*", // TEARDROP-SPOKED ASTERISK
- "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK
- "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK
- "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE
- "\u273F":"*", // BLACK FLORETTE
- "\u2740":"*", // WHITE FLORETTE
- "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE
- "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR
- "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
- "\u2744":"*", // SNOWFLAKE
- "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE
- "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE
- "\u2747":"*", // SPARKLE
- "\u2748":"*", // HEAVY SPARKLE
- "\u2749":"*", // BALLOON-SPOKED ASTERISK
- "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
- "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
- "\uFB00":"ff", // LATIN SMALL LIGATURE FF
- "\uFB01":"fi", // LATIN SMALL LIGATURE FI
- "\uFB02":"fl", // LATIN SMALL LIGATURE FL
- "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI
- "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL
- "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T
- "\uFB06":"st", // LATIN SMALL LIGATURE ST
-/* Derived accented characters */
- "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE
- "\u00C1":"\\'{A}", // LATIN CAPITAL LETTER A WITH ACUTE
- "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE
- "\u00C4":"\\\"{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS
- "\u00C5":"\\r{A}", // LATIN CAPITAL LETTER A WITH RING ABOVE
- "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA
- "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE
- "\u00C9":"\\'{E}", // LATIN CAPITAL LETTER E WITH ACUTE
- "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- "\u00CB":"\\\"{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS
- "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE
- "\u00CD":"\\'{I}", // LATIN CAPITAL LETTER I WITH ACUTE
- "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- "\u00CF":"\\\"{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS
- "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE
- "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE
- "\u00D3":"\\'{O}", // LATIN CAPITAL LETTER O WITH ACUTE
- "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE
- "\u00D6":"\\\"{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS
- "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE
- "\u00DA":"\\'{U}", // LATIN CAPITAL LETTER U WITH ACUTE
- "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- "\u00DC":"\\\"{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS
- "\u00DD":"\\'{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE
- "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE
- "\u00E1":"\\'{a}", // LATIN SMALL LETTER A WITH ACUTE
- "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX
- "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE
- "\u00E4":"\\\"{a}", // LATIN SMALL LETTER A WITH DIAERESIS
- "\u00E5":"\\r{a}", // LATIN SMALL LETTER A WITH RING ABOVE
- "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA
- "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE
- "\u00E9":"\\'{e}", // LATIN SMALL LETTER E WITH ACUTE
- "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX
- "\u00EB":"\\\"{e}", // LATIN SMALL LETTER E WITH DIAERESIS
- "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE
- "\u00ED":"\\'{i}", // LATIN SMALL LETTER I WITH ACUTE
- "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX
- "\u00EF":"\\\"{i}", // LATIN SMALL LETTER I WITH DIAERESIS
- "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE
- "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE
- "\u00F3":"\\'{o}", // LATIN SMALL LETTER O WITH ACUTE
- "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX
- "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE
- "\u00F6":"\\\"{o}", // LATIN SMALL LETTER O WITH DIAERESIS
- "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE
- "\u00FA":"\\'{u}", // LATIN SMALL LETTER U WITH ACUTE
- "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX
- "\u00FC":"\\\"{u}", // LATIN SMALL LETTER U WITH DIAERESIS
- "\u00FD":"\\'{y}", // LATIN SMALL LETTER Y WITH ACUTE
- "\u00FF":"\\\"{y}", // LATIN SMALL LETTER Y WITH DIAERESIS
- "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON
- "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON
- "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE
- "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE
- "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK
- "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK
- "\u0106":"\\'{C}", // LATIN CAPITAL LETTER C WITH ACUTE
- "\u0107":"\\'{c}", // LATIN SMALL LETTER C WITH ACUTE
- "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX
- "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE
- "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE
- "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON
- "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON
- "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON
- "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON
- "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON
- "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON
- "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE
- "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE
- "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE
- "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE
- "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK
- "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK
- "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON
- "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON
- "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX
- "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE
- "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE
- "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE
- "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE
- "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA
- "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA
- "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX
- "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE
- "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE
- "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON
- "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON
- "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE
- "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE
- "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK
- "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK
- "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE
- "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX
- "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA
- "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA
- "\u0139":"\\'{L}", // LATIN CAPITAL LETTER L WITH ACUTE
- "\u013A":"\\'{l}", // LATIN SMALL LETTER L WITH ACUTE
- "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA
- "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA
- "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON
- "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON
- "\u0141":"\\L{}", //LATIN CAPITAL LETTER L WITH STROKE
- "\u0142":"\\l{}", //LATIN SMALL LETTER L WITH STROKE
- "\u0143":"\\'{N}", // LATIN CAPITAL LETTER N WITH ACUTE
- "\u0144":"\\'{n}", // LATIN SMALL LETTER N WITH ACUTE
- "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA
- "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA
- "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON
- "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON
- "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON
- "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON
- "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE
- "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE
- "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
- "\u0154":"\\'{R}", // LATIN CAPITAL LETTER R WITH ACUTE
- "\u0155":"\\'{r}", // LATIN SMALL LETTER R WITH ACUTE
- "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA
- "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA
- "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON
- "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON
- "\u015A":"\\'{S}", // LATIN CAPITAL LETTER S WITH ACUTE
- "\u015B":"\\'{s}", // LATIN SMALL LETTER S WITH ACUTE
- "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX
- "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA
- "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA
- "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON
- "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON
- "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA
- "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA
- "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON
- "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON
- "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE
- "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE
- "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON
- "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON
- "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE
- "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE
- "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
- "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK
- "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK
- "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX
- "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
- "\u0178":"\\\"{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS
- "\u0179":"\\'{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE
- "\u017A":"\\'{z}", // LATIN SMALL LETTER Z WITH ACUTE
- "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE
- "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON
- "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON
- "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON
- "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON
- "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON
- "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON
- "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON
- "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON
- "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON
- "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON
- "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON
- "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON
- "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON
- "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON
- "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK
- "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK
- "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON
- "\u01F4":"\\'{G}", // LATIN CAPITAL LETTER G WITH ACUTE
- "\u01F5":"\\'{g}", // LATIN SMALL LETTER G WITH ACUTE
- "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE
- "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE
- "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW
- "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW
- "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW
- "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW
- "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE
- "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE
- "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW
- "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW
- "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW
- "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW
- "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA
- "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA
- "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE
- "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE
- "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON
- "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON
- "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE
- "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE
- "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW
- "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW
- "\u1E26":"\\\"{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS
- "\u1E27":"\\\"{h}", // LATIN SMALL LETTER H WITH DIAERESIS
- "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA
- "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA
- "\u1E30":"\\'{K}", // LATIN CAPITAL LETTER K WITH ACUTE
- "\u1E31":"\\'{k}", // LATIN SMALL LETTER K WITH ACUTE
- "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW
- "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW
- "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW
- "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW
- "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW
- "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW
- "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW
- "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW
- "\u1E3E":"\\'{M}", // LATIN CAPITAL LETTER M WITH ACUTE
- "\u1E3F":"\\'{m}", // LATIN SMALL LETTER M WITH ACUTE
- "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE
- "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE
- "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW
- "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW
- "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE
- "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE
- "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW
- "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW
- "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW
- "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW
- "\u1E54":"\\'{P}", // LATIN CAPITAL LETTER P WITH ACUTE
- "\u1E55":"\\'{p}", // LATIN SMALL LETTER P WITH ACUTE
- "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE
- "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE
- "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE
- "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE
- "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW
- "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW
- "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW
- "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW
- "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE
- "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE
- "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW
- "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW
- "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE
- "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE
- "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW
- "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW
- "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW
- "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW
- "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE
- "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE
- "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW
- "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW
- "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE
- "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE
- "\u1E82":"\\'{W}", // LATIN CAPITAL LETTER W WITH ACUTE
- "\u1E83":"\\'{w}", // LATIN SMALL LETTER W WITH ACUTE
- "\u1E84":"\\\"{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS
- "\u1E85":"\\\"{w}", // LATIN SMALL LETTER W WITH DIAERESIS
- "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE
- "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE
- "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW
- "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW
- "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE
- "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE
- "\u1E8C":"\\\"{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS
- "\u1E8D":"\\\"{x}", // LATIN SMALL LETTER X WITH DIAERESIS
- "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
- "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE
- "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
- "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW
- "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW
- "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW
- "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW
- "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW
- "\u1E97":"\\\"{t}", // LATIN SMALL LETTER T WITH DIAERESIS
- "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW
- "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW
- "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW
- "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW
- "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE
- "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE
- "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW
- "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW
- "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW
- "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW
- "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW
- "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW
- "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE
- "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE
- "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW
- "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW
- "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE
- "\u1EF9":"\\~{y}" // LATIN SMALL LETTER Y WITH TILDE
-};
-
-/* unfortunately the mapping isn't reversible - hence this second table - sigh! */
-var reversemappingTable = {
- "\\url" : "", // strip 'url'
- "\\href" : "", // strip 'href'
- "{\\textexclamdown}" : "\u00A1", // INVERTED EXCLAMATION MARK
- "{\\textcent}" : "\u00A2", // CENT SIGN
- "{\\textsterling}" : "\u00A3", // POUND SIGN
- "{\\textyen}" : "\u00A5", // YEN SIGN
- "{\\textbrokenbar}" : "\u00A6", // BROKEN BAR
- "{\\textsection}" : "\u00A7", // SECTION SIGN
- "{\\textasciidieresis}" : "\u00A8", // DIAERESIS
- "{\\textcopyright}" : "\u00A9", // COPYRIGHT SIGN
- "{\\textordfeminine}" : "\u00AA", // FEMININE ORDINAL INDICATOR
- "{\\guillemotleft}" : "\u00AB", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- "{\\textlnot}" : "\u00AC", // NOT SIGN
- "{\\textregistered}" : "\u00AE", // REGISTERED SIGN
- "{\\textasciimacron}" : "\u00AF", // MACRON
- "{\\textdegree}" : "\u00B0", // DEGREE SIGN
- "{\\textpm}" : "\u00B1", // PLUS-MINUS SIGN
- "{\\texttwosuperior}" : "\u00B2", // SUPERSCRIPT TWO
- "{\\textthreesuperior}" : "\u00B3", // SUPERSCRIPT THREE
- "{\\textasciiacute}" : "\u00B4", // ACUTE ACCENT
- "{\\textmu}" : "\u00B5", // MICRO SIGN
- "{\\textparagraph}" : "\u00B6", // PILCROW SIGN
- "{\\textperiodcentered}" : "\u00B7", // MIDDLE DOT
- "{\\c\\ }" : "\u00B8", // CEDILLA
- "{\\textonesuperior}" : "\u00B9", // SUPERSCRIPT ONE
- "{\\textordmasculine}" : "\u00BA", // MASCULINE ORDINAL INDICATOR
- "{\\guillemotright}" : "\u00BB", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- "{\\textonequarter}" : "\u00BC", // VULGAR FRACTION ONE QUARTER
- "{\\textonehalf}" : "\u00BD", // VULGAR FRACTION ONE HALF
- "{\\textthreequarters}" : "\u00BE", // VULGAR FRACTION THREE QUARTERS
- "{\\textquestiondown}" : "\u00BF", // INVERTED QUESTION MARK
- "{\\AE}" : "\u00C6", // LATIN CAPITAL LETTER AE
- "{\\DH}" : "\u00D0", // LATIN CAPITAL LETTER ETH
- "{\\texttimes}" : "\u00D7", // MULTIPLICATION SIGN
- "{\\O}" : "\U00D8", // LATIN SMALL LETTER O WITH STROKE
- "{\\TH}" : "\u00DE", // LATIN CAPITAL LETTER THORN
- "{\\ss}" : "\u00DF", // LATIN SMALL LETTER SHARP S
- "{\\ae}" : "\u00E6", // LATIN SMALL LETTER AE
- "{\\dh}" : "\u00F0", // LATIN SMALL LETTER ETH
- "{\\textdiv}" : "\u00F7", // DIVISION SIGN
- "{\\o}" : "\U00F8", // LATIN SMALL LETTER O WITH STROKE
- "{\\th}" : "\u00FE", // LATIN SMALL LETTER THORN
- "{\\i}" : "\u0131", // LATIN SMALL LETTER DOTLESS I
- "'n" : "\u0149", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
- "{\\NG}" : "\u014A", // LATIN CAPITAL LETTER ENG
- "{\\ng}" : "\u014B", // LATIN SMALL LETTER ENG
- "{\\OE}" : "\u0152", // LATIN CAPITAL LIGATURE OE
- "{\\oe}" : "\u0153", // LATIN SMALL LIGATURE OE
- "{\\textasciicircum}" : "\u02C6", // MODIFIER LETTER CIRCUMFLEX ACCENT
-// "\\~{}" : "\u02DC", // SMALL TILDE
- "{\\textacutedbl}" : "\u02DD", // DOUBLE ACUTE ACCENT
- "{\\textendash}" : "\u2013", // EN DASH
- "{\\textemdash}" : "\u2014", // EM DASH
- "---" : "\u2014", // EM DASH
- "--" : "\u2013", // EN DASH
- "{\\textbardbl}" : "\u2016", // DOUBLE VERTICAL LINE
- "{\\textunderscore}" : "\u2017", // DOUBLE LOW LINE
- "{\\textquoteleft}" : "\u2018", // LEFT SINGLE QUOTATION MARK
- "{\\textquoteright}" : "\u2019", // RIGHT SINGLE QUOTATION MARK
- "{\\quotesinglbase}" : "\u201A", // SINGLE LOW-9 QUOTATION MARK
- "{\\textquotedblleft}" : "\u201C", // LEFT DOUBLE QUOTATION MARK
- "{\\textquotedblright}" : "\u201D", // RIGHT DOUBLE QUOTATION MARK
- "{\\quotedblbase}" : "\u201E", // DOUBLE LOW-9 QUOTATION MARK
-// "{\\quotedblbase}" : "\u201F", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
- "{\\textdagger}" : "\u2020", // DAGGER
- "{\\textdaggerdbl}" : "\u2021", // DOUBLE DAGGER
- "{\\textbullet}" : "\u2022", // BULLET
- "{\\textellipsis}" : "\u2026", // HORIZONTAL ELLIPSIS
- "{\\textperthousand}" : "\u2030", // PER MILLE SIGN
- "'''" : "\u2034", // TRIPLE PRIME
- "''" : "\u201D", // RIGHT DOUBLE QUOTATION MARK (could be a double prime)
- "``" : "\u201C", // LEFT DOUBLE QUOTATION MARK (could be a reversed double prime)
- "```" : "\u2037", // REVERSED TRIPLE PRIME
- "{\\guilsinglleft}" : "\u2039", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- "{\\guilsinglright}" : "\u203A", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- "!!" : "\u203C", // DOUBLE EXCLAMATION MARK
- "{\\textfractionsolidus}" : "\u2044", // FRACTION SLASH
- "?!" : "\u2048", // QUESTION EXCLAMATION MARK
- "!?" : "\u2049", // EXCLAMATION QUESTION MARK
- "$^{0}$" : "\u2070", // SUPERSCRIPT ZERO
- "$^{4}$" : "\u2074", // SUPERSCRIPT FOUR
- "$^{5}$" : "\u2075", // SUPERSCRIPT FIVE
- "$^{6}$" : "\u2076", // SUPERSCRIPT SIX
- "$^{7}$" : "\u2077", // SUPERSCRIPT SEVEN
- "$^{8}$" : "\u2078", // SUPERSCRIPT EIGHT
- "$^{9}$" : "\u2079", // SUPERSCRIPT NINE
- "$^{+}$" : "\u207A", // SUPERSCRIPT PLUS SIGN
- "$^{-}$" : "\u207B", // SUPERSCRIPT MINUS
- "$^{=}$" : "\u207C", // SUPERSCRIPT EQUALS SIGN
- "$^{(}$" : "\u207D", // SUPERSCRIPT LEFT PARENTHESIS
- "$^{)}$" : "\u207E", // SUPERSCRIPT RIGHT PARENTHESIS
- "$^{n}$" : "\u207F", // SUPERSCRIPT LATIN SMALL LETTER N
- "$_{0}$" : "\u2080", // SUBSCRIPT ZERO
- "$_{1}$" : "\u2081", // SUBSCRIPT ONE
- "$_{2}$" : "\u2082", // SUBSCRIPT TWO
- "$_{3}$" : "\u2083", // SUBSCRIPT THREE
- "$_{4}$" : "\u2084", // SUBSCRIPT FOUR
- "$_{5}$" : "\u2085", // SUBSCRIPT FIVE
- "$_{6}$" : "\u2086", // SUBSCRIPT SIX
- "$_{7}$" : "\u2087", // SUBSCRIPT SEVEN
- "$_{8}$" : "\u2088", // SUBSCRIPT EIGHT
- "$_{9}$" : "\u2089", // SUBSCRIPT NINE
- "$_{+}$" : "\u208A", // SUBSCRIPT PLUS SIGN
- "$_{-}$" : "\u208B", // SUBSCRIPT MINUS
- "$_{=}$" : "\u208C", // SUBSCRIPT EQUALS SIGN
- "$_{(}$" : "\u208D", // SUBSCRIPT LEFT PARENTHESIS
- "$_{)}$" : "\u208E", // SUBSCRIPT RIGHT PARENTHESIS
- "{\\texteuro}" : "\u20AC", // EURO SIGN
- "a/c" : "\u2100", // ACCOUNT OF
- "a/s" : "\u2101", // ADDRESSED TO THE SUBJECT
- "{\\textcelsius}" : "\u2103", // DEGREE CELSIUS
- "c/o" : "\u2105", // CARE OF
- "c/u" : "\u2106", // CADA UNA
- "{\\textnumero}" : "\u2116", // NUMERO SIGN
- "{\\textcircledP}" : "\u2117", // SOUND RECORDING COPYRIGHT
- "{\\textservicemark}" : "\u2120", // SERVICE MARK
- "{TEL}" : "\u2121", // TELEPHONE SIGN
- "{\\texttrademark}" : "\u2122", // TRADE MARK SIGN
- "{\\textohm}" : "\u2126", // OHM SIGN
- "{\\textestimated}" : "\u212E", // ESTIMATED SYMBOL
- " 1/3" : "\u2153", // VULGAR FRACTION ONE THIRD
- " 2/3" : "\u2154", // VULGAR FRACTION TWO THIRDS
- " 1/5" : "\u2155", // VULGAR FRACTION ONE FIFTH
- " 2/5" : "\u2156", // VULGAR FRACTION TWO FIFTHS
- " 3/5" : "\u2157", // VULGAR FRACTION THREE FIFTHS
- " 4/5" : "\u2158", // VULGAR FRACTION FOUR FIFTHS
- " 1/6" : "\u2159", // VULGAR FRACTION ONE SIXTH
- " 5/6" : "\u215A", // VULGAR FRACTION FIVE SIXTHS
- " 1/8" : "\u215B", // VULGAR FRACTION ONE EIGHTH
- " 3/8" : "\u215C", // VULGAR FRACTION THREE EIGHTHS
- " 5/8" : "\u215D", // VULGAR FRACTION FIVE EIGHTHS
- " 7/8" : "\u215E", // VULGAR FRACTION SEVEN EIGHTHS
- " 1/" : "\u215F", // FRACTION NUMERATOR ONE
- "{\\textleftarrow}" : "\u2190", // LEFTWARDS ARROW
- "{\\textuparrow}" : "\u2191", // UPWARDS ARROW
- "{\\textrightarrow}" : "\u2192", // RIGHTWARDS ARROW
- "{\\textdownarrow}" : "\u2193", // DOWNWARDS ARROW
- "<->" : "\u2194", // LEFT RIGHT ARROW
- "<=" : "\u21D0", // LEFTWARDS DOUBLE ARROW
- "=>" : "\u21D2", // RIGHTWARDS DOUBLE ARROW
- "<=>" : "\u21D4", // LEFT RIGHT DOUBLE ARROW
- "$\\infty$" : "\u221E", // INFINITY
- "||" : "\u2225", // PARALLEL TO
- "/=" : "\u2260", // NOT EQUAL TO
-// "<=" : "\u2264", // LESS-THAN OR EQUAL TO
- ">=" : "\u2265", // GREATER-THAN OR EQUAL TO
- "<<" : "\u226A", // MUCH LESS-THAN
- ">>" : "\u226B", // MUCH GREATER-THAN
- "(+)" : "\u2295", // CIRCLED PLUS
- "(-)" : "\u2296", // CIRCLED MINUS
- "(x)" : "\u2297", // CIRCLED TIMES
- "(/)" : "\u2298", // CIRCLED DIVISION SLASH
- "|-" : "\u22A2", // RIGHT TACK
- "-|" : "\u22A3", // LEFT TACK
-// "|-" : "\u22A6", // ASSERTION
- "|=" : "\u22A7", // MODELS
-// "|=" : "\u22A8", // TRUE
- "||-" : "\u22A9", // FORCES
- "$\\#$" : "\u22D5", // EQUAL AND PARALLEL TO
- "<<<" : "\u22D8", // VERY MUCH LESS-THAN
- ">>>" : "\u22D9", // VERY MUCH GREATER-THAN
- "{\\textlangle}" : "\u2329", // LEFT-POINTING ANGLE BRACKET
- "{\\textrangle}" : "\u232A", // RIGHT-POINTING ANGLE BRACKET
- "{\\textvisiblespace}" : "\u2423", // OPEN BOX
- "///" : "\u2425", // SYMBOL FOR DELETE FORM TWO
- "{\\textopenbullet}" : "\u25E6", // WHITE BULLET
- ":-(" : "\u2639", // WHITE FROWNING FACE
- ":-)" : "\u263A", // WHITE SMILING FACE
- "(-: " : "\u263B", // BLACK SMILING FACE
-// "$\\#$" : "\u266F", // MUSIC SHARP SIGN
- "$\\%<$" : "\u2701", // UPPER BLADE SCISSORS
-/* "$\\%<$" : "\u2702", // BLACK SCISSORS
- "$\\%<$" : "\u2703", // LOWER BLADE SCISSORS
- "$\\%<$" : "\u2704", // WHITE SCISSORS */
-/* Derived accented characters */
- "\\`{A}" : "\u00C0", // LATIN CAPITAL LETTER A WITH GRAVE
- "\\'{A}" : "\u00C1", // LATIN CAPITAL LETTER A WITH ACUTE
- "\\^{A}" : "\u00C2", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- "\\~{A}" : "\u00C3", // LATIN CAPITAL LETTER A WITH TILDE
- "\\\"{A}" : "\u00C4", // LATIN CAPITAL LETTER A WITH DIAERESIS
- "\\r{A}" : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE
- "\\c{C}" : "\u00C7", // LATIN CAPITAL LETTER C WITH CEDILLA
- "\\`{E}" : "\u00C8", // LATIN CAPITAL LETTER E WITH GRAVE
- "\\'{E}" : "\u00C9", // LATIN CAPITAL LETTER E WITH ACUTE
- "\\^{E}" : "\u00CA", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- "\\\"{E}" : "\u00CB", // LATIN CAPITAL LETTER E WITH DIAERESIS
- "\\`{I}" : "\u00CC", // LATIN CAPITAL LETTER I WITH GRAVE
- "\\'{I}" : "\u00CD", // LATIN CAPITAL LETTER I WITH ACUTE
- "\\^{I}" : "\u00CE", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- "\\\"{I}" : "\u00CF", // LATIN CAPITAL LETTER I WITH DIAERESIS
- "\\~{N}" : "\u00D1", // LATIN CAPITAL LETTER N WITH TILDE
- "\\`{O}" : "\u00D2", // LATIN CAPITAL LETTER O WITH GRAVE
- "\\'{O}" : "\u00D3", // LATIN CAPITAL LETTER O WITH ACUTE
- "\\^{O}" : "\u00D4", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- "\\~{O}" : "\u00D5", // LATIN CAPITAL LETTER O WITH TILDE
- "\\\"{O}" : "\u00D6", // LATIN CAPITAL LETTER O WITH DIAERESIS
- "\\`{U}" : "\u00D9", // LATIN CAPITAL LETTER U WITH GRAVE
- "\\'{U}" : "\u00DA", // LATIN CAPITAL LETTER U WITH ACUTE
- "\\^{U}" : "\u00DB", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- "\\\"{U}" : "\u00DC", // LATIN CAPITAL LETTER U WITH DIAERESIS
- "\\'{Y}" : "\u00DD", // LATIN CAPITAL LETTER Y WITH ACUTE
- "\\`{a}" : "\u00E0", // LATIN SMALL LETTER A WITH GRAVE
- "\\'{a}" : "\u00E1", // LATIN SMALL LETTER A WITH ACUTE
- "\\^{a}" : "\u00E2", // LATIN SMALL LETTER A WITH CIRCUMFLEX
- "\\~{a}" : "\u00E3", // LATIN SMALL LETTER A WITH TILDE
- "\\\"{a}" : "\u00E4", // LATIN SMALL LETTER A WITH DIAERESIS
- "\\r{a}" : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE
- "\\c{c}" : "\u00E7", // LATIN SMALL LETTER C WITH CEDILLA
- "\\`{e}" : "\u00E8", // LATIN SMALL LETTER E WITH GRAVE
- "\\'{e}" : "\u00E9", // LATIN SMALL LETTER E WITH ACUTE
- "\\^{e}" : "\u00EA", // LATIN SMALL LETTER E WITH CIRCUMFLEX
- "\\\"{e}" : "\u00EB", // LATIN SMALL LETTER E WITH DIAERESIS
- "\\`{i}" : "\u00EC", // LATIN SMALL LETTER I WITH GRAVE
- "\\'{i}" : "\u00ED", // LATIN SMALL LETTER I WITH ACUTE
- "\\^{i}" : "\u00EE", // LATIN SMALL LETTER I WITH CIRCUMFLEX
- "\\\"{i}" : "\u00EF", // LATIN SMALL LETTER I WITH DIAERESIS
- "\\~{n}" : "\u00F1", // LATIN SMALL LETTER N WITH TILDE
- "\\`{o}" : "\u00F2", // LATIN SMALL LETTER O WITH GRAVE
- "\\'{o}" : "\u00F3", // LATIN SMALL LETTER O WITH ACUTE
- "\\^{o}" : "\u00F4", // LATIN SMALL LETTER O WITH CIRCUMFLEX
- "\\~{o}" : "\u00F5", // LATIN SMALL LETTER O WITH TILDE
- "\\\"{o}" : "\u00F6", // LATIN SMALL LETTER O WITH DIAERESIS
- "\\`{u}" : "\u00F9", // LATIN SMALL LETTER U WITH GRAVE
- "\\'{u}" : "\u00FA", // LATIN SMALL LETTER U WITH ACUTE
- "\\^{u}" : "\u00FB", // LATIN SMALL LETTER U WITH CIRCUMFLEX
- "\\\"{u}" : "\u00FC", // LATIN SMALL LETTER U WITH DIAERESIS
- "\\'{y}" : "\u00FD", // LATIN SMALL LETTER Y WITH ACUTE
- "\\\"{y}" : "\u00FF", // LATIN SMALL LETTER Y WITH DIAERESIS
- "\\={A}" : "\u0100", // LATIN CAPITAL LETTER A WITH MACRON
- "\\={a}" : "\u0101", // LATIN SMALL LETTER A WITH MACRON
- "\\u{A}" : "\u0102", // LATIN CAPITAL LETTER A WITH BREVE
- "\\u{a}" : "\u0103", // LATIN SMALL LETTER A WITH BREVE
- "\\k{A}" : "\u0104", // LATIN CAPITAL LETTER A WITH OGONEK
- "\\k{a}" : "\u0105", // LATIN SMALL LETTER A WITH OGONEK
- "\\'{C}" : "\u0106", // LATIN CAPITAL LETTER C WITH ACUTE
- "\\'{c}" : "\u0107", // LATIN SMALL LETTER C WITH ACUTE
- "\\^{C}" : "\u0108", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- "\\^{c}" : "\u0109", // LATIN SMALL LETTER C WITH CIRCUMFLEX
- "\\.{C}" : "\u010A", // LATIN CAPITAL LETTER C WITH DOT ABOVE
- "\\.{c}" : "\u010B", // LATIN SMALL LETTER C WITH DOT ABOVE
- "\\v{C}" : "\u010C", // LATIN CAPITAL LETTER C WITH CARON
- "\\v{c}" : "\u010D", // LATIN SMALL LETTER C WITH CARON
- "\\v{D}" : "\u010E", // LATIN CAPITAL LETTER D WITH CARON
- "\\v{d}" : "\u010F", // LATIN SMALL LETTER D WITH CARON
- "\\={E}" : "\u0112", // LATIN CAPITAL LETTER E WITH MACRON
- "\\={e}" : "\u0113", // LATIN SMALL LETTER E WITH MACRON
- "\\u{E}" : "\u0114", // LATIN CAPITAL LETTER E WITH BREVE
- "\\u{e}" : "\u0115", // LATIN SMALL LETTER E WITH BREVE
- "\\.{E}" : "\u0116", // LATIN CAPITAL LETTER E WITH DOT ABOVE
- "\\.{e}" : "\u0117", // LATIN SMALL LETTER E WITH DOT ABOVE
- "\\k{E}" : "\u0118", // LATIN CAPITAL LETTER E WITH OGONEK
- "\\k{e}" : "\u0119", // LATIN SMALL LETTER E WITH OGONEK
- "\\v{E}" : "\u011A", // LATIN CAPITAL LETTER E WITH CARON
- "\\v{e}" : "\u011B", // LATIN SMALL LETTER E WITH CARON
- "\\^{G}" : "\u011C", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- "\\^{g}" : "\u011D", // LATIN SMALL LETTER G WITH CIRCUMFLEX
- "\\u{G}" : "\u011E", // LATIN CAPITAL LETTER G WITH BREVE
- "\\u{g}" : "\u011F", // LATIN SMALL LETTER G WITH BREVE
- "\\.{G}" : "\u0120", // LATIN CAPITAL LETTER G WITH DOT ABOVE
- "\\.{g}" : "\u0121", // LATIN SMALL LETTER G WITH DOT ABOVE
- "\\c{G}" : "\u0122", // LATIN CAPITAL LETTER G WITH CEDILLA
- "\\c{g}" : "\u0123", // LATIN SMALL LETTER G WITH CEDILLA
- "\\^{H}" : "\u0124", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- "\\^{h}" : "\u0125", // LATIN SMALL LETTER H WITH CIRCUMFLEX
- "\\~{I}" : "\u0128", // LATIN CAPITAL LETTER I WITH TILDE
- "\\~{i}" : "\u0129", // LATIN SMALL LETTER I WITH TILDE
- "\\={I}" : "\u012A", // LATIN CAPITAL LETTER I WITH MACRON
- "\\={i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON
- "\\u{I}" : "\u012C", // LATIN CAPITAL LETTER I WITH BREVE
- "\\u{i}" : "\u012D", // LATIN SMALL LETTER I WITH BREVE
- "\\k{I}" : "\u012E", // LATIN CAPITAL LETTER I WITH OGONEK
- "\\k{i}" : "\u012F", // LATIN SMALL LETTER I WITH OGONEK
- "\\.{I}" : "\u0130", // LATIN CAPITAL LETTER I WITH DOT ABOVE
- "\\^{J}" : "\u0134", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- "\\^{j}" : "\u0135", // LATIN SMALL LETTER J WITH CIRCUMFLEX
- "\\c{K}" : "\u0136", // LATIN CAPITAL LETTER K WITH CEDILLA
- "\\c{k}" : "\u0137", // LATIN SMALL LETTER K WITH CEDILLA
- "\\'{L}" : "\u0139", // LATIN CAPITAL LETTER L WITH ACUTE
- "\\'{l}" : "\u013A", // LATIN SMALL LETTER L WITH ACUTE
- "\\c{L}" : "\u013B", // LATIN CAPITAL LETTER L WITH CEDILLA
- "\\c{l}" : "\u013C", // LATIN SMALL LETTER L WITH CEDILLA
- "\\v{L}" : "\u013D", // LATIN CAPITAL LETTER L WITH CARON
- "\\v{l}" : "\u013E", // LATIN SMALL LETTER L WITH CARON
- "\\L{}" : "\u0141", //LATIN CAPITAL LETTER L WITH STROKE
- "\\l{}" : "\u0142", //LATIN SMALL LETTER L WITH STROKE
- "\\'{N}" : "\u0143", // LATIN CAPITAL LETTER N WITH ACUTE
- "\\'{n}" : "\u0144", // LATIN SMALL LETTER N WITH ACUTE
- "\\c{N}" : "\u0145", // LATIN CAPITAL LETTER N WITH CEDILLA
- "\\c{n}" : "\u0146", // LATIN SMALL LETTER N WITH CEDILLA
- "\\v{N}" : "\u0147", // LATIN CAPITAL LETTER N WITH CARON
- "\\v{n}" : "\u0148", // LATIN SMALL LETTER N WITH CARON
- "\\={O}" : "\u014C", // LATIN CAPITAL LETTER O WITH MACRON
- "\\={o}" : "\u014D", // LATIN SMALL LETTER O WITH MACRON
- "\\u{O}" : "\u014E", // LATIN CAPITAL LETTER O WITH BREVE
- "\\u{o}" : "\u014F", // LATIN SMALL LETTER O WITH BREVE
- "\\H{O}" : "\u0150", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- "\\H{o}" : "\u0151", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
- "\\'{R}" : "\u0154", // LATIN CAPITAL LETTER R WITH ACUTE
- "\\'{r}" : "\u0155", // LATIN SMALL LETTER R WITH ACUTE
- "\\c{R}" : "\u0156", // LATIN CAPITAL LETTER R WITH CEDILLA
- "\\c{r}" : "\u0157", // LATIN SMALL LETTER R WITH CEDILLA
- "\\v{R}" : "\u0158", // LATIN CAPITAL LETTER R WITH CARON
- "\\v{r}" : "\u0159", // LATIN SMALL LETTER R WITH CARON
- "\\'{S}" : "\u015A", // LATIN CAPITAL LETTER S WITH ACUTE
- "\\'{s}" : "\u015B", // LATIN SMALL LETTER S WITH ACUTE
- "\\^{S}" : "\u015C", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- "\\^{s}" : "\u015D", // LATIN SMALL LETTER S WITH CIRCUMFLEX
- "\\c{S}" : "\u015E", // LATIN CAPITAL LETTER S WITH CEDILLA
- "\\c{s}" : "\u015F", // LATIN SMALL LETTER S WITH CEDILLA
- "\\v{S}" : "\u0160", // LATIN CAPITAL LETTER S WITH CARON
- "\\v{s}" : "\u0161", // LATIN SMALL LETTER S WITH CARON
- "\\c{T}" : "\u0162", // LATIN CAPITAL LETTER T WITH CEDILLA
- "\\c{t}" : "\u0163", // LATIN SMALL LETTER T WITH CEDILLA
- "\\v{T}" : "\u0164", // LATIN CAPITAL LETTER T WITH CARON
- "\\v{t}" : "\u0165", // LATIN SMALL LETTER T WITH CARON
- "\\~{U}" : "\u0168", // LATIN CAPITAL LETTER U WITH TILDE
- "\\~{u}" : "\u0169", // LATIN SMALL LETTER U WITH TILDE
- "\\={U}" : "\u016A", // LATIN CAPITAL LETTER U WITH MACRON
- "\\={u}" : "\u016B", // LATIN SMALL LETTER U WITH MACRON
- "\\u{U}" : "\u016C", // LATIN CAPITAL LETTER U WITH BREVE
- "\\u{u}" : "\u016D", // LATIN SMALL LETTER U WITH BREVE
- "\\H{U}" : "\u0170", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- "\\H{u}" : "\u0171", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
- "\\k{U}" : "\u0172", // LATIN CAPITAL LETTER U WITH OGONEK
- "\\k{u}" : "\u0173", // LATIN SMALL LETTER U WITH OGONEK
- "\\^{W}" : "\u0174", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- "\\^{w}" : "\u0175", // LATIN SMALL LETTER W WITH CIRCUMFLEX
- "\\^{Y}" : "\u0176", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- "\\^{y}" : "\u0177", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
- "\\\"{Y}" : "\u0178", // LATIN CAPITAL LETTER Y WITH DIAERESIS
- "\\'{Z}" : "\u0179", // LATIN CAPITAL LETTER Z WITH ACUTE
- "\\'{z}" : "\u017A", // LATIN SMALL LETTER Z WITH ACUTE
- "\\.{Z}" : "\u017B", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- "\\.{z}" : "\u017C", // LATIN SMALL LETTER Z WITH DOT ABOVE
- "\\v{Z}" : "\u017D", // LATIN CAPITAL LETTER Z WITH CARON
- "\\v{z}" : "\u017E", // LATIN SMALL LETTER Z WITH CARON
- "\\v{A}" : "\u01CD", // LATIN CAPITAL LETTER A WITH CARON
- "\\v{a}" : "\u01CE", // LATIN SMALL LETTER A WITH CARON
- "\\v{I}" : "\u01CF", // LATIN CAPITAL LETTER I WITH CARON
- "\\v{i}" : "\u01D0", // LATIN SMALL LETTER I WITH CARON
- "\\v{O}" : "\u01D1", // LATIN CAPITAL LETTER O WITH CARON
- "\\v{o}" : "\u01D2", // LATIN SMALL LETTER O WITH CARON
- "\\v{U}" : "\u01D3", // LATIN CAPITAL LETTER U WITH CARON
- "\\v{u}" : "\u01D4", // LATIN SMALL LETTER U WITH CARON
- "\\v{G}" : "\u01E6", // LATIN CAPITAL LETTER G WITH CARON
- "\\v{g}" : "\u01E7", // LATIN SMALL LETTER G WITH CARON
- "\\v{K}" : "\u01E8", // LATIN CAPITAL LETTER K WITH CARON
- "\\v{k}" : "\u01E9", // LATIN SMALL LETTER K WITH CARON
- "\\k{O}" : "\u01EA", // LATIN CAPITAL LETTER O WITH OGONEK
- "\\k{o}" : "\u01EB", // LATIN SMALL LETTER O WITH OGONEK
- "\\v{j}" : "\u01F0", // LATIN SMALL LETTER J WITH CARON
- "\\'{G}" : "\u01F4", // LATIN CAPITAL LETTER G WITH ACUTE
- "\\'{g}" : "\u01F5", // LATIN SMALL LETTER G WITH ACUTE
- "\\.{B}" : "\u1E02", // LATIN CAPITAL LETTER B WITH DOT ABOVE
- "\\.{b}" : "\u1E03", // LATIN SMALL LETTER B WITH DOT ABOVE
- "\\d{B}" : "\u1E04", // LATIN CAPITAL LETTER B WITH DOT BELOW
- "\\d{b}" : "\u1E05", // LATIN SMALL LETTER B WITH DOT BELOW
- "\\b{B}" : "\u1E06", // LATIN CAPITAL LETTER B WITH LINE BELOW
- "\\b{b}" : "\u1E07", // LATIN SMALL LETTER B WITH LINE BELOW
- "\\.{D}" : "\u1E0A", // LATIN CAPITAL LETTER D WITH DOT ABOVE
- "\\.{d}" : "\u1E0B", // LATIN SMALL LETTER D WITH DOT ABOVE
- "\\d{D}" : "\u1E0C", // LATIN CAPITAL LETTER D WITH DOT BELOW
- "\\d{d}" : "\u1E0D", // LATIN SMALL LETTER D WITH DOT BELOW
- "\\b{D}" : "\u1E0E", // LATIN CAPITAL LETTER D WITH LINE BELOW
- "\\b{d}" : "\u1E0F", // LATIN SMALL LETTER D WITH LINE BELOW
- "\\c{D}" : "\u1E10", // LATIN CAPITAL LETTER D WITH CEDILLA
- "\\c{d}" : "\u1E11", // LATIN SMALL LETTER D WITH CEDILLA
- "\\.{F}" : "\u1E1E", // LATIN CAPITAL LETTER F WITH DOT ABOVE
- "\\.{f}" : "\u1E1F", // LATIN SMALL LETTER F WITH DOT ABOVE
- "\\={G}" : "\u1E20", // LATIN CAPITAL LETTER G WITH MACRON
- "\\={g}" : "\u1E21", // LATIN SMALL LETTER G WITH MACRON
- "\\.{H}" : "\u1E22", // LATIN CAPITAL LETTER H WITH DOT ABOVE
- "\\.{h}" : "\u1E23", // LATIN SMALL LETTER H WITH DOT ABOVE
- "\\d{H}" : "\u1E24", // LATIN CAPITAL LETTER H WITH DOT BELOW
- "\\d{h}" : "\u1E25", // LATIN SMALL LETTER H WITH DOT BELOW
- "\\\"{H}" : "\u1E26", // LATIN CAPITAL LETTER H WITH DIAERESIS
- "\\\"{h}" : "\u1E27", // LATIN SMALL LETTER H WITH DIAERESIS
- "\\c{H}" : "\u1E28", // LATIN CAPITAL LETTER H WITH CEDILLA
- "\\c{h}" : "\u1E29", // LATIN SMALL LETTER H WITH CEDILLA
- "\\'{K}" : "\u1E30", // LATIN CAPITAL LETTER K WITH ACUTE
- "\\'{k}" : "\u1E31", // LATIN SMALL LETTER K WITH ACUTE
- "\\d{K}" : "\u1E32", // LATIN CAPITAL LETTER K WITH DOT BELOW
- "\\d{k}" : "\u1E33", // LATIN SMALL LETTER K WITH DOT BELOW
- "\\b{K}" : "\u1E34", // LATIN CAPITAL LETTER K WITH LINE BELOW
- "\\b{k}" : "\u1E35", // LATIN SMALL LETTER K WITH LINE BELOW
- "\\d{L}" : "\u1E36", // LATIN CAPITAL LETTER L WITH DOT BELOW
- "\\d{l}" : "\u1E37", // LATIN SMALL LETTER L WITH DOT BELOW
- "\\b{L}" : "\u1E3A", // LATIN CAPITAL LETTER L WITH LINE BELOW
- "\\b{l}" : "\u1E3B", // LATIN SMALL LETTER L WITH LINE BELOW
- "\\'{M}" : "\u1E3E", // LATIN CAPITAL LETTER M WITH ACUTE
- "\\'{m}" : "\u1E3F", // LATIN SMALL LETTER M WITH ACUTE
- "\\.{M}" : "\u1E40", // LATIN CAPITAL LETTER M WITH DOT ABOVE
- "\\.{m}" : "\u1E41", // LATIN SMALL LETTER M WITH DOT ABOVE
- "\\d{M}" : "\u1E42", // LATIN CAPITAL LETTER M WITH DOT BELOW
- "\\d{m}" : "\u1E43", // LATIN SMALL LETTER M WITH DOT BELOW
- "\\.{N}" : "\u1E44", // LATIN CAPITAL LETTER N WITH DOT ABOVE
- "\\.{n}" : "\u1E45", // LATIN SMALL LETTER N WITH DOT ABOVE
- "\\d{N}" : "\u1E46", // LATIN CAPITAL LETTER N WITH DOT BELOW
- "\\d{n}" : "\u1E47", // LATIN SMALL LETTER N WITH DOT BELOW
- "\\b{N}" : "\u1E48", // LATIN CAPITAL LETTER N WITH LINE BELOW
- "\\b{n}" : "\u1E49", // LATIN SMALL LETTER N WITH LINE BELOW
- "\\'{P}" : "\u1E54", // LATIN CAPITAL LETTER P WITH ACUTE
- "\\'{p}" : "\u1E55", // LATIN SMALL LETTER P WITH ACUTE
- "\\.{P}" : "\u1E56", // LATIN CAPITAL LETTER P WITH DOT ABOVE
- "\\.{p}" : "\u1E57", // LATIN SMALL LETTER P WITH DOT ABOVE
- "\\.{R}" : "\u1E58", // LATIN CAPITAL LETTER R WITH DOT ABOVE
- "\\.{r}" : "\u1E59", // LATIN SMALL LETTER R WITH DOT ABOVE
- "\\d{R}" : "\u1E5A", // LATIN CAPITAL LETTER R WITH DOT BELOW
- "\\d{r}" : "\u1E5B", // LATIN SMALL LETTER R WITH DOT BELOW
- "\\b{R}" : "\u1E5E", // LATIN CAPITAL LETTER R WITH LINE BELOW
- "\\b{r}" : "\u1E5F", // LATIN SMALL LETTER R WITH LINE BELOW
- "\\.{S}" : "\u1E60", // LATIN CAPITAL LETTER S WITH DOT ABOVE
- "\\.{s}" : "\u1E61", // LATIN SMALL LETTER S WITH DOT ABOVE
- "\\d{S}" : "\u1E62", // LATIN CAPITAL LETTER S WITH DOT BELOW
- "\\d{s}" : "\u1E63", // LATIN SMALL LETTER S WITH DOT BELOW
- "\\.{T}" : "\u1E6A", // LATIN CAPITAL LETTER T WITH DOT ABOVE
- "\\.{t}" : "\u1E6B", // LATIN SMALL LETTER T WITH DOT ABOVE
- "\\d{T}" : "\u1E6C", // LATIN CAPITAL LETTER T WITH DOT BELOW
- "\\d{t}" : "\u1E6D", // LATIN SMALL LETTER T WITH DOT BELOW
- "\\b{T}" : "\u1E6E", // LATIN CAPITAL LETTER T WITH LINE BELOW
- "\\b{t}" : "\u1E6F", // LATIN SMALL LETTER T WITH LINE BELOW
- "\\~{V}" : "\u1E7C", // LATIN CAPITAL LETTER V WITH TILDE
- "\\~{v}" : "\u1E7D", // LATIN SMALL LETTER V WITH TILDE
- "\\d{V}" : "\u1E7E", // LATIN CAPITAL LETTER V WITH DOT BELOW
- "\\d{v}" : "\u1E7F", // LATIN SMALL LETTER V WITH DOT BELOW
- "\\`{W}" : "\u1E80", // LATIN CAPITAL LETTER W WITH GRAVE
- "\\`{w}" : "\u1E81", // LATIN SMALL LETTER W WITH GRAVE
- "\\'{W}" : "\u1E82", // LATIN CAPITAL LETTER W WITH ACUTE
- "\\'{w}" : "\u1E83", // LATIN SMALL LETTER W WITH ACUTE
- "\\\"{W}" : "\u1E84", // LATIN CAPITAL LETTER W WITH DIAERESIS
- "\\\"{w}" : "\u1E85", // LATIN SMALL LETTER W WITH DIAERESIS
- "\\.{W}" : "\u1E86", // LATIN CAPITAL LETTER W WITH DOT ABOVE
- "\\.{w}" : "\u1E87", // LATIN SMALL LETTER W WITH DOT ABOVE
- "\\d{W}" : "\u1E88", // LATIN CAPITAL LETTER W WITH DOT BELOW
- "\\d{w}" : "\u1E89", // LATIN SMALL LETTER W WITH DOT BELOW
- "\\.{X}" : "\u1E8A", // LATIN CAPITAL LETTER X WITH DOT ABOVE
- "\\.{x}" : "\u1E8B", // LATIN SMALL LETTER X WITH DOT ABOVE
- "\\\"{X}" : "\u1E8C", // LATIN CAPITAL LETTER X WITH DIAERESIS
- "\\\"{x}" : "\u1E8D", // LATIN SMALL LETTER X WITH DIAERESIS
- "\\.{Y}" : "\u1E8E", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
- "\\.{y}" : "\u1E8F", // LATIN SMALL LETTER Y WITH DOT ABOVE
- "\\^{Z}" : "\u1E90", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- "\\^{z}" : "\u1E91", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
- "\\d{Z}" : "\u1E92", // LATIN CAPITAL LETTER Z WITH DOT BELOW
- "\\d{z}" : "\u1E93", // LATIN SMALL LETTER Z WITH DOT BELOW
- "\\b{Z}" : "\u1E94", // LATIN CAPITAL LETTER Z WITH LINE BELOW
- "\\b{z}" : "\u1E95", // LATIN SMALL LETTER Z WITH LINE BELOW
- "\\b{h}" : "\u1E96", // LATIN SMALL LETTER H WITH LINE BELOW
- "\\\"{t}" : "\u1E97", // LATIN SMALL LETTER T WITH DIAERESIS
- "\\d{A}" : "\u1EA0", // LATIN CAPITAL LETTER A WITH DOT BELOW
- "\\d{a}" : "\u1EA1", // LATIN SMALL LETTER A WITH DOT BELOW
- "\\d{E}" : "\u1EB8", // LATIN CAPITAL LETTER E WITH DOT BELOW
- "\\d{e}" : "\u1EB9", // LATIN SMALL LETTER E WITH DOT BELOW
- "\\~{E}" : "\u1EBC", // LATIN CAPITAL LETTER E WITH TILDE
- "\\~{e}" : "\u1EBD", // LATIN SMALL LETTER E WITH TILDE
- "\\d{I}" : "\u1ECA", // LATIN CAPITAL LETTER I WITH DOT BELOW
- "\\d{i}" : "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW
- "\\d{O}" : "\u1ECC", // LATIN CAPITAL LETTER O WITH DOT BELOW
- "\\d{o}" : "\u1ECD", // LATIN SMALL LETTER O WITH DOT BELOW
- "\\d{U}" : "\u1EE4", // LATIN CAPITAL LETTER U WITH DOT BELOW
- "\\d{u}" : "\u1EE5", // LATIN SMALL LETTER U WITH DOT BELOW
- "\\`{Y}" : "\u1EF2", // LATIN CAPITAL LETTER Y WITH GRAVE
- "\\`{y}" : "\u1EF3", // LATIN SMALL LETTER Y WITH GRAVE
- "\\d{Y}" : "\u1EF4", // LATIN CAPITAL LETTER Y WITH DOT BELOW
- "\\d{y}" : "\u1EF5", // LATIN SMALL LETTER Y WITH DOT BELOW
- "\\~{Y}" : "\u1EF8", // LATIN CAPITAL LETTER Y WITH TILDE
- "\\~{y}" : "\u1EF9", // LATIN SMALL LETTER Y WITH TILDE
- "\\~{}" : "\u223C", // TILDE OPERATOR
- "~" : "\u00A0" // NO-BREAK SPACE
-};
-
-var alwaysMap = {
- "|":"{\\textbar}",
- "<":"{\\textless}",
- ">":"{\\textgreater}",
- "~":"{\\textasciitilde}",
- "^":"{\\textasciicircum}",
- "\\":"{\\textbackslash}"
-};
-
-var strings = {};
-var keyRe = /[a-zA-Z0-9\-]/;
-
-function processField(item, field, value) {
- if(Zotero.Utilities.trim(value) == '') return null;
- if(fieldMap[field]) {
- item[fieldMap[field]] = value;
- } else if(inputFieldMap[field]) {
- item[inputFieldMap[field]] = value;
- } else if(field == "journal") {
- if(item.publicationTitle) {
- item.journalAbbreviation = value;
- } else {
- item.publicationTitle = value;
- }
- } else if(field == "fjournal") {
- if(item.publicationTitle) {
- // move publicationTitle to abbreviation
- item.journalAbbreviation = value;
- }
- item.publicationTitle = value;
- } else if(field == "author" || field == "editor" || field == "translator") {
- // parse authors/editors/translators
- var names = value.split(/ and /i); // now case insensitive
- for(var i in names) {
- var name = names[i];
- // skip empty names
- if (name.trim() == '') {
- continue;
- }
- // Names in BibTeX can have three commas
- pieces = name.split(',');
- var creator = {};
- if (pieces.length > 1) {
- creator.firstName = pieces.pop().trim();
- creator.lastName = pieces.join(',').trim();
- creator.creatorType = field;
- } else {
- creator = Zotero.Utilities.cleanAuthor(name, field, false);
- }
- item.creators.push(creator);
- }
- } else if(field == "institution" || field == "organization") {
- item.backupPublisher = value;
- } else if(field == "number"){ // fix for techreport
- if (item.itemType == "report") {
- item.reportNumber = value;
- } else if (item.itemType == "book" || item.itemType == "bookSection") {
- item.seriesNumber = value;
- } else {
- item.issue = value;
- }
- } else if(field == "month") {
- var monthIndex = months.indexOf(value.toLowerCase());
- if(monthIndex != -1) {
- value = Zotero.Utilities.formatDate({month:monthIndex});
- } else {
- value += " ";
- }
-
- if(item.date) {
- if(value.indexOf(item.date) != -1) {
- // value contains year and more
- item.date = value;
- } else {
- item.date = value+item.date;
- }
- } else {
- item.date = value;
- }
- } else if(field == "year") {
- if(item.date) {
- if(item.date.indexOf(value) == -1) {
- // date does not already contain year
- item.date += value;
- }
- } else {
- item.date = value;
- }
- } else if(field == "pages") {
- if (item.itemType == "book" || item.itemType == "thesis" || item.itemType == "manuscript") {
- item.numPages = value;
- }
- else {
- item.pages = value.replace(/--/g, "-");
- }
- } else if(field == "note") {
- item.extra += "\n"+value;
- } else if(field == "howpublished") {
- if(value.length >= 7) {
- var str = value.substr(0, 7);
- if(str == "http://" || str == "https:/" || str == "mailto:") {
- item.url = value;
- } else {
- item.extra += "\nPublished: "+value;
- }
- }
- } else if(field == "keywords") {
- if(value.indexOf(",") == -1) {
- // keywords/tags
- item.tags = value.split(" ");
- } else {
- item.tags = value.split(/, ?/g);
- }
- } else if (field == "comment" || field == "annote" || field == "review") {
- item.notes.push({note:Zotero.Utilities.text2html(value)});
- } else if (field == "pdf") {
- if (/:\/\//.test(value)) { // a full uri is given
- item.attachments = [{url:value, mimeType:"application/pdf", downloadable:true}];
- } else { // if no uri is given, assume that it is an absolute path to the PDF
- item.attachments = [{url:"file://"+value, mimeType:"application/pdf"}];
- }
- } else if (field == "sentelink") { // the reference manager 'Sente' has a unique file scheme in exported BibTeX
- item.attachments = [{url:value.split(",")[0], mimeType:"application/pdf", downloadable:true}];
- } else if (field == "file") {
- var attachments = value.split(";");
- for(var i in attachments){
- var attachment = attachments[i];
- var parts = attachment.split(":");
- var filetitle = parts[0];
- var filepath = parts[1];
- if (filepath.trim() === '') continue; // skip empty entries
- var filetype = parts[2];
- if (filetitle.length == 0) {
- filetitle = "Attachment";
- }
- if (filetype.match(/pdf/i)) {
- item.attachments.push({url:"file://"+filepath, mimeType:"application/pdf", title:filetitle, downloadable:true});
- } else {
- item.attachments.push({url:"file://"+filepath, title:filetitle, downloadable:true});
- }
- }
- }
-}
-
-function getFieldValue(read) {
- var value = "";
- // now, we have the first character of the field
- if(read == "{") {
- // character is a brace
- var openBraces = 1;
- while(read = Zotero.read(1)) {
- if(read == "{" && value[value.length-1] != "\\") {
- openBraces++;
- value += "{";
- } else if(read == "}" && value[value.length-1] != "\\") {
- openBraces--;
- if(openBraces == 0) {
- break;
- } else {
- value += "}";
- }
- } else {
- value += read;
- }
- }
- } else if(read == '"') {
- var openBraces = 0;
- while(read = Zotero.read(1)) {
- if(read == "{" && value[value.length-1] != "\\") {
- openBraces++;
- value += "{";
- } else if(read == "}" && value[value.length-1] != "\\") {
- openBraces--;
- value += "}";
- } else if(read == '"' && openBraces == 0) {
- break;
- } else {
- value += read;
- }
- }
- }
-
- if(value.length > 1) {
- // replace accented characters (yucky slow)
- value = value.replace(/{?(\\[`"'^~=a-z]){?\\?([A-Za-z])}/g, "$1{$2}");
- for (var mapped in reversemappingTable) { // really really slow!
- var unicode = reversemappingTable[mapped];
- if (value.indexOf(mapped) != -1) {
- Zotero.debug("Replace " + mapped + " in " + value + " with " + unicode);
- value = value.replace(mapped, unicode, "g");
- }
- mapped = mapped.replace(/[{}]/g, "");
- if (value.indexOf(mapped) != -1) {
- Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + unicode);
- value = value.replace(mapped, unicode, "g");
- }
- }
-
- // kill braces
- value = value.replace(/([^\\])[{}]+/g, "$1");
- if(value[0] == "{") {
- value = value.substr(1);
- }
-
- // chop off backslashes
- value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
- value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
- if(value[0] == "\\" && "#$%&~_^\\{}".indexOf(value[1]) != -1) {
- value = value.substr(1);
- }
- if(value[value.length-1] == "\\" && "#$%&~_^\\{}".indexOf(value[value.length-2]) != -1) {
- value = value.substr(0, value.length-1);
- }
- value = value.replace(/\\\\/g, "\\");
- value = value.replace(/\s+/g, " ");
- }
-
- return value;
-}
-
-function beginRecord(type, closeChar) {
- type = Zotero.Utilities.trimInternal(type.toLowerCase());
- if(type != "string") {
- var zoteroType = bibtex2zoteroTypeMap[type];
- if (!zoteroType) {
- Zotero.debug("discarded item from BibTeX; type was "+type);
- }
- var item = new Zotero.Item(zoteroType);
-
- item.extra = "";
- }
-
- var field = "";
-
- // by setting dontRead to true, we can skip a read on the next iteration
- // of this loop. this is useful after we read past the end of a string.
- var dontRead = false;
-
- while(dontRead || (read = Zotero.read(1))) {
- dontRead = false;
-
- if(read == "=") { // equals begin a field
- // read whitespace
- var read = Zotero.read(1);
- while(" \n\r\t".indexOf(read) != -1) {
- read = Zotero.read(1);
- }
-
- if(keyRe.test(read)) {
- // read numeric data here, since we might get an end bracket
- // that we should care about
- value = "";
- value += read;
-
- // character is a number
- while((read = Zotero.read(1)) && keyRe.test(read)) {
- value += read;
- }
-
- // don't read the next char; instead, process the character
- // we already read past the end of the string
- dontRead = true;
-
- // see if there's a defined string
- if(strings[value]) value = strings[value];
- } else {
- var value = getFieldValue(read);
- }
-
- if(item) {
- processField(item, field.toLowerCase(), value);
- } else if(type == "string") {
- strings[field] = value;
- }
- field = "";
- } else if(read == ",") { // commas reset
- field = "";
- } else if(read == closeChar) {
- if(item) {
- if(item.extra) item.extra = item.extra.substr(1); // chop \n
- item.complete();
- }
- return;
- } else if(" \n\r\t".indexOf(read) == -1) { // skip whitespace
- field += read;
- }
- }
-}
-
-function doImport() {
- var read = "", text = "", recordCloseElement = false;
- var type = false;
-
- while(read = Zotero.read(1)) {
- if(read == "@") {
- type = "";
- } else if(type !== false) {
- if(type == "comment") {
- type = false;
- } else if(read == "{") { // possible open character
- beginRecord(type, "}");
- type = false;
- } else if(read == "(") { // possible open character
- beginRecord(type, ")");
- type = false;
- } else {
- type += read;
- }
- }
- }
-}
-
-// some fields are, in fact, macros. If that is the case then we should not put the
-// data in the braces as it will cause the macros to not expand properly
-function writeField(field, value, isMacro) {
- if(!value && typeof value != "number") return;
- value = value + ""; // convert integers to strings
- Zotero.write(",\n\t"+field+" = ");
- if(!isMacro) Zotero.write("{");
- // url field is preserved, for use with \href and \url
- // Other fields (DOI?) may need similar treatment
- if(!((field == "url") || (field == "doi") | (field == "file"))) {
- // I hope these are all the escape characters!
- value = value.replace(/[|\<\>\~\^\\]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1");
- // Case of words with uppercase characters in non-initial positions is preserved with braces.
- if(!isMacro&&field != "pages") value = value.replace(/([^\s]+[A-Z][^\s,]*)/g, "{$1}");
- }
- if (Zotero.getOption("exportCharset") != "UTF-8") {
- value = value.replace(/[\u0080-\uFFFF]/g, mapAccent);
- }
- Zotero.write(value);
- if(!isMacro) Zotero.write("}");
-}
-
-function mapEscape(character) {
- return alwaysMap[character];
-}
-
-function mapAccent(character) {
- return (mappingTable[character] ? mappingTable[character] : "?");
-}
-
-// a little substitution function for BibTeX keys, where we don't want LaTeX
-// escaping, but we do want to preserve the base characters
-
-function tidyAccents(s) {
- var r=s.toLowerCase();
- r = r.replace(new RegExp("[ä]", 'g'),"ae");
- r = r.replace(new RegExp("[ö]", 'g'),"oe");
- r = r.replace(new RegExp("[ü]", 'g'),"ue");
- r = r.replace(new RegExp("[àáâãå]", 'g'),"a");
- r = r.replace(new RegExp("æ", 'g'),"ae");
- r = r.replace(new RegExp("ç", 'g'),"c");
- r = r.replace(new RegExp("[èéêë]", 'g'),"e");
- r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
- r = r.replace(new RegExp("ñ", 'g'),"n");
- r = r.replace(new RegExp("[òóôõ]", 'g'),"o");
- r = r.replace(new RegExp("œ", 'g'),"oe");
- r = r.replace(new RegExp("[ùúû]", 'g'),"u");
- r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
- return r;
- };
-
-var numberRe = /^[0-9]+/;
-// Below is a list of words that should not appear as part of the citation key
-// in includes the indefinite articles of English, German, French and Spanish, as well as a small set of English prepositions whose
-// force is more grammatical than lexical, i.e. which are likely to strike many as 'insignificant'.
-// The assumption is that most who want a title word in their key would prefer the first word of significance.
-var citeKeyTitleBannedRe = /\b(a|an|the|some|from|on|in|to|of|do|with|der|die|das|ein|eine|einer|eines|einem|einen|un|une|la|le|l\'|el|las|los|al|uno|una|unos|unas|de|des|del|d\')(\s+|\b)/g;
-var citeKeyConversionsRe = /%([a-zA-Z])/;
-var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g;
-
-var citeKeyConversions = {
- "a":function (flags, item) {
- if(item.creators && item.creators[0] && item.creators[0].lastName) {
- return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
- }
- return "";
- },
- "t":function (flags, item) {
- if (item["title"]) {
- return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
- }
- return "";
- },
- "y":function (flags, item) {
- if(item.date) {
- var date = Zotero.Utilities.strToDate(item.date);
- if(date.year && numberRe.test(date.year)) {
- return date.year;
- }
- }
- return "????";
- }
-}
-
-
-function buildCiteKey (item,citekeys) {
- var basekey = "";
- var counter = 0;
- citeKeyFormatRemaining = citeKeyFormat;
- while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) {
- if (counter > 100) {
- Zotero.debug("Pathological BibTeX format: " + citeKeyFormat);
- break;
- }
- var m = citeKeyFormatRemaining.match(citeKeyConversionsRe);
- if (m.index > 0) {
- //add data before the conversion match to basekey
- basekey = basekey + citeKeyFormatRemaining.substr(0, m.index);
- }
- var flags = ""; // for now
- var f = citeKeyConversions[m[1]];
- if (typeof(f) == "function") {
- var value = f(flags, item);
- Zotero.debug("Got value " + value + " for %" + m[1]);
- //add conversion to basekey
- basekey = basekey + value;
- }
- citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length);
- counter++;
- }
- if (citeKeyFormatRemaining.length > 0) {
- basekey = basekey + citeKeyFormatRemaining;
- }
-
- // for now, remove any characters not explicitly known to be allowed;
- // we might want to allow UTF-8 citation keys in the future, depending
- // on implementation support.
- //
- // no matter what, we want to make sure we exclude
- // " # % ' ( ) , = { } ~ and backslash
- // however, we want to keep the base characters
-
- basekey = tidyAccents(basekey);
- basekey = basekey.replace(citeKeyCleanRe, "");
- var citekey = basekey;
- var i = 0;
- while(citekeys[citekey]) {
- i++;
- citekey = basekey + "-" + i;
- }
- citekeys[citekey] = true;
- return citekey;
-}
-
-function doExport() {
- //Zotero.write("% BibTeX export generated by Zotero "+Zotero.Utilities.getVersion());
- // to make sure the BOM gets ignored
- Zotero.write("\n");
-
- var first = true;
- var citekeys = new Object();
- var item;
- while(item = Zotero.nextItem()) {
- // determine type
- var type = zotero2bibtexTypeMap[item.itemType];
- if (typeof(type) == "function") { type = type(item); }
- if(!type) type = "misc";
-
- // create a unique citation key
- var citekey = buildCiteKey(item, citekeys);
-
- // write citation key
- Zotero.write((first ? "" : ",\n\n") + "@"+type+"{"+citekey);
- first = false;
-
- for(var field in fieldMap) {
- if(item[fieldMap[field]]) {
- writeField(field, item[fieldMap[field]]);
- }
- }
-
- if(item.reportNumber || item.issue || item.seriesNumber) {
- writeField("number", item.reportNumber || item.issue || item.seriesNumber);
- }
-
- if(item.publicationTitle) {
- if(item.itemType == "bookSection" || item.itemType == "conferencePaper") {
- writeField("booktitle", item.publicationTitle);
- } else {
- writeField("journal", item.publicationTitle);
- }
- }
-
- if(item.publisher) {
- if(item.itemType == "thesis") {
- writeField("school", item.publisher);
- } else if(item.itemType =="report") {
- writeField("institution", item.publisher);
- } else {
- writeField("publisher", item.publisher);
- }
- }
-
- if(item.creators && item.creators.length) {
- // split creators into subcategories
- var author = "";
- var editor = "";
- var translator = "";
- for(var i in item.creators) {
- var creator = item.creators[i];
- var creatorString = creator.lastName;
-
- if (creator.firstName) {
- creatorString = creator.lastName + ", " + creator.firstName;
- }
-
- if (creator.creatorType == "editor") {
- editor += " and "+creatorString;
- } else if (creator.creatorType == "translator") {
- translator += " and "+creatorString;
- } else {
- author += " and "+creatorString;
- }
- }
-
- if(author) {
- writeField("author", author.substr(5));
- }
- if(editor) {
- writeField("editor", editor.substr(5));
- }
- if(translator) {
- writeField("translator", translator.substr(5));
- }
- }
-
- if(item.date) {
- var date = Zotero.Utilities.strToDate(item.date);
- // need to use non-localized abbreviation
- if(typeof date.month == "number") {
- writeField("month", months[date.month], true);
- }
- if(date.year) {
- writeField("year", date.year);
- }
- }
-
- if(item.extra) {
- writeField("note", item.extra);
- }
-
- if(item.tags && item.tags.length) {
- var tagString = "";
- for(var i in item.tags) {
- var tag = item.tags[i];
- tagString += ", "+tag.tag;
- }
- writeField("keywords", tagString.substr(2));
- }
-
- if(item.pages) {
- writeField("pages", item.pages.replace("-","--"));
- }
-
- // Commented out, because we don't want a books number of pages in the BibTeX "pages" field for books.
- //if(item.numPages) {
- // writeField("pages", item.numPages);
- //}
-
- if(item.itemType == "webpage") {
- writeField("howpublished", item.url);
- }
- if (item.notes && Zotero.getOption("exportNotes")) {
- for(var i in item.notes) {
- var note = item.notes[i];
- writeField("annote", Zotero.Utilities.unescapeHTML(note["note"]));
- }
- }
-
- if(Zotero.getOption("exportFileData")) {
- if(item.attachments) {
- var attachmentString = "";
-
- for(var i in item.attachments) {
- var attachment = item.attachments[i];
- if(attachment.defaultPath) { // For Zotero 3.0
- attachment.saveFile(attachment.defaultPath, true);
- attachmentString += ";" + attachment.title + ":" + attachment.defaultPath + ":" + attachment.mimeType;
- } else if(attachment.path) { // For Zotero 2.1
- attachmentString += ";" + attachment.title + ":" + attachment.path + ":" + attachment.mimeType;
- }
- }
-
- if(attachmentString) {
- writeField("file", attachmentString.substr(1));
- }
- }
- }
-
- Zotero.write("\n}");
- }
-}
-
-/** BEGIN TEST CASES **/
-var testCases = [
- {
- "type": "import",
- "input": "@article{Adams2001,\u000aauthor = {Adams, Nancy K and DeSilva, Shanaka L and Self, Steven and Salas, Guido and Schubring, Steven and Permenter, Jason L and Arbesman, Kendra},\u000afile = {:Users/heatherwright/Documents/Scientific Papers/Adams\\_Huaynaputina.pdf:pdf;::},\u000ajournal = {Bulletin of Volcanology},\u000akeywords = {Vulcanian eruptions,breadcrust,plinian},\u000apages = {493--518},\u000atitle = {{The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru}},\u000avolume = {62},\u000ayear = {2001}\u000a}",
- "items": [
- {
- "itemType": "journalArticle",
- "creators": [
- {
- "firstName": "Nancy K",
- "lastName": "Adams",
- "creatorType": "author"
- },
- {
- "firstName": "Shanaka L",
- "lastName": "DeSilva",
- "creatorType": "author"
- },
- {
- "firstName": "Steven",
- "lastName": "Self",
- "creatorType": "author"
- },
- {
- "firstName": "Guido",
- "lastName": "Salas",
- "creatorType": "author"
- },
- {
- "firstName": "Steven",
- "lastName": "Schubring",
- "creatorType": "author"
- },
- {
- "firstName": "Jason L",
- "lastName": "Permenter",
- "creatorType": "author"
- },
- {
- "firstName": "Kendra",
- "lastName": "Arbesman",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [
- "Vulcanian eruptions",
- "breadcrust",
- "plinian"
- ],
- "seeAlso": [],
- "attachments": [
- {
- "url": "file://Users/heatherwright/Documents/Scientific Papers/Adams_Huaynaputina.pdf",
- "mimeType": "application/pdf",
- "title": "Attachment",
- "downloadable": true
- },
- {
- "url": "file://",
- "title": "Attachment",
- "downloadable": true
- }
- ],
- "publicationTitle": "Bulletin of Volcanology",
- "pages": "493–518",
- "title": "The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru",
- "volume": "62",
- "date": "2001"
- }
- ]
- },
- {
- "type": "import",
- "input": "@Book{abramowitz+stegun,\u000a author = \"Milton {Abramowitz} and Irene A. {Stegun}\",\u000a title = \"Handbook of Mathematical Functions with\u000a Formulas, Graphs, and Mathematical Tables\",\u000a publisher = \"Dover\",\u000a year = 1964,\u000a address = \"New York\",\u000a edition = \"ninth Dover printing, tenth GPO printing\"\u000a}\u000a\u000a@Book{Torre2008,\u000a author = \"Joe Torre and Tom Verducci\",\u000a publisher = \"Doubleday\",\u000a title = \"The Yankee Years\",\u000a year = 2008,\u000a isbn = \"0385527403\"\u000a}\u000a",
- "items": [
- {
- "itemType": "book",
- "creators": [
- {
- "firstName": "Milton",
- "lastName": "Abramowitz",
- "creatorType": "author"
- },
- {
- "firstName": "Irene A.",
- "lastName": "Stegun",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables",
- "publisher": "Dover",
- "date": "1964",
- "place": "New York",
- "edition": "ninth Dover printing, tenth GPO printing"
- },
- {
- "itemType": "book",
- "creators": [
- {
- "firstName": "Joe",
- "lastName": "Torre",
- "creatorType": "author"
- },
- {
- "firstName": "Tom",
- "lastName": "Verducci",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "publisher": "Doubleday",
- "title": "The Yankee Years",
- "date": "2008",
- "ISBN": "0385527403"
- }
- ]
- },
- {
- "type": "import",
- "input": "@INPROCEEDINGS {author:06,\u000a title = {Some publication title},\u000a author = {First Author and Second Author},\u000a crossref = {conference:06},\u000a pages = {330—331},\u000a}\u000a@PROCEEDINGS {conference:06,\u000a editor = {First Editor and Second Editor},\u000a title = {Proceedings of the Xth Conference on XYZ},\u000a booktitle = {Proceedings of the Xth Conference on XYZ},\u000a year = {2006},\u000a month = oct,\u000a}",
- "items": [
- {
- "itemType": "conferencePaper",
- "creators": [
- {
- "firstName": "First",
- "lastName": "Author",
- "creatorType": "author"
- },
- {
- "firstName": "Second",
- "lastName": "Author",
- "creatorType": "author"
- },
- {
- "firstName": "First",
- "lastName": "Editor",
- "creatorType": "editor"
- },
- {
- "firstName": "Second",
- "lastName": "Editor",
- "creatorType": "editor"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "Some publication title",
- "date": "October 2006",
- "proceedingsTitle": "Proceedings of the Xth Conference on XYZ",
- "pages": "330—331"
- },
- {
- "itemType": "book",
- "creators": [
- {
- "firstName": "First",
- "lastName": "Editor",
- "creatorType": "editor"
- },
- {
- "firstName": "Second",
- "lastName": "Editor",
- "creatorType": "editor"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "Proceedings of the Xth Conference on XYZ",
- "publicationTitle": "Proceedings of the Xth Conference on XYZ",
- "date": "October 2006"
- }
- ]
- },
- {
- "type": "import",
- "input": "@Book{hicks2001,\u000a author = \"von Hicks, III, Michael\",\u000a title = \"Design of a Carbon Fiber Composite Grid Structure for the GLAST\u000a Spacecraft Using a Novel Manufacturing Technique\",\u000a publisher = \"Stanford Press\",\u000a year = 2001,\u000a address = \"Palo Alto\",\u000a edition = \"1st,\",\u000a isbn = \"0-69-697269-4\"\u000a}",
- "items": [
- {
- "itemType": "book",
- "creators": [
- {
- "firstName": "Michael",
- "lastName": "von Hicks, III",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique",
- "publisher": "Stanford Press",
- "date": "2001",
- "place": "Palo Alto",
- "edition": "1st,",
- "ISBN": "0-69-697269-4"
- }
- ]
- },
- {
- "type": "import",
- "input": "@article{Oliveira_2009, title={USGS monitoring ecological impacts}, volume={107}, number={29}, journal={Oil & Gas Journal}, author={Oliveira, A}, year={2009}, pages={29}}",
- "items": [
- {
- "itemType": "journalArticle",
- "creators": [
- {
- "firstName": "A",
- "lastName": "Oliveira",
- "creatorType": "author"
- }
- ],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "USGS monitoring ecological impacts",
- "volume": "107",
- "issue": "29",
- "publicationTitle": "Oil & Gas Journal",
- "date": "2009",
- "pages": "29"
- }
- ]
- },
- {
- "type": "import",
- "input": "@article{test-ticket1661,\u000atitle={non-braking space: ~; accented characters: {\\~n} and \\~{n}; tilde operator: \\~},\u000a} ",
- "items": [
- {
- "itemType": "journalArticle",
- "creators": [],
- "notes": [],
- "tags": [],
- "seeAlso": [],
- "attachments": [],
- "title": "non-braking space: ; accented characters: ñ and ñ; tilde operator: ∼"
- }
- ]
- }
-]
-/** END TEST CASES **/
diff --git a/translators/Biblio.com.js b/translators/Biblio.com.js
deleted file mode 100644
index de73077360..0000000000
--- a/translators/Biblio.com.js
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "translatorID":"9932d1a7-cc6d-4d83-8462-8f6658b13dc0",
- "translatorType":4,
- "label":"Biblio.com",
- "creator":"Adam Crymble and Michael Berkowitz",
- "target":"http://www.biblio.com/",
- "minVersion":"1.0.0b4.r5",
- "maxVersion":"",
- "priority":100,
- "inRepository":true,
- "lastUpdated":"2008-07-07 14:50:00"
-}
-
-function detectWeb(doc, url) {
- if (doc.location.href.match("bookseller_search") || doc.location.href.match("bookstores") || doc.location.href.match("textbooks")) {
-
- } else if (doc.location.href.match("search")) {
- return "multiple";
- } else if (doc.location.href.match("books")) {
- return "book";
- }
-}
-
-//Biblio.com translator. Code by Adam Crymble.
-
-function associateData (newItem, dataTags, field, zoteroField) {
- if (dataTags[field]) {
- newItem[zoteroField] = dataTags[field];
- }
-}
-
-function scrape(doc, url) {
-
- var namespace = doc.documentElement.namespaceURI;
- var nsResolver = namespace ? function(prefix) {
- if (prefix == 'x') return namespace; else return null;
- } : null;
-
- var dataTags = new Object();
- var contents = new Array();
- var multiAuthors = new Array();
- var fieldTitle;
- var author1;
-
- var newItem = new Zotero.Item("book");
-
- var content = doc.evaluate('//div[@class="smalltext1"][@id="infobox"]/ul/li', doc, nsResolver, XPathResult.ANY_TYPE, null);
- var xPathCount = doc.evaluate('count (//div[@class="smalltext1"][@id="infobox"]/ul/li)', doc, nsResolver, XPathResult.ANY_TYPE, null);
-
- for (i=0; i: [, , ]
-
- Item classes should be in the form
-
- [[,