Update citeproc.js to latest build

Includes Juris-M/citeproc-js#253 and Juris-M/citeproc-js#254
This commit is contained in:
Dan Stillman 2025-08-07 00:52:42 -04:00
parent 90d7082a5d
commit d1d62cb91d

View file

@ -301,7 +301,7 @@ var CSL = {
}
},
MULTI_FIELDS: ["event", "publisher", "publisher-place", "event-place", "title", "container-title", "collection-title", "authority","genre","title-short","medium","country","jurisdiction","archive","archive-place"],
MULTI_FIELDS: ["event", "publisher", "publisher-place", "event-place", "title", "container-title", "collection-title", "event-title", "original-title", "part-title", "reviewed-title", "volume-title", "authority","genre","title-short","medium","country","jurisdiction","archive","archive-place"],
LangPrefsMap: {
"title":"titles",
@ -15657,6 +15657,11 @@ CSL.Node.text = {
value = value.replace(/https?:\/\//, "");
}
}
if (this.variables[0] === "DOI") {
if (!value.match(/^https?:\/\//) && this.strings.prefix && this.strings.prefix.match(/^.*https:\/\/doi\.org\/$/)) {
value = CSL.Util.encodeDoiForUrl(value);
}
}
// true is for non-suppression of periods
if (state.opt.development_extensions.wrap_url_and_doi) {
if (!this.decorations.length || this.decorations[0][0] !== "@" + this.variables[0]) {
@ -15671,7 +15676,10 @@ CSL.Node.text = {
// strip a proper DOI prefix
var prefix;
if (this.strings.prefix && this.strings.prefix.match(/^.*https:\/\/doi\.org\/$/)) {
value = value.replace(/^https?:\/\/doi\.org\//, "");
if (value.match(/^https?:\/\/doi\.org\//)) {
value = value.replace(/^https?:\/\/doi\.org\//, "");
value = decodeURIComponent(value);
}
if (value.match(/^https?:\/\//)) {
// Do not tamper with another protocol + domain if already set in field value
prefix = "";
@ -15682,6 +15690,9 @@ CSL.Node.text = {
// set any string prefix on the clone
clonetoken.strings.prefix = this.strings.prefix.slice(0, clonetoken.strings.prefix.length-16);
}
if (!value.match(/^https?:\/\//)) {
value = CSL.Util.encodeDoiForUrl(value);
}
// cast a text blob
// set the prefix as the content of the blob
var prefixblob = new CSL.Blob(prefix);
@ -17736,6 +17747,10 @@ CSL.Util.Match = function () {
};
CSL.Util.encodeDoiForUrl = function (doi) {
return doi.replace(/[\u0000-\u0020"#%<>?[\\\]^`{|}\u007F-\u009F]/g, encodeURIComponent);
};
/*global CSL: true */
/*
@ -22276,7 +22291,7 @@ CSL.Output.Formats.prototype.html = {
"@DOI/true": function (state, str) {
var doiurl = str;
if (!str.match(/^https?:\/\//)) {
doiurl = "https://doi.org/" + str;
doiurl = "https://doi.org/" + CSL.Util.encodeDoiForUrl(str);
}
return "<a href=\"" + doiurl + "\">" + str + "</a>";
}
@ -22579,7 +22594,7 @@ CSL.Output.Formats.prototype.asciidoc = {
"@DOI/true": function (state, str) {
var doiurl = str;
if (!str.match(/^https?:\/\//)) {
doiurl = "https://doi.org/" + str;
doiurl = "https://doi.org/" + CSL.Util.encodeDoiForUrl(str);
}
return doiurl + "[" + str + "]";
}