-
Notifications
You must be signed in to change notification settings - Fork 0
/
csl.js
66 lines (52 loc) · 1.38 KB
/
csl.js
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// # Setup
//
var fs = require('fs-extra'),
path = require('path'),
async = require('async'),
// non-modules
config = require('./config.json'),
csl = {},
styles = [];
config.mypath = module.filename;
module.exports = csl;
//
// # API
//
csl.list = function list (callback) {
if (!styles.length) {
return callback(new Error("No styles found!"));
}
else {
callback(null, styles);
}
};
//
// # Internals
//
// ## Init
//
// everything is "sync" since here since it happens when we are `require`d.
(function initSync() {
// "independent" styles only, for now
var source = path.resolve(path.join(config.mypath, '..'), config.source.independent);
// - get list of independent styles …
var files = fs.readdirSync(source);
// - catch error/empty result
if (!files) {
callback(err || new Error("No files found!"));
}
// - filter the non-csl files from `files` list
// - make obj for each item, push that to `styles`
files.forEach( function filter(item) {
// - if it is "foo.csl"
if (path.extname(item) === config.ext) {
// TODO: read some props from xml…
var obj = {
"id": item.replace(config.ext, ''), // "foo"
"path": path.resolve(config.mypath, '..', config.source.independent, item)
};
// - push to results
styles.push(obj);
}
});
}());