update to citeproc-js 1.0.63 (I think; the code itself still says 1.0.61, but this should be the latest revision available on bitbucket)

Form Frank's release notes:

citeproc-js 1.0.63:

Fix appendCitationCluster() to return a simple string, and required by
Zotero RTF Scan or any similar utility.

citeproc-js 1.0.62:

Block needless initialization of names where
the full name is requested and initialization
is not.

citeproc-js 1.0.61:

Block needless initialization of names where
form is long, no initialization is requested,
and last names are identical.

citeproc-js 1.0.60:

Turn on the parsing of name prefixes and
suffixes by default.

(This change should make CSL 1.0 name prefix
and suffix handling designed by Rintze Zelle
available to existing applications, without complex
changes to the user interface.)
This commit is contained in:
Simon Kornblith 2010-10-09 04:13:51 +00:00
parent 8cedbbe125
commit f4dfc13eab

View File

@ -1515,7 +1515,7 @@ CSL.dateParser = function (txt) {
};
CSL.Engine = function (sys, style, lang, xmlmode) {
var attrs, langspec, localexml, locale;
this.processor_version = "1.0.59";
this.processor_version = "1.0.61";
this.csl_version = "1.0";
this.sys = sys;
this.sys.xml = new CSL.System.Xml.Parsing();
@ -1527,6 +1527,9 @@ CSL.Engine = function (sys, style, lang, xmlmode) {
this.setAbbreviations = function (nick) {
this.transform.setAbbreviations(nick);
};
this.setParseNames = function (val) {
this.opt['parse-names'] = val;
};
this.opt = new CSL.Engine.Opt();
this.tmp = new CSL.Engine.Tmp();
this.build = new CSL.Engine.Build();
@ -1993,6 +1996,7 @@ CSL.Engine.Opt = function () {
this["et-al-subsequent-min"] = false;
this["et-al-subsequent-use-first"] = false;
this["demote-non-dropping-particle"] = "display-and-sort";
this["parse-names"] = true;
this.citation_number_slug = false;
};
CSL.Engine.Tmp = function () {
@ -4143,7 +4147,7 @@ CSL.Node.names = {
llen = nameset.names.length;
for (ppos = 0; ppos < llen; ppos += 1) {
name = nameset.names[ppos];
if (name["parse-names"]) {
if (name["parse-names"] || state.opt["parse-names"]) {
state.parseName(name);
}
if (name.family && name.family.length && name.family.slice(0, 1) === '"' && name.family.slice(-1)) {
@ -6442,14 +6446,14 @@ CSL.Util.Names.initNameSlices = function (state) {
};
CSL.Engine.prototype.parseName = function (name) {
var m, idx;
if (! name["non-dropping-particle"]) {
if (! name["non-dropping-particle"] && name.family) {
m = name.family.match(/^([ a-z]+\s+)/);
if (m) {
name.family = name.family.slice(m[1].length);
name["non-dropping-particle"] = m[1].replace(/\s+$/, "");
}
}
if (! name.suffix) {
if (!name.suffix && name.given) {
m = name.given.match(/(\s*,!*\s*)/);
if (m) {
idx = name.given.indexOf(m[1]);
@ -6460,7 +6464,7 @@ CSL.Engine.prototype.parseName = function (name) {
name.given = name.given.slice(0, idx);
}
}
if (! name["dropping-particle"]) {
if (! name["dropping-particle"] && name.given) {
m = name.given.match(/^(\s+[ a-z]*[a-z])$/);
if (m) {
name.given = name.given.slice(0, m[1].length * -1);
@ -7818,6 +7822,9 @@ CSL.Registry.NameReg = function (state) {
};
evalname = function (item_id, nameobj, namenum, request_base, form, initials) {
var pos, len, items, param;
if ((!form || 'long' == form) && 'string' !== typeof initials) {
return 2;
}
set_keys(this.state, item_id, nameobj);
if ("undefined" === typeof this.namereg[pkey] || "undefined" === typeof this.namereg[pkey].ikey[ikey]) {
return request_base;