UNPKG

1.06 kBJavaScriptView Raw
1var _ = require('lodash');
2var fsPath = require('path');
3
4module.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};