Upgrade citeproc-js to version 1.0.251
This commit is contained in:
parent
3976f7afb1
commit
30373a1424
1 changed files with 107 additions and 23 deletions
|
@ -419,6 +419,23 @@ var CSL = {
|
||||||
"\u06E5": "\u0648",
|
"\u06E5": "\u0648",
|
||||||
"\u06E6": "\u064A"
|
"\u06E6": "\u064A"
|
||||||
},
|
},
|
||||||
|
LOCATOR_LABELS_REGEXP: new RegExp("^((ch|col|fig|no|l|n|op|p|para|pt|sec|sv|vrs|vol)\\.)\\s+(.*)"),
|
||||||
|
LOCATOR_LABELS_MAP: {
|
||||||
|
"ch": "chapter",
|
||||||
|
"col": "column",
|
||||||
|
"fig": "figure",
|
||||||
|
"no": "issue",
|
||||||
|
"l": "line",
|
||||||
|
"n": "note",
|
||||||
|
"op": "opus",
|
||||||
|
"p": "page",
|
||||||
|
"para": "para",
|
||||||
|
"pt": "part",
|
||||||
|
"sec": "section",
|
||||||
|
"sv": "sub-verbo",
|
||||||
|
"vrs": "verse",
|
||||||
|
"vol": "volume"
|
||||||
|
},
|
||||||
SUPERSCRIPTS_REGEXP: new RegExp("[\u00AA\u00B2\u00B3\u00B9\u00BA\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02E0\u02E1\u02E2\u02E3\u02E4\u1D2C\u1D2D\u1D2E\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3C\u1D3D\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D\u1D5E\u1D5F\u1D60\u1D61\u2070\u2071\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D\u207E\u207F\u2120\u2122\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199\u319A\u319B\u319C\u319D\u319E\u319F\u02C0\u02C1\u06E5\u06E6]", "g"),
|
SUPERSCRIPTS_REGEXP: new RegExp("[\u00AA\u00B2\u00B3\u00B9\u00BA\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02E0\u02E1\u02E2\u02E3\u02E4\u1D2C\u1D2D\u1D2E\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3C\u1D3D\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D\u1D5E\u1D5F\u1D60\u1D61\u2070\u2071\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D\u207E\u207F\u2120\u2122\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199\u319A\u319B\u319C\u319D\u319E\u319F\u02C0\u02C1\u06E5\u06E6]", "g"),
|
||||||
locale: {},
|
locale: {},
|
||||||
locale_opts: {},
|
locale_opts: {},
|
||||||
|
@ -800,7 +817,7 @@ CSL.Output.Queue.prototype.closeLevel = function (name) {
|
||||||
}
|
}
|
||||||
this.current.pop();
|
this.current.pop();
|
||||||
};
|
};
|
||||||
CSL.Output.Queue.prototype.append = function (str, tokname, notSerious) {
|
CSL.Output.Queue.prototype.append = function (str, tokname, notSerious, ignorePredecessor) {
|
||||||
var token, blob, curr;
|
var token, blob, curr;
|
||||||
var useblob = true;
|
var useblob = true;
|
||||||
if (this.state.tmp["doing-macro-with-date"]) {
|
if (this.state.tmp["doing-macro-with-date"]) {
|
||||||
|
@ -843,7 +860,9 @@ CSL.Output.Queue.prototype.append = function (str, tokname, notSerious) {
|
||||||
str = str.replace(/ ([:;?!\u00bb])/g, "\u202f$1").replace(/\u00ab /g, "\u00ab\u202f");
|
str = str.replace(/ ([:;?!\u00bb])/g, "\u202f$1").replace(/\u00ab /g, "\u00ab\u202f");
|
||||||
this.last_char_rendered = str.slice(-1);
|
this.last_char_rendered = str.slice(-1);
|
||||||
str = str.replace(/\s+'/g, " \'").replace(/^'/g, " \'");
|
str = str.replace(/\s+'/g, " \'").replace(/^'/g, " \'");
|
||||||
this.state.tmp.term_predecessor = true;
|
if (!ignorePredecessor) {
|
||||||
|
this.state.tmp.term_predecessor = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
blob = new CSL.Blob(str, token);
|
blob = new CSL.Blob(str, token);
|
||||||
curr = this.current.value();
|
curr = this.current.value();
|
||||||
|
@ -855,7 +874,9 @@ CSL.Output.Queue.prototype.append = function (str, tokname, notSerious) {
|
||||||
if (this.state.tmp.strip_periods) {
|
if (this.state.tmp.strip_periods) {
|
||||||
blob.blobs = blob.blobs.replace(/\./g, "");
|
blob.blobs = blob.blobs.replace(/\./g, "");
|
||||||
}
|
}
|
||||||
this.state.tmp.term_predecessor = true;
|
if (!ignorePredecessor) {
|
||||||
|
this.state.tmp.term_predecessor = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!notSerious) {
|
if (!notSerious) {
|
||||||
this.state.parallel.AppendBlobPointer(curr);
|
this.state.parallel.AppendBlobPointer(curr);
|
||||||
|
@ -1942,7 +1963,7 @@ CSL.DateParser = function () {
|
||||||
};
|
};
|
||||||
CSL.Engine = function (sys, style, lang, forceLang) {
|
CSL.Engine = function (sys, style, lang, forceLang) {
|
||||||
var attrs, langspec, localexml, locale;
|
var attrs, langspec, localexml, locale;
|
||||||
this.processor_version = "1.0.250";
|
this.processor_version = "1.0.251";
|
||||||
this.csl_version = "1.0";
|
this.csl_version = "1.0";
|
||||||
this.sys = sys;
|
this.sys = sys;
|
||||||
this.sys.xml = new CSL.System.Xml.Parsing();
|
this.sys.xml = new CSL.System.Xml.Parsing();
|
||||||
|
@ -2495,6 +2516,7 @@ CSL.Engine.Opt = function () {
|
||||||
this.development_extensions.field_hack = true;
|
this.development_extensions.field_hack = true;
|
||||||
this.development_extensions.locator_date_and_revision = true;
|
this.development_extensions.locator_date_and_revision = true;
|
||||||
this.development_extensions.locator_parsing_for_plurals = true;
|
this.development_extensions.locator_parsing_for_plurals = true;
|
||||||
|
this.development_extensions.locator_label_parse = true;
|
||||||
this.development_extensions.raw_date_parsing = true;
|
this.development_extensions.raw_date_parsing = true;
|
||||||
this.development_extensions.clean_up_csl_flaws = true;
|
this.development_extensions.clean_up_csl_flaws = true;
|
||||||
this.gender = {};
|
this.gender = {};
|
||||||
|
@ -3128,6 +3150,15 @@ CSL.Engine.prototype.processCitationCluster = function (citation, citationsPre,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (this.opt.development_extensions.locator_label_parse) {
|
||||||
|
if (item.locator && (!item.label || item.label === 'page')) {
|
||||||
|
var m = CSL.LOCATOR_LABELS_REGEXP.exec(item.locator);
|
||||||
|
if (m) {
|
||||||
|
item.label = CSL.LOCATOR_LABELS_MAP[m[2]];
|
||||||
|
item.locator = m[3];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Item = this.retrieveItem("" + item.id);
|
Item = this.retrieveItem("" + item.id);
|
||||||
var newitem = [Item, item];
|
var newitem = [Item, item];
|
||||||
sortedItems.push(newitem);
|
sortedItems.push(newitem);
|
||||||
|
@ -4261,7 +4292,7 @@ CSL.Node["date-part"] = {
|
||||||
if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.has_done_year_suffix) {
|
if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.has_done_year_suffix) {
|
||||||
state.tmp.has_done_year_suffix = true;
|
state.tmp.has_done_year_suffix = true;
|
||||||
num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);
|
num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);
|
||||||
number = new CSL.NumericBlob(num, this);
|
number = new CSL.NumericBlob(num, this, Item.id);
|
||||||
this.successor_prefix = state[state.build.area].opt.layout_delimiter;
|
this.successor_prefix = state[state.build.area].opt.layout_delimiter;
|
||||||
this.splice_prefix = state[state.build.area].opt.layout_delimiter;
|
this.splice_prefix = state[state.build.area].opt.layout_delimiter;
|
||||||
formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
|
formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
|
||||||
|
@ -4765,7 +4796,13 @@ CSL.Node.layout = {
|
||||||
if (item.prefix.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {
|
if (item.prefix.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {
|
||||||
sp = " ";
|
sp = " ";
|
||||||
}
|
}
|
||||||
state.output.append((item.prefix + sp), this);
|
var prefix = item.prefix.replace(/\s+$/, "");
|
||||||
|
var ignorePredecessor = false;
|
||||||
|
if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(prefix.slice(-1)) > -1) {
|
||||||
|
state.tmp.term_predecessor = false;
|
||||||
|
ignorePredecessor = true;
|
||||||
|
}
|
||||||
|
state.output.append((item.prefix + sp), this, false, ignorePredecessor);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
prefix_token.execs.push(func);
|
prefix_token.execs.push(func);
|
||||||
|
@ -6321,7 +6358,7 @@ CSL.NameOutput.prototype._splitInstitution = function (value, v, i) {
|
||||||
splitInstitution = splitInstitution.split("|");
|
splitInstitution = splitInstitution.split("|");
|
||||||
if (this.institution.strings.form === "short" && this.state.sys.getAbbreviation) {
|
if (this.institution.strings.form === "short" && this.state.sys.getAbbreviation) {
|
||||||
var jurisdiction = this.Item.jurisdiction;
|
var jurisdiction = this.Item.jurisdiction;
|
||||||
for (var j = splitInstitution.length; j > 1; j += -1) {
|
for (var j = splitInstitution.length; j > 0; j += -1) {
|
||||||
var str = splitInstitution.slice(0, j).join("|");
|
var str = splitInstitution.slice(0, j).join("|");
|
||||||
var jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-entire", str);
|
var jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-entire", str);
|
||||||
if (this.state.transform.abbrevs[jurisdiction]["institution-entire"][str]) {
|
if (this.state.transform.abbrevs[jurisdiction]["institution-entire"][str]) {
|
||||||
|
@ -6912,19 +6949,21 @@ CSL.Node.number = {
|
||||||
}
|
}
|
||||||
var values = state.tmp.shadow_numbers[varname].values;
|
var values = state.tmp.shadow_numbers[varname].values;
|
||||||
var blob;
|
var blob;
|
||||||
|
var newstr = ""
|
||||||
if (state.opt["page-range-format"]
|
if (state.opt["page-range-format"]
|
||||||
&& !this.strings.prefix && !this.strings.suffix
|
&& !this.strings.prefix && !this.strings.suffix
|
||||||
&& !this.strings.form) {
|
&& !this.strings.form) {
|
||||||
var newstr = ""
|
|
||||||
for (var i = 0, ilen = values.length; i < ilen; i += 1) {
|
for (var i = 0, ilen = values.length; i < ilen; i += 1) {
|
||||||
newstr += values[i][1];
|
newstr += values[i][1];
|
||||||
}
|
}
|
||||||
newstr = state.fun.page_mangler(newstr);
|
newstr = state.fun.page_mangler(newstr);
|
||||||
|
}
|
||||||
|
if (newstr && !newstr.match(/^[0-9]+$/)) {
|
||||||
state.output.append(newstr, this);
|
state.output.append(newstr, this);
|
||||||
} else {
|
} else {
|
||||||
state.output.openLevel("empty");
|
state.output.openLevel("empty");
|
||||||
for (var i = 0, ilen = values.length; i < ilen; i += 1) {
|
for (var i = 0, ilen = values.length; i < ilen; i += 1) {
|
||||||
var blob = new CSL[values[i][0]](values[i][1], values[i][2]);
|
var blob = new CSL[values[i][0]](values[i][1], values[i][2], Item.id);
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
blob.strings.prefix = blob.strings.prefix.replace(/^\s*/, "");
|
blob.strings.prefix = blob.strings.prefix.replace(/^\s*/, "");
|
||||||
}
|
}
|
||||||
|
@ -7033,7 +7072,7 @@ CSL.Node.text = {
|
||||||
if (state.opt.citation_number_slug) {
|
if (state.opt.citation_number_slug) {
|
||||||
state.output.append(state.opt.citation_number_slug, this);
|
state.output.append(state.opt.citation_number_slug, this);
|
||||||
} else {
|
} else {
|
||||||
number = new CSL.NumericBlob(num, this);
|
number = new CSL.NumericBlob(num, this, Item.id);
|
||||||
state.output.append(number, "literal");
|
state.output.append(number, "literal");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7051,7 +7090,7 @@ CSL.Node.text = {
|
||||||
func = function (state, Item) {
|
func = function (state, Item) {
|
||||||
if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.just_looking) {
|
if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig.year_suffix !== false && !state.tmp.just_looking) {
|
||||||
num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);
|
num = parseInt(state.registry.registry[Item.id].disambig.year_suffix, 10);
|
||||||
number = new CSL.NumericBlob(num, this);
|
number = new CSL.NumericBlob(num, this, Item.id);
|
||||||
formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
|
formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
|
||||||
number.setFormatter(formatter);
|
number.setFormatter(formatter);
|
||||||
state.output.append(number, "literal");
|
state.output.append(number, "literal");
|
||||||
|
@ -7103,16 +7142,7 @@ CSL.Node.text = {
|
||||||
if (!state.tmp.term_predecessor) {
|
if (!state.tmp.term_predecessor) {
|
||||||
myterm = CSL.Output.Formatters["capitalize-first"](state, term);
|
myterm = CSL.Output.Formatters["capitalize-first"](state, term);
|
||||||
} else {
|
} else {
|
||||||
if (item && item.prefix) {
|
myterm = term;
|
||||||
var prefix = item.prefix.replace(/\s+$/, "");
|
|
||||||
if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(prefix.slice(-1)) > -1) {
|
|
||||||
myterm = CSL.Output.Formatters["capitalize-first"](state, term);
|
|
||||||
} else {
|
|
||||||
myterm = term;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
myterm = term;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (state.tmp.strip_periods) {
|
if (state.tmp.strip_periods) {
|
||||||
myterm = myterm.replace(/\./g, "");
|
myterm = myterm.replace(/\./g, "");
|
||||||
|
@ -7251,6 +7281,54 @@ CSL.Node.text = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CSL.Attributes = {};
|
CSL.Attributes = {};
|
||||||
|
CSL.Attributes["@has-year-only"] = function (state, arg) {
|
||||||
|
trydates = arg.split(/\s+/);
|
||||||
|
func = function (state, Item, item) {
|
||||||
|
var ret = [];
|
||||||
|
for (var i = 0, ilen = trydates.length; i < ilen; i += 1) {
|
||||||
|
var trydate = Item[trydates[i]];
|
||||||
|
if (!trydate || trydate.month || trydate.season) {
|
||||||
|
ret.push(false)
|
||||||
|
} else {
|
||||||
|
ret.push(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
this.tests.push(func);
|
||||||
|
}
|
||||||
|
CSL.Attributes["@has-month-or-season-only"] = function (state, arg) {
|
||||||
|
trydates = arg.split(/\s+/);
|
||||||
|
func = function (state, Item, item) {
|
||||||
|
var ret = [];
|
||||||
|
for (var i = 0, ilen = trydates.length; i < ilen; i += 1) {
|
||||||
|
var trydate = Item[trydates[i]];
|
||||||
|
if (!trydate || (!trydate.month && !trydate.season) || trydate.day) {
|
||||||
|
ret.push(false)
|
||||||
|
} else {
|
||||||
|
ret.push(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
this.tests.push(func);
|
||||||
|
}
|
||||||
|
CSL.Attributes["@has-day-only"] = function (state, arg) {
|
||||||
|
trydates = arg.split(/\s+/);
|
||||||
|
func = function (state, Item, item) {
|
||||||
|
var ret = [];
|
||||||
|
for (var i = 0, ilen = trydates.length; i < ilen; i += 1) {
|
||||||
|
var trydate = Item[trydates[i]];
|
||||||
|
if (!trydate || !trydate.day) {
|
||||||
|
ret.push(false)
|
||||||
|
} else {
|
||||||
|
ret.push(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
this.tests.push(func);
|
||||||
|
}
|
||||||
CSL.Attributes["@part-separator"] = function (state, arg) {
|
CSL.Attributes["@part-separator"] = function (state, arg) {
|
||||||
this.strings["part-separator"] = arg;
|
this.strings["part-separator"] = arg;
|
||||||
}
|
}
|
||||||
|
@ -8229,6 +8307,9 @@ CSL.Transform = function (state) {
|
||||||
jurisdiction = "default";
|
jurisdiction = "default";
|
||||||
}
|
}
|
||||||
if (!orig) {
|
if (!orig) {
|
||||||
|
if (!this.abbrevs[jurisdiction]) {
|
||||||
|
this.abbrevs[jurisdiction] = new CSL.AbbreviationSegments();
|
||||||
|
}
|
||||||
return jurisdiction;
|
return jurisdiction;
|
||||||
}
|
}
|
||||||
if (state.sys.getAbbreviation) {
|
if (state.sys.getAbbreviation) {
|
||||||
|
@ -8847,7 +8928,8 @@ CSL.Blob.prototype.push = function (blob) {
|
||||||
this.blobs.push(blob);
|
this.blobs.push(blob);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CSL.NumericBlob = function (num, mother_token) {
|
CSL.NumericBlob = function (num, mother_token, id) {
|
||||||
|
this.id = id;
|
||||||
this.alldecor = [];
|
this.alldecor = [];
|
||||||
this.num = num;
|
this.num = num;
|
||||||
this.blobs = num.toString();
|
this.blobs = num.toString();
|
||||||
|
@ -8888,7 +8970,9 @@ CSL.Output.DefaultFormatter.prototype.format = function (num) {
|
||||||
return num.toString();
|
return num.toString();
|
||||||
};
|
};
|
||||||
CSL.NumericBlob.prototype.checkNext = function (next) {
|
CSL.NumericBlob.prototype.checkNext = function (next) {
|
||||||
if (! next || !next.num || this.type !== next.type || next.num !== (this.num + 1)) {
|
if (next && this.id == next.id) {
|
||||||
|
this.status = CSL.START;
|
||||||
|
} else if (! next || !next.num || this.type !== next.type || next.num !== (this.num + 1)) {
|
||||||
if (this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
|
if (this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
|
||||||
this.status = CSL.END;
|
this.status = CSL.END;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue