Fix parsing of CSL date fields in extractExtraField()
This commit is contained in:
parent
78b5dbaca1
commit
83cc65eea6
2 changed files with 20 additions and 1 deletions
|
@ -972,7 +972,9 @@ Zotero.Utilities.Internal = {
|
||||||
for (let cslVar in map) {
|
for (let cslVar in map) {
|
||||||
let normalized = this._normalizeExtraKey(cslVar);
|
let normalized = this._normalizeExtraKey(cslVar);
|
||||||
let existing = fieldNames.get(normalized) || [];
|
let existing = fieldNames.get(normalized) || [];
|
||||||
fieldNames.set(normalized, new Set([...existing, ...map[cslVar]]));
|
// Text fields are one-to-many; date fields are one-to-one
|
||||||
|
let additional = Array.isArray(map[cslVar]) ? map[cslVar] : [map[cslVar]];
|
||||||
|
fieldNames.set(normalized, new Set([...existing, ...additional]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,14 @@ describe("Zotero.Utilities.Internal", function () {
|
||||||
assert.equal(creators[0].name, 'Bar');
|
assert.equal(creators[0].name, 'Bar');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should extract a CSL date field", function () {
|
||||||
|
var str = 'issued: 2000';
|
||||||
|
var { fields, extra } = Zotero.Utilities.Internal.extractExtraFields(str);
|
||||||
|
assert.equal(fields.size, 1);
|
||||||
|
assert.equal(fields.get('date'), 2000);
|
||||||
|
assert.strictEqual(extra, '');
|
||||||
|
});
|
||||||
|
|
||||||
it("should extract a CSL name", function () {
|
it("should extract a CSL name", function () {
|
||||||
var str = 'container-author: First || Last';
|
var str = 'container-author: First || Last';
|
||||||
var { creators, extra } = Zotero.Utilities.Internal.extractExtraFields(str);
|
var { creators, extra } = Zotero.Utilities.Internal.extractExtraFields(str);
|
||||||
|
@ -243,6 +251,15 @@ describe("Zotero.Utilities.Internal", function () {
|
||||||
assert.lengthOf(creators, 0);
|
assert.lengthOf(creators, 0);
|
||||||
assert.strictEqual(extra, str);
|
assert.strictEqual(extra, str);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should extract the citeproc-js cheater syntax", function () {
|
||||||
|
var issued = '{:number-of-pages:11}\n{:issued:2014}';
|
||||||
|
var { fields, extra } = Zotero.Utilities.Internal.extractExtraFields(issued);
|
||||||
|
assert.equal(fields.size, 2);
|
||||||
|
assert.equal(fields.get('numPages'), 11);
|
||||||
|
assert.equal(fields.get('date'), 2014);
|
||||||
|
assert.strictEqual(extra, '');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("#combineExtraFields", function () {
|
describe("#combineExtraFields", function () {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue