/** * @file Adds pretty printed source code to * the output files. * @author Matthew Christopher Kastor-Inare III * Hial Atropa!! * @version 20121017 */ exports.handlers = { beforeParse: function(e) { function bs2fs(text) { return text.replace(/\\/g, '/'); } function toRelativePath(text) { return text.replace(/^.*:/, ''); } function slashesCollapseToDots(text) { return text.replace(/[\/\\]+/g, '.'); } function suffixFsCollapse(text) { return text.replace(/\/+$/, '/'); } function noDotPrefix(text) { return text.replace(/^\./, ''); } function makeOutputFileName(sourceFileName, extension) { extension = extension || ''; var out; out = toRelativePath(sourceFileName); out = slashesCollapseToDots(out); out = noDotPrefix(out) out += extension; return out; } function getOutputDirectory() { var path = require('path'); var out; out = path.resolve(env.opts.destination); out = bs2fs(out); out = suffixFsCollapse(out + '/'); return out; } function generateHighlightedSourceFile(outDir, outfile, sourceContent) { var fs = require('fs'); var outsource; outsource = '\n'; outsource += ' \n'; outsource += ' \n'; outsource += ' Source of : ' + outfile + '\n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += ' \n'; outsource += '
\n';
            outsource += sourceContent;
            outsource += '      
\n'; outsource += ' '; outsource += ' ' outsource += '\n'; fs.mkPath(outDir); fs.writeFileSync(outfile, outsource); } function main() { var sourceFileName= bs2fs(e.filename); var sourceContent = e.source; var outFileName = makeOutputFileName(sourceFileName, '.html'); var outDir = getOutputDirectory(); var outfile = outDir + outFileName; /*// Debug print('source file name = ' + sourceFileName); print('output file name = ' + outFileName); print('output directory = ' + outDir); print('output file = ' + outfile); print('sourceContent = ' + sourceContent); //*/ // write source to file with a unique name generateHighlightedSourceFile(outDir, outfile, sourceContent); // link to source in documentation somehow } main(); } };