www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 9101cb487f35f913f6b6af60a40a9a7d4f3e3824
parent 4c6463413460fa03f814e0c66a5082b6cf45c294
Author: Sebastian Karcher <karcher@u.northwestern.edu>
Date:   Tue, 13 Sep 2016 17:31:26 -0600

Parse DOI: prefixed DOI from Extra (#1089)


Diffstat:
Mchrome/content/zotero/xpcom/utilities.js | 2++
Mtest/tests/utilities.js | 12++++++++----
2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js @@ -1634,6 +1634,8 @@ Zotero.Utilities = { if(m) cslItem.PMID = m[1]; m = /(?:^|\n)PMCID:\s*((?:PMC)?[0-9]+)/.exec(extra); if(m) cslItem.PMCID = m[1]; + m = /(?:^|\n)DOI:\s*(10\.[0-9]{4,}\/[^\s]*[^\s\.,])/.exec(extra); + if(m) cslItem.DOI = m[1]; } //this._cache[zoteroItem.id] = cslItem; diff --git a/test/tests/utilities.js b/test/tests/utilities.js @@ -237,13 +237,14 @@ describe("Zotero.Utilities", function() { }); it("should map additional fields from Extra field", function() { let item = new Zotero.Item('journalArticle'); - item.setField('extra', 'PMID: 12345\nPMCID:123456'); + item.setField('extra', 'PMID: 12345\nPMCID:123456\nDOI:10.5064/F6PN93H4'); item = Zotero.Items.get(item.save()); let cslJSON = Zotero.Utilities.itemToCSLJSON(item); assert.equal(cslJSON.PMID, '12345', 'PMID from Extra is mapped to PMID'); assert.equal(cslJSON.PMCID, '123456', 'PMCID from Extra is mapped to PMCID'); + assert.equal(cslJSON.DOI, '10.5064/F6PN93H4', 'DOI from Extra field is mapped to DOI'); item.setField('extra', 'PMID: 12345'); item.save(); @@ -251,20 +252,23 @@ describe("Zotero.Utilities", function() { assert.equal(cslJSON.PMID, '12345', 'single-line entry is extracted correctly'); - item.setField('extra', 'some junk: note\nPMID: 12345\nstuff in-between\nPMCID: 123456\nlast bit of junk!'); + item.setField('extra', 'some junk: note\nPMID: 12345\nstuff in-between\nPMCID: 123456\nDOI: 10.5064/F6PN93H4\nlast bit of junk!'); item.save(); cslJSON = Zotero.Utilities.itemToCSLJSON(item); assert.equal(cslJSON.PMID, '12345', 'PMID from mixed Extra field is mapped to PMID'); assert.equal(cslJSON.PMCID, '123456', 'PMCID from mixed Extra field is mapped to PMCID'); + assert.equal(cslJSON.DOI, '10.5064/F6PN93H4', 'DOI from mixed Extra field is mapped to DOI'); - item.setField('extra', 'a\n PMID: 12345\nfoo PMCID: 123456'); + item.setField('extra', 'a\n PMID: 12345\nfoo PMCID: 123456\n10.5064/F6PN93H4'); item.save(); cslJSON = Zotero.Utilities.itemToCSLJSON(item); assert.isUndefined(cslJSON.PMCID, 'field label must not be preceded by other text'); assert.isUndefined(cslJSON.PMID, 'field label must not be preceded by a space'); - assert.equal(cslJSON.note, 'a\n PMID: 12345\nfoo PMCID: 123456', 'note is left untouched if nothing is extracted'); + assert.isUndefined(cslJSON.DOI, 'DOI must be preceded by label'); + assert.equal(cslJSON.note, 'a\n PMID: 12345\nfoo PMCID: 123456\n10.5064/F6PN93H4', 'note is left untouched if nothing is extracted'); + item.setField('extra', 'something\npmid: 12345\n'); item.save();