diff --git a/chrome/content/zotero/xpcom/citeproc.js b/chrome/content/zotero/xpcom/citeproc.js index e717a50fe..d865a2deb 100644 --- a/chrome/content/zotero/xpcom/citeproc.js +++ b/chrome/content/zotero/xpcom/citeproc.js @@ -1,28 +1,72 @@ /* - * /** - * Copyright (c) 2009-2016 Frank Bennett + * Copyright (c) 2009-2014 Frank G. Bennett * - * This program is free software: you can redistribute it and/or - * modify it under EITHER + * Unless otherwise indicated, the files in this repository are subject + * to the Common Public Attribution License Version 1.0 (the “License”); + * you may not use this file except in compliance with the License. You + * may obtain a copy of the License at: * - * * the terms of the Common Public Attribution License (CPAL) as - * published by the Open Source Initiative, either version 1 of - * the CPAL, or (at your option) any later version; OR + * http://bitbucket.org/fbennett/citeproc-js/src/tip/LICENSE. * - * * the terms of the GNU Affero General Public License (AGPL) - * as published by the Free Software Foundation, either version - * 3 of the AGPL, or (at your option) any later version. + * (See also the note on attribution information below) * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Affero General Public License for more details. + * The License is based on the Mozilla Public License Version 1.1 but + * Sections 1.13, 14 and 15 have been added to cover use of software over a + * computer network and provide for limited attribution for the + * Original Developer. In addition, Exhibit A has been modified to be + * consistent with Exhibit B. * - * You should have received copies of the Common Public Attribution - * License and of the GNU Affero General Public License along with - * this program. If not, see or - * respectively. - * */ + * Software distributed under the License is distributed on an “AS IS” + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is the citation formatting software known as + * "citeproc-js" (an implementation of the Citation Style Language + * [CSL]), including the original test fixtures and software located + * under the ./tests subdirectory of the distribution archive. + * + * The Original Developer is not the Initial Developer and is + * __________. If left blank, the Original Developer is the Initial + * Developer. + * + * The Initial Developer of the Original Code is Frank Bennett. All + * portions of the code written by Frank Bennett are Copyright (c) + * 2009-2014 Frank Bennett. + * + * *** + * + * Alternatively, the files in this repository may be used under the + * terms of the GNU Affero General Public License (the [AGPLv3] License), + * in which case the provisions of [AGPLv3] License are applicable + * instead of those above. If you wish to allow use of your version of + * this file only under the terms of the [AGPLv3] License and not to + * allow others to use your version of this file under the CPAL, indicate + * your decision by deleting the provisions above and replace them with + * the notice and other provisions required by the [AGPLv3] License. If + * you do not delete the provisions above, a recipient may use your + * version of this file under either the CPAL or the [AGPLv3] License. + * + * *** + * + * Attribution Information (CPAL) + * + * Attribution Copyright Notice: [no separate attribution copyright notice is required] + * + * Attribution Phrase: "Citations by CSL (citeproc-js)" + * + * Attribution URL: http://citationstyles.org/ + * + * Graphic Image: [there is no requirement to display a Graphic Image] + * + * Display of Attribution Information is REQUIRED in Larger Works which + * are defined in the CPAL as a work which combines Covered Code or + * portions thereof with code not governed by the terms of the CPAL. + * + * Display of Attribution Information is also REQUIRED on Associated + * Websites. + * + * [ citeproc-js license :: version 1.1 :: 2012.06.30 ] */ if (!Array.indexOf) { Array.prototype.indexOf = function (obj) { @@ -36,13 +80,13 @@ if (!Array.indexOf) { }; } var CSL = { - PROCESSOR_VERSION: "1.1.74", + PROCESSOR_VERSION: "1.1.60", CONDITION_LEVEL_TOP: 1, CONDITION_LEVEL_BOTTOM: 2, PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/, LOCATOR_LABELS_REGEXP: new RegExp("^((art|ch|subch|col|fig|l|n|no|op|p|pp|para|subpara|pt|r|sec|subsec|sv|sch|tit|vrs|vol)\\.)\\s+(.*)"), - STATUTE_SUBDIV_GROUPED_REGEX: /((?:^| )(?:art|bk|ch|subch|col|fig|fol|l|n|no|op|p|pp|para|subpara|pt|r|sec|subsec|sv|sch|tit|vrs|vol)\. *)/g, - STATUTE_SUBDIV_PLAIN_REGEX: /(?:(?:^| )(?:art|bk|ch|subch|col|fig|fol|l|n|no|op|p|pp|para|subpara|pt|r|sec|subsec|sv|sch|tit|vrs|vol)\. *)/, + STATUTE_SUBDIV_GROUPED_REGEX: /((?:^| )(?:art|ch|subch|p|pp|para|subpara|pt|r|sec|subsec|sch|tit)\.)/g, + STATUTE_SUBDIV_PLAIN_REGEX: /(?:(?:^| )(?:art|ch|subch|p|pp|para|subpara|pt|r|sec|subsec|sch|tit)\.)/, STATUTE_SUBDIV_STRINGS: { "art.": "article", "bk.": "book", @@ -148,35 +192,9 @@ var CSL = { ["(", "["], [")", "]"] ], - checkNestedBrace: function(state) { - if (state.opt.xclass === "note") { - this.depth = 0; - this.update = function(str) { - var str = str ? str : ''; - var lst = str.split(/([\(\)])/); - for (var i=1,ilen=lst.length;i).*?(?:<\/span>|<\/?(?:i|sc|b)>)))/g); + lst = str.split(/(?:(?:\"|\')|(?:(?:).*?(?:<\/span>|<\/?(?:i|sc|b)>)))/g); + myret = [lst[0]]; + for (pos = 1, len = lst.length; pos < len; pos += 1) { + myret.push(mx[pos - 1]); + myret.push(lst[pos]); } - var pairs = { - "": "", - "": "" - }; - var stack = []; - str = str.replace(/()/g, "$1 $2$3"); - var m1match = str.match(/((?: \"| \'|\" |\'[-.,;\?:]|\[|\]|\(|\)||<\/span>|<\/?(?:i|sc|b)>))/g); - if (!m1match) { - return [str]; - } - var m1split = str.split(/(?: \"| \'|\" |\'[-.,;\?:]|\[|\]|\(|\)||<\/span>|<\/?(?:i|sc|b)>)/g); - outer: for (var i=0,ilen=m1match.length; i -1) { - if (!m1split[i-1].match(/[:\?\!]\s*$/)) { - m1match[i-1] = m1match[i-1] + mFirstWord[1]; - m1split[i] = mFirstWord[3]; - } - } - } - continue; - } - if (stack.length) { - for (var j=stack.length-1; j>-1; j--) { - var stackObj = stack.slice(j)[0]; - if (m1match[i] === pairs[stackObj.tag]) { - stack = stack.slice(0, j+1); - var startPos = stack[j].pos; - for (var k=stack[j].pos+1; k -1 && !myjson.children[i].attrs.prefix && !myjson.children[i].attrs.suffix) { - mustHaves = mustHaves.slice(0,haveVarname).concat(mustHaves.slice(haveVarname+1)); - } else { - useme = false; - break; - } - } - if (useme && !mustHaves.length) { - myjson.attrs["has-publisher-and-publisher-place"] = true; - } - } - for (var i=0,ilen=myjson.children.length;i 0) { - var myparents = parents.slice(); - var parent = myparents.pop(); - if (parent === "substitute") { - return true; - } else { - return this.isChildOfSubstitute(myparents); - } - } - return false; -}; -CSL.XmlJSON.prototype.addMissingNameNodes = function(myjson,parents) { - if (!parents) { - parents = []; - } - if (myjson.name === "names") { - if (!this.isChildOfSubstitute(parents)) { - var addName = true; - for (var i=0,ilen=myjson.children.length;i -1) { - var institution = this.nodeCopy(this.institution); - for (var i=0,ilen = CSL.INSTITUTION_KEYS.length;i/, ""); - xml = xml.replace(//g, ""); - xml = xml.replace(/^\s+/g, ""); - xml = xml.replace(/\s+$/g, ""); - return xml; -}; -CSL.parseXml = function(str) { - var _pos = 0; - var _obj = {children:[]}; - var _stack = [_obj.children]; - function _listifyString(str) { - str = str.split("\n").join(" ").replace(/>[ ]+<").replace(/<\!--.*?-->/g, ""); - var lst = str.split("><"); - var stylePos = null; - for (var i=0,ilen=lst.length;i 0) { - lst[i] = "<" + lst[i]; - } - if (i < (lst.length-1)) { - lst[i] = lst[i] + ">"; - } - if ("number" != typeof stylePos) { - if (lst[i].slice(0, 7) === "