1 | var _ = require('lodash');
|
2 | var fsPath = require('path');
|
3 |
|
4 | module.exports = {
|
5 | supported: [
|
6 | {
|
7 | id: 'endnotexml',
|
8 | name: 'EndNote XML file',
|
9 | ext: ['.xml'],
|
10 | filename: 'endnote.xml',
|
11 | driver: require('reflib-endnotexml'),
|
12 | },
|
13 | ],
|
14 |
|
15 | identify: function(filename) {
|
16 | var ext = fsPath.extname(filename).toLowerCase();
|
17 | var found = _.find(this.supported, function(format) {
|
18 | return _.contains(format.ext, ext);
|
19 | });
|
20 | return found ? found.id : false;
|
21 | },
|
22 |
|
23 | parse: function(format, input) {
|
24 | var supported = _.find(this.supported, {id: format});
|
25 | if (!supported) throw new Error('Format is unsupported: ' + format);
|
26 | return supported.driver.parse(input);
|
27 | },
|
28 |
|
29 | output: function(options) {
|
30 | if (!_.isObject(options)) throw new Error('output(options) must be an object');
|
31 | if (!options.format) throw new Error('output(options) must specify a format');
|
32 |
|
33 | var supported = _.find(this.supported, {id: options.format});
|
34 | if (!supported) throw new Error('Format is unsupported: ' + options.format);
|
35 |
|
36 | return supported.driver.output(options);
|
37 | },
|
38 | };
|