You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.0 KiB
37 lines
1.0 KiB
12 years ago
|
var argv = require('optimist').argv;
|
||
|
var fs = require('fs');
|
||
|
|
||
|
var CODE_SAMPLE = /```[\S]+\s*[\s\S]*?```/g;
|
||
|
var PARTS = /```[\S]+\s*\/\/\s+(.+?)\n([\s\S]*?)```/;
|
||
|
|
||
|
function truncate(s, n) {
|
||
|
n = n || 256
|
||
|
if (s.length < n) {
|
||
|
return s;
|
||
|
}
|
||
|
return s.substring(0, n) + '...';
|
||
|
}
|
||
|
|
||
|
function main(dest, filenames) {
|
||
|
if (!dest) {
|
||
|
throw new Error('no dest provided');
|
||
|
}
|
||
|
filenames.map(function (filename) {
|
||
|
var content = fs.readFileSync(filename).toString('utf8');
|
||
|
var codeSamples = content.match(CODE_SAMPLE);
|
||
|
|
||
|
codeSamples.map(function (codeSample) {
|
||
|
// Do a little jank preprocessing
|
||
|
codeSample = codeSample.replace('<!--', '//').replace(' -->', '');
|
||
|
var extracted = codeSample.match(PARTS);
|
||
|
if (!extracted) {
|
||
|
throw new Error('Code sample did not match correct format in ' + filename + ': ' + truncate(codeSample));
|
||
|
}
|
||
|
var filename = extracted[1];
|
||
|
var content = extracted[2].replace(/\*\*/g, '');
|
||
|
fs.writeFileSync(argv.dest + '/' + filename, content);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
main(argv.dest, argv._);
|