/** * Markdown Test Suite Fixer */ // this file is responsible for "fixing" // the markdown test suite. there are // certain aspects of the suite that // are strange or will make my tests // fail for reasons unrelated to // conformance. // fix the fact that the original markdown // does not escape quotes for some reason var path = require('path') , fs = require('fs') , dir = __dirname + '/tests'; // fix unencoded quotes fs.readdirSync(dir).filter(function(file) { return path.extname(file) === '.html'; }).forEach(function(file) { var file = path.join(dir, file) , html = fs.readFileSync(file, 'utf8'); html = html .replace(/='([^\n']*)'(?=[^<>\n]*>)/g, '=&__APOS__;$1&__APOS__;') .replace(/="([^\n"]*)"(?=[^<>\n]*>)/g, '=&__QUOT__;$1&__QUOT__;') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/&__QUOT__;/g, '"') .replace(/&__APOS__;/g, '\''); // fix code blocks html = html.replace(/
[^\0]+?<\/pre><\/code>/g, function(html) {
return html
.replace(/"/g, '"')
.replace(/'/g, ''');
});
fs.writeFileSync(file, html);
});
// turn
into
fs.readdirSync(dir).forEach(function(file) {
var file = path.join(dir, file)
, text = fs.readFileSync(file, 'utf8');
text = text.replace(/(<|<)hr\s*\/(>|>)/g, '$1hr$2');
fs.writeFileSync(file, text);
});
// markdown does some strange things.
// it does not encode naked `>`, marked does.
(function() {
var file = dir + '/amps_and_angles_encoding.html';
var html = fs.readFileSync(file, 'utf8')
.replace('6 > 5.', '6 > 5.')
fs.writeFileSync(file, html);
})();