-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake.js
More file actions
executable file
·80 lines (72 loc) · 2.07 KB
/
make.js
File metadata and controls
executable file
·80 lines (72 loc) · 2.07 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env node
var concat = require('concat-stream');
var fs = require('fs');
var yaml = require('js-yaml');
var resumer = require('resumer');
var ejs = require('ejs');
var inspect = require('util').inspect;
var marked = require('marked');
var render = require('./render');
function markItDown(o) {
for(var key in o) {
if (typeof o[key] === 'object') {
markItDown(o[key]);
} else if (key === 'description') {
o[key] = marked(o[key]);
}
}
}
function compileReadingList(yamlInput, opts, cb) {
// Create Rsource List from yaml docs
var yamlDocs = [];
yaml.safeLoadAll(yamlInput, function(doc) {
markItDown(doc);
yamlDocs.push(doc);
});
//console.error(inspect(yamlDocs, {depth: null}));
// turn resources into a json string stream
var json = JSON.stringify({
resources: yamlDocs
});
// bake reading list into bookmarklet code
var browserify = require('browserify');
var b = browserify();
b.add(__dirname + '/bookmarklet.js');
b.transform('ejsify');
b.transform('stylify');
b.transform('uglifyify');
// combine reading list data as json
// and bookmark code
var bookmarkTemplate = fs.readFileSync(__dirname + '/bookmarklet.ejs', 'utf8');
b.bundle(function(err, src) {
if (err) {
return cb(err);
}
var o = {
json: json,
src: src
};
var bookmarklet = ejs.render(bookmarkTemplate, o);
opts.resources = yamlDocs;
opts.bookmarklet = bookmarklet;
var html = render(opts);
return cb(null, html);
});
}
if (module === require.main) {
var sink = concat(function(input) {
var opts = {
bookmarklet_link_text: 'SxEx'
};
compileReadingList(input, opts, function(err, html) {
if (err) {
console.error(err);
process.exit(1);
}
console.log(html);
});
});
process.stdin.pipe(sink);
} else {
module.exports = compileReadingList;
}