From 28ebbc9ba60c3e6cb0bf0c21c9193c6d4d5ffd21 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Sat, 19 Mar 2011 06:14:49 +0000 Subject: [PATCH] temporarily revert to citeproc-js 1.0.124, as citeproc-js 1.0.125 appears to have produced a very mysterious hang that only affects Firefox 3.6 MacWord users... --- chrome/content/zotero/xpcom/citeproc.js | 112 ++++++++++-------------- 1 file changed, 45 insertions(+), 67 deletions(-) diff --git a/chrome/content/zotero/xpcom/citeproc.js b/chrome/content/zotero/xpcom/citeproc.js index 370d437bb..901494e75 100644 --- a/chrome/content/zotero/xpcom/citeproc.js +++ b/chrome/content/zotero/xpcom/citeproc.js @@ -1752,7 +1752,7 @@ CSL.DateParser = function (txt) { }; CSL.Engine = function (sys, style, lang, forceLang) { var attrs, langspec, localexml, locale; - this.processor_version = "1.0.125"; + this.processor_version = "1.0.124"; this.csl_version = "1.0"; this.sys = sys; this.sys.xml = new CSL.System.Xml.Parsing(); @@ -4464,6 +4464,14 @@ CSL.Node.names = { } else { frontnames = []; } + if (tnamesets.length > 0 && tnamesets.slice(-1)[0].species === "org") { + tnamesets[0].organization_first = true; + tnamesets.slice(-1)[0].organization_last = true; + if (frontnames.length) { + frontnames[0].free_agent_start = true; + tnamesets.slice(-1)[0].free_agent_end = true; + } + } if (frontnames.length === 0) { if (tnamesets.length > 1) { if (tnamesets[0].species === "pers") { @@ -4511,9 +4519,15 @@ CSL.Node.names = { } } } + namesets = namesets.slice(0, 1); if (namesets.length) { if (namesets[0].species === "pers") { + namesets[0].organization_first = false; namesets[0].after_people = false; + namesets[0].free_agent_start = false; + namesets[0].free_agent_end = false; + } else { + namesets[0].organization_last = true; } } } @@ -4565,64 +4579,31 @@ CSL.Node.names = { } cutinfo = state.tmp.names_cut; if (namesets[0].species === "pers") { - if (state.tmp.cut_var) { - namesets[0].names = namesets[0].names.slice(cutinfo.counts[state.tmp.cut_var]); - } - if (namesets[0].names.length === 0) { - namesets = namesets.slice(1); - } - } - if (state.tmp.cut_var && cutinfo.used === state.tmp.cut_var) { - llen = cutinfo.variable[state.tmp.cut_var].length - 1; - for (ppos = llen; ppos > -1; ppos += -1) { - obj = cutinfo.variable[state.tmp.cut_var][ppos]; - obj[0].blobs = obj[0].blobs.slice(0, obj[1]).concat(obj[0].blobs.slice(obj[1] + 1)); - } + if (state.tmp.cut_var) { + namesets[0].names = namesets[0].names.slice(cutinfo.counts[state.tmp.cut_var]); + } + if (namesets[0].names.length === 0) { + if (namesets[0].free_agent_start) { + namesets[1].free_agent_start = true; + } + if (namesets[0].organization_first) { + namesets[1].organization_first = true; + } + namesets = namesets.slice(1); + } + } else { + namesets = namesets.slice(0, 1); + if (namesets[0].organization_first) { + namesets[0].organization_last = true; + } } - } - if (!state.output.getToken("and-org")) { - state.output.addToken("and-org"); - } - var prefix_single_org = " "; - var prefix_multiple_org = ", "; - var and_org = state.getTerm("and", "long", 0); - var offset = 0; - if (namesets.length > 1 && namesets[1].after_people) { - var offset = 1 - } - var numnamesets = 0; - for (i = offset, ilen = namesets.length; i < ilen; i += 1) { - if (namesets[i].species === 'org') { - if (i > 0 && namesets[i - 1].species === 'pers' && !namesets[i].after_people) { - namesets[i - 1].organization_first = true; - } else { - namesets [i].organization_first = true; - } - namesets[i].organization_last = true; - numnamesets += 1; + if (state.tmp.cut_var && cutinfo.used === state.tmp.cut_var) { + llen = cutinfo.variable[state.tmp.cut_var].length - 1; + for (ppos = llen; ppos > -1; ppos += -1) { + obj = cutinfo.variable[state.tmp.cut_var][ppos]; + obj[0].blobs = obj[0].blobs.slice(0, obj[1]).concat(obj[0].blobs.slice(obj[1] + 1)); } - } - var namesetcount = 0; - for (i = offset, ilen = namesets.length; i < ilen; i += 1) { - if (namesets[i].species === 'org' && numnamesets > 1) { - if ((i - offset) > 0 && numnamesets === (namesetcount + 1)) { - if (namesets[i - 1].species === 'pers') { - namesets[i - 2].institutions_and_join = true; - } else { - namesets[i - 1].institutions_and_join = true; - } - } - namesetcount += 1; - } - } - if (numnamesets > 1) { - state.output.getToken("and-org").strings.prefix = prefix_single_org; - if (numnamesets > 2) { - namesets[offset].institutions_penultimate_group_start = true; - namesets[namesets.length - 2].institutions_penultimate_group_end = true; - state.output.getToken("and-org").strings.prefix = prefix_multiple_org; - } - state.output.getToken("and-org").strings.suffix = " "; + } } if (!state.output.getToken("institution")) { state.output.addToken("institution"); @@ -4673,6 +4654,12 @@ CSL.Node.names = { state.output.getToken("and-pers").strings["prefix-single"] = " "; state.output.getToken("and-pers").strings["prefix-multiple"] = ", "; and_pers = state.getTerm("and", "long", 0); + if (!state.output.getToken("and-org")) { + state.output.addToken("and-org"); + } + state.output.getToken("and-org").strings["prefix-single"] = " "; + state.output.getToken("and-org").strings["prefix-multiple"] = ", "; + and_org = state.getTerm("and", "long", 0); state.output.addToken("with"); state.output.getToken("with").strings.prefix = ", "; state.output.getToken("with").strings.suffix = " "; @@ -4875,10 +4862,7 @@ CSL.Node.names = { state.output.openLevel("trailing-names", state.tmp.cut_var); } if (nameset.after_people) { - state.output.append(with_term, "with"); - } - if (nameset.institutions_penultimate_group_start) { - state.output.openLevel("inner"); + state.output.append("with", "with"); } if (nameset.organization_first) { state.output.openLevel("institution-outer"); @@ -4910,9 +4894,6 @@ CSL.Node.names = { state.output.closeLevel("trailing-names"); } state.output.closeLevel("institution-outer"); - if (nameset.institutions_penultimate_group_end) { - state.output.closeLevel("inner"); - } } else { if (nameset.trailers1b_end) { state.output.closeLevel("trailing-names"); @@ -4920,9 +4901,6 @@ CSL.Node.names = { state.output.closeLevel("inner"); state.output.openLevel("inner"); } - if (nameset.institutions_and_join) { - state.output.append(and_org, "and-org"); - } } if (nameset.trailers3_end) { state.output.closeLevel("trailing-names");