www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit e0b96a873bc6c8e77f37cd156e2baadcf1516c26
parent 30f7ef093a82b16f96bb21f65fa7057795a4cceb
Author: Dan Stillman <dstillman@zotero.org>
Date:   Mon, 26 Sep 2016 14:02:09 -0400

Update citeproc-js to 1.1.136

Diffstat:
Mchrome/content/zotero/xpcom/citeproc.js | 95++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 63 insertions(+), 32 deletions(-)

diff --git a/chrome/content/zotero/xpcom/citeproc.js b/chrome/content/zotero/xpcom/citeproc.js @@ -23,7 +23,7 @@ * <http://www.gnu.org/licenses/> respectively. */ var CSL = { - PROCESSOR_VERSION: "1.1.133", + PROCESSOR_VERSION: "1.1.136", CONDITION_LEVEL_TOP: 1, CONDITION_LEVEL_BOTTOM: 2, PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/, @@ -227,35 +227,58 @@ var CSL = { } return lst.join("-"); }, - parseNoteFieldHacks: function(Item, validFieldsForType) { + parseNoteFieldHacks: function(Item, allowDateOverride) { if ("string" !== typeof Item.note) return; var elems = []; - var m = Item.note.match(CSL.NOTE_FIELDS_REGEXP); - if (m) { - var splt = Item.note.split(CSL.NOTE_FIELDS_REGEXP); - for (var i=0,ilen=(splt.length-1);i<ilen;i++) { - elems.push(splt[i]); - elems.push(m[i]); - } - elems.push(splt[splt.length-1]) - for (var i=1,ilen=elems.length;i<ilen;i += 2) { - elems[i] = '\n' + elems[i].slice(2,-1).trim() + '\n'; + var lines = Item.note.split('\n'); + var lastline = ""; + for (var i=0, ilen=lines.length; i<ilen; i++) { + var line = lines[i]; + var elems = []; + var m = line.match(CSL.NOTE_FIELDS_REGEXP); + if (m) { + var splt = line.split(CSL.NOTE_FIELDS_REGEXP); + for (var j=0,jlen=(splt.length-1);j<jlen;j++) { + elems.push(splt[j]); + elems.push(m[j]); + } + elems.push(splt[splt.length-1]) + for (var j=1,jlen=elems.length;j<jlen;j += 2) { + if (elems[j-1].trim() && (i>0 || j>1) && !elems[j-1].match(CSL.NOTE_FIELD_REGEXP)) { + break + } else { + elems[j] = '\n' + elems[j].slice(2,-1).trim() + '\n'; + } + } + lines[i] = elems.join(''); } - elems = elems.join('').split('\n'); - } else { - elems = Item.note.split('\n'); } + lines = lines.join('\n').split('\n'); var names = {}; - for (var i=0,ilen=elems.length;i<ilen;i++) { - var line = elems[i]; + for (var i=0,ilen=lines.length;i<ilen;i++) { + var line = lines[i]; var mm = line.match(CSL.NOTE_FIELD_REGEXP); - if (!mm) continue; + if (!line.trim()) { + continue; + } else if (!mm) { + if (i === 0) { + continue; + } else { + break; + } + } var key = mm[1]; var val = mm[2].replace(/^\s+/, "").replace(/\s+$/, ""); - if (!Item[key]) { - if (CSL.DATE_VARIABLES.indexOf(key) > -1) { + if (key === "type") { + Item.type = val; + lines[i] = ""; + } else if (CSL.DATE_VARIABLES.indexOf(key) > -1) { + if (allowDateOverride) { Item[key] = {raw: val}; - } else if (CSL.NAME_VARIABLES.indexOf(key) > -1) { + lines[i] = ""; + } + } else if (!Item[key]) { + if (CSL.NAME_VARIABLES.indexOf(key) > -1) { if (!names[key]) { names[key] = []; } @@ -270,16 +293,13 @@ var CSL = { } else { Item[key] = val; } - elems[i] = ""; - } - if (name === "type") { - Item.type = val; + lines[i] = ""; } - Item.note = elems.join(""); } for (var key in names) { Item[key] = names[key]; } + Item.note = lines.join("").trim(); }, GENDERS: ["masculine", "feminine"], ERROR_NO_RENDERED_FORM: 1, @@ -2820,7 +2840,7 @@ CSL.Engine.prototype.retrieveItem = function (id) { } } if (this.opt.development_extensions.field_hack && Item.note) { - CSL.parseNoteFieldHacks(Item); + CSL.parseNoteFieldHacks(Item, this.opt.development_extensions.allow_field_hack_date_override); } for (var i = 1, ilen = CSL.DATE_VARIABLES.length; i < ilen; i += 1) { var dateobj = Item[CSL.DATE_VARIABLES[i]]; @@ -4471,6 +4491,7 @@ CSL.Engine.Opt = function () { this.has_layout_locale = false; this.development_extensions = {}; this.development_extensions.field_hack = true; + this.development_extensions.allow_field_hack_date_override = true; this.development_extensions.locator_date_and_revision = true; this.development_extensions.locator_parsing_for_plurals = true; this.development_extensions.locator_label_parse = true; @@ -13914,11 +13935,21 @@ CSL.Util.outputNumericField = function(state, varname, itemID) { var lastLabelName = null; for (var i=0,ilen=nums.length;i<ilen;i++) { var num = nums[i]; - var labelName = CSL.STATUTE_SUBDIV_STRINGS[num.label]; - if (num.label === masterLabel) { - label = state.getTerm(labelName, labelForm, num.plural); - } else { - label = state.getTerm(labelName, embeddedLabelForm, num.plural); + var label = ""; + if (num.label) { + var labelName; + if ('var:' === num.label.slice(0,4)) { + labelName = num.label.slice(4); + } else { + labelName = CSL.STATUTE_SUBDIV_STRINGS[num.label]; + } + if (labelName) { + if (num.label === masterLabel) { + label = state.getTerm(labelName, labelForm, num.plural); + } else { + label = state.getTerm(labelName, embeddedLabelForm, num.plural); + } + } } var labelPlaceholderPos = -1; if (label) {