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) {
|
||||
let normalized = this._normalizeExtraKey(cslVar);
|
||||
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');
|
||||
});
|
||||
|
||||
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 () {
|
||||
var str = 'container-author: First || Last';
|
||||
var { creators, extra } = Zotero.Utilities.Internal.extractExtraFields(str);
|
||||
|
@ -243,6 +251,15 @@ describe("Zotero.Utilities.Internal", function () {
|
|||
assert.lengthOf(creators, 0);
|
||||
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 () {
|
||||
|
|
Loading…
Add table
Reference in a new issue