From fe1ce60a46bdb9b4515acdae8caa4c99422caff3 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Mon, 7 Feb 2011 08:47:15 +0000 Subject: [PATCH] update to citeproc-js 1.0.110 From Frank's release notes: With collapse="year", do not block the collapsing of subsequent authors due to differences that are masked by et al. truncation of the name list. --- chrome/content/zotero/xpcom/citeproc.js | 33 ++++++++++++------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/chrome/content/zotero/xpcom/citeproc.js b/chrome/content/zotero/xpcom/citeproc.js index 902f3d0b8..4753b99d6 100644 --- a/chrome/content/zotero/xpcom/citeproc.js +++ b/chrome/content/zotero/xpcom/citeproc.js @@ -1732,7 +1732,7 @@ CSL.DateParser = function (txt) { }; CSL.Engine = function (sys, style, lang, forceLang) { var attrs, langspec, localexml, locale; - this.processor_version = "1.0.109"; + this.processor_version = "1.0.110"; this.csl_version = "1.0"; this.sys = sys; this.sys.xml = new CSL.System.Xml.Parsing(); @@ -4498,10 +4498,8 @@ CSL.Node.names = { } } } - len = namesets.length; - for (pos = 0; pos < len; pos += 1) { + for (pos = 0, len = namesets.length; pos < len; pos += 1) { state.tmp.names_max.push(namesets[pos].names.length); - state.tmp.names_used.push(namesets[pos]); } state.tmp.value = namesets.slice(); } @@ -4670,18 +4668,6 @@ CSL.Node.names = { if (label && state.output.getToken("label").strings.label_position === CSL.BEFORE) { state.output.append(label, "label"); } - if (!state.tmp.suppress_decorations && (state[state.tmp.area].opt.collapse === "year" || state[state.tmp.area].opt.collapse === "year-suffix" || state[state.tmp.area].opt.collapse === "year-suffix-ranged")) { - if (state.tmp.last_names_used.length === state.tmp.names_used.length) { - lastones = state.tmp.last_names_used[state.tmp.nameset_counter]; - currentones = state.tmp.names_used[state.tmp.nameset_counter]; - compset = [currentones, lastones]; - if (CSL.Util.Names.getCommonTerm(state, compset)) { - continue; - } else { - state.tmp.have_collapsed = false; - } - } - } if (!state.tmp.disambig_request) { state.tmp.disambig_settings.givens[state.tmp.nameset_counter] = []; } @@ -4779,6 +4765,19 @@ CSL.Node.names = { } state.tmp.disambig_settings.names[state.tmp.nameset_counter] = display_names.length; local_count += display_names.length; + state.tmp.names_used.push({names:display_names,etal:et_al}); + if (!state.tmp.suppress_decorations && (state[state.tmp.area].opt.collapse === "year" || state[state.tmp.area].opt.collapse === "year-suffix" || state[state.tmp.area].opt.collapse === "year-suffix-ranged")) { + if (state.tmp.last_names_used.length === state.tmp.names_used.length) { + lastones = state.tmp.last_names_used[state.tmp.nameset_counter]; + currentones = state.tmp.names_used[state.tmp.nameset_counter]; + compset = [currentones, lastones]; + if (CSL.Util.Names.compareNamesets(lastones,currentones)) { + continue; + } else { + state.tmp.have_collapsed = false; + } + } + } llen = nameset.names.length; for (ppos = 0; ppos < llen; ppos += 1) { state.registry.namereg.addname("" + Item.id, nameset.names[ppos], ppos); @@ -7103,7 +7102,7 @@ CSL.Util.Names.getCommonTerm = function (state, namesets) { }; CSL.Util.Names.compareNamesets = function (base_nameset, nameset) { var name, pos, len, part, ppos, llen; - if (!base_nameset.names || !nameset.names || base_nameset.names.length !== nameset.names.length) { + if (!base_nameset.names || !nameset.names || base_nameset.names.length !== nameset.names.length || base_nameset.etal !== nameset.etal) { return false; } len = nameset.names.length;