Fix a bug in regex extracting fields to "extra"
Because regex is built using a template string, \s* is actually escaped into s*, i.e. literal "s" appearing 0 or more times. In most cases this would mean that output can have spacing slightly off. In extreme case, when identifier starts with letter "s", this could this could lead to identifier being stored incorrectly. Also adjusted tests to be more strict and mock data to cover this case.
This commit is contained in:
parent
42aebccbf4
commit
d418d79e70
3 changed files with 3 additions and 4 deletions
|
@ -1241,7 +1241,7 @@ Zotero_Import_Mendeley.prototype._makeCreator = function (creatorType, firstName
|
|||
Zotero_Import_Mendeley.prototype._addExtraField = function (extra, field, val) {
|
||||
// Strip the field if it appears at the beginning of the value (to avoid "DOI: DOI: 10...")
|
||||
if (typeof val == 'string') {
|
||||
val = val.replace(new RegExp(`^${field}:\s*`, 'i'), "");
|
||||
val = val.replace(new RegExp(`^${field}:\\s*`, 'i'), "");
|
||||
}
|
||||
extra = extra ? extra + '\n' : '';
|
||||
if (field != 'arXiv') {
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
"identifiers":
|
||||
{
|
||||
"doi": "10.1111",
|
||||
"pmid": "11111111",
|
||||
"pmid": "PMID: 11111111",
|
||||
"arxiv": "1111.2222"
|
||||
},
|
||||
"starred": false,
|
||||
|
|
|
@ -174,8 +174,7 @@ describe('Zotero_Import_Mendeley', function () {
|
|||
|
||||
// identifiers
|
||||
assert.equal(journal.getField('DOI'), '10.1111');
|
||||
assert.include(journal.getField('extra'), 'PMID: 11111111');
|
||||
assert.include(journal.getField('extra'), 'arXiv: 1111.2222');
|
||||
assert.sameMembers(journal.getField('extra').split('\n'), ['PMID: 11111111', 'arXiv: 1111.2222']);
|
||||
|
||||
// attachment & annotations
|
||||
assert.lengthOf(withpdf.getAttachments(), 1);
|
||||
|
|
Loading…
Reference in a new issue