forked from asterjs/aster-parse
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
26 lines (20 loc) · 714 Bytes
/
index.js
File metadata and controls
26 lines (20 loc) · 714 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'use strict';
var Rx = require('rx');
var extname = require('path').extname;
// Yes, this needs to be single global storage for any versions of aster-parse installed.
var parsers = global['aster-parse'] || (global['aster-parse'] = {});
function parse(options) {
return function (files) {
return files
.groupBy(function (file) { return extname(file.path).toLowerCase() || '.' })
.flatMap(function (files) {
var ext = files.key;
var parser = parsers[ext] || parse.registerParser(ext, require('aster-parse-' + ext.slice(1)));
return parser(options)(files);
});
};
}
parse.registerParser = function (ext, parser) {
return parsers[ext.toLowerCase()] = parser;
};
module.exports = parse;