Index: bower_components/marked/test/index.js |
diff --git a/bower_components/marked/test/index.js b/bower_components/marked/test/index.js |
deleted file mode 100644 |
index 35b52e2ae051ad62ceab098914ab778e3d97d933..0000000000000000000000000000000000000000 |
--- a/bower_components/marked/test/index.js |
+++ /dev/null |
@@ -1,543 +0,0 @@ |
-#!/usr/bin/env node |
- |
-/** |
- * marked tests |
- * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed) |
- * https://github.com/chjj/marked |
- */ |
- |
-/** |
- * Modules |
- */ |
- |
-var fs = require('fs') |
- , path = require('path') |
- , marked = require('../'); |
- |
-/** |
- * Load Tests |
- */ |
- |
-function load() { |
- var dir = __dirname + '/tests' |
- , files = {} |
- , list |
- , file |
- , i |
- , l; |
- |
- list = fs |
- .readdirSync(dir) |
- .filter(function(file) { |
- return path.extname(file) !== '.html'; |
- }) |
- .sort(function(a, b) { |
- a = path.basename(a).toLowerCase().charCodeAt(0); |
- b = path.basename(b).toLowerCase().charCodeAt(0); |
- return a > b ? 1 : (a < b ? -1 : 0); |
- }); |
- |
- i = 0; |
- l = list.length; |
- |
- for (; i < l; i++) { |
- file = path.join(dir, list[i]); |
- files[path.basename(file)] = { |
- text: fs.readFileSync(file, 'utf8'), |
- html: fs.readFileSync(file.replace(/[^.]+$/, 'html'), 'utf8') |
- }; |
- } |
- |
- return files; |
-} |
- |
-/** |
- * Test Runner |
- */ |
- |
-function runTests(engine, options) { |
- if (typeof engine !== 'function') { |
- options = engine; |
- engine = null; |
- } |
- |
- var engine = engine || marked |
- , options = options || {} |
- , files = options.files || load() |
- , complete = 0 |
- , failed = 0 |
- , failures = [] |
- , keys = Object.keys(files) |
- , i = 0 |
- , len = keys.length |
- , filename |
- , file |
- , flags |
- , text |
- , html |
- , j |
- , l; |
- |
- if (options.marked) { |
- marked.setOptions(options.marked); |
- } |
- |
-main: |
- for (; i < len; i++) { |
- filename = keys[i]; |
- file = files[filename]; |
- |
- if (marked._original) { |
- marked.defaults = marked._original; |
- delete marked._original; |
- } |
- |
- flags = filename.split('.').slice(1, -1); |
- if (flags.length) { |
- marked._original = marked.defaults; |
- marked.defaults = {}; |
- Object.keys(marked._original).forEach(function(key) { |
- marked.defaults[key] = marked._original[key]; |
- }); |
- flags.forEach(function(key) { |
- var val = true; |
- if (key.indexOf('no') === 0) { |
- key = key.substring(2); |
- val = false; |
- } |
- if (marked.defaults.hasOwnProperty(key)) { |
- marked.defaults[key] = val; |
- } |
- }); |
- } |
- |
- try { |
- text = engine(file.text).replace(/\s/g, ''); |
- html = file.html.replace(/\s/g, ''); |
- } catch(e) { |
- console.log('%s failed.', filename); |
- throw e; |
- } |
- |
- j = 0; |
- l = html.length; |
- |
- for (; j < l; j++) { |
- if (text[j] !== html[j]) { |
- failed++; |
- failures.push(filename); |
- |
- text = text.substring( |
- Math.max(j - 30, 0), |
- Math.min(j + 30, text.length)); |
- |
- html = html.substring( |
- Math.max(j - 30, 0), |
- Math.min(j + 30, html.length)); |
- |
- console.log( |
- '\n#%d. %s failed at offset %d. Near: "%s".\n', |
- i + 1, filename, j, text); |
- |
- console.log('\nGot:\n%s\n', text.trim() || text); |
- console.log('\nExpected:\n%s\n', html.trim() || html); |
- |
- if (options.stop) { |
- break main; |
- } |
- |
- continue main; |
- } |
- } |
- |
- complete++; |
- console.log('#%d. %s completed.', i + 1, filename); |
- } |
- |
- console.log('%d/%d tests completed successfully.', complete, len); |
- if (failed) console.log('%d/%d tests failed.', failed, len); |
- |
- // Tests currently failing. |
- if (~failures.indexOf('def_blocks.text') |
- && ~failures.indexOf('double_link.text') |
- && ~failures.indexOf('gfm_code_hr_list.text')) { |
- failed -= 3; |
- } |
- |
- return !failed; |
-} |
- |
-/** |
- * Benchmark a function |
- */ |
- |
-function bench(name, func) { |
- var files = bench.files || load(); |
- |
- if (!bench.files) { |
- bench.files = files; |
- |
- // Change certain tests to allow |
- // comparison to older benchmark times. |
- fs.readdirSync(__dirname + '/new').forEach(function(name) { |
- if (path.extname(name) === '.html') return; |
- if (name === 'main.text') return; |
- delete files[name]; |
- }); |
- |
- files['backslash_escapes.text'] = { |
- text: 'hello world \\[how](are you) today' |
- }; |
- |
- files['main.text'].text = files['main.text'].text.replace('* * *\n\n', ''); |
- } |
- |
- var start = Date.now() |
- , times = 1000 |
- , keys = Object.keys(files) |
- , i |
- , l = keys.length |
- , filename |
- , file; |
- |
- while (times--) { |
- for (i = 0; i < l; i++) { |
- filename = keys[i]; |
- file = files[filename]; |
- func(file.text); |
- } |
- } |
- |
- console.log('%s completed in %dms.', name, Date.now() - start); |
-} |
- |
-/** |
- * Benchmark all engines |
- */ |
- |
-function runBench(options) { |
- var options = options || {}; |
- |
- // Non-GFM, Non-pedantic |
- marked.setOptions({ |
- gfm: false, |
- tables: false, |
- breaks: false, |
- pedantic: false, |
- sanitize: false, |
- smartLists: false |
- }); |
- if (options.marked) { |
- marked.setOptions(options.marked); |
- } |
- bench('marked', marked); |
- |
- // GFM |
- marked.setOptions({ |
- gfm: true, |
- tables: false, |
- breaks: false, |
- pedantic: false, |
- sanitize: false, |
- smartLists: false |
- }); |
- if (options.marked) { |
- marked.setOptions(options.marked); |
- } |
- bench('marked (gfm)', marked); |
- |
- // Pedantic |
- marked.setOptions({ |
- gfm: false, |
- tables: false, |
- breaks: false, |
- pedantic: true, |
- sanitize: false, |
- smartLists: false |
- }); |
- if (options.marked) { |
- marked.setOptions(options.marked); |
- } |
- bench('marked (pedantic)', marked); |
- |
- // robotskirt |
- try { |
- bench('robotskirt', (function() { |
- var rs = require('robotskirt'); |
- return function(text) { |
- var parser = rs.Markdown.std(); |
- return parser.render(text); |
- }; |
- })()); |
- } catch (e) { |
- console.log('Could not bench robotskirt.'); |
- } |
- |
- // showdown |
- try { |
- bench('showdown (reuse converter)', (function() { |
- var Showdown = require('showdown'); |
- var convert = new Showdown.converter(); |
- return function(text) { |
- return convert.makeHtml(text); |
- }; |
- })()); |
- bench('showdown (new converter)', (function() { |
- var Showdown = require('showdown'); |
- return function(text) { |
- var convert = new Showdown.converter(); |
- return convert.makeHtml(text); |
- }; |
- })()); |
- } catch (e) { |
- console.log('Could not bench showdown.'); |
- } |
- |
- // markdown.js |
- try { |
- bench('markdown.js', require('markdown').parse); |
- } catch (e) { |
- console.log('Could not bench markdown.js.'); |
- } |
-} |
- |
-/** |
- * A simple one-time benchmark |
- */ |
- |
-function time(options) { |
- var options = options || {}; |
- if (options.marked) { |
- marked.setOptions(options.marked); |
- } |
- bench('marked', marked); |
-} |
- |
-/** |
- * Markdown Test Suite Fixer |
- * This function is responsible for "fixing" |
- * the markdown test suite. There are |
- * certain aspects of the suite that |
- * are strange or might make tests |
- * fail for reasons unrelated to |
- * conformance. |
- */ |
- |
-function fix(options) { |
- ['tests', 'original', 'new'].forEach(function(dir) { |
- try { |
- fs.mkdirSync(path.resolve(__dirname, dir), 0755); |
- } catch (e) { |
- ; |
- } |
- }); |
- |
- // rm -rf tests |
- fs.readdirSync(path.resolve(__dirname, 'tests')).forEach(function(file) { |
- fs.unlinkSync(path.resolve(__dirname, 'tests', file)); |
- }); |
- |
- // cp -r original tests |
- fs.readdirSync(path.resolve(__dirname, 'original')).forEach(function(file) { |
- var nfile = file; |
- if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.') === 0) { |
- nfile = file.replace(/\.(text|html)$/, '.nogfm.$1'); |
- } |
- fs.writeFileSync(path.resolve(__dirname, 'tests', nfile), |
- fs.readFileSync(path.resolve(__dirname, 'original', file))); |
- }); |
- |
- // node fix.js |
- var dir = __dirname + '/tests'; |
- |
- 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'); |
- |
- // fix unencoded quotes |
- 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, '\''); |
- |
- // add heading id's |
- html = html.replace(/<(h[1-6])>([^<]+)<\/\1>/g, function(s, h, text) { |
- var id = text |
- .replace(/'/g, '\'') |
- .replace(/"/g, '"') |
- .replace(/>/g, '>') |
- .replace(/</g, '<') |
- .replace(/&/g, '&'); |
- |
- id = id.toLowerCase().replace(/[^\w]+/g, '-'); |
- |
- return '<' + h + ' id="' + id + '">' + text + '</' + h + '>'; |
- }); |
- |
- fs.writeFileSync(file, html); |
- }); |
- |
- // turn <hr /> into <hr> |
- 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); |
- })(); |
- |
- // cp new/* tests/ |
- fs.readdirSync(path.resolve(__dirname, 'new')).forEach(function(file) { |
- fs.writeFileSync(path.resolve(__dirname, 'tests', file), |
- fs.readFileSync(path.resolve(__dirname, 'new', file))); |
- }); |
-} |
- |
-/** |
- * Argument Parsing |
- */ |
- |
-function parseArg(argv) { |
- var argv = process.argv.slice(2) |
- , options = {} |
- , orphans = [] |
- , arg; |
- |
- function getarg() { |
- var arg = argv.shift(); |
- |
- if (arg.indexOf('--') === 0) { |
- // e.g. --opt |
- arg = arg.split('='); |
- if (arg.length > 1) { |
- // e.g. --opt=val |
- argv.unshift(arg.slice(1).join('=')); |
- } |
- arg = arg[0]; |
- } else if (arg[0] === '-') { |
- if (arg.length > 2) { |
- // e.g. -abc |
- argv = arg.substring(1).split('').map(function(ch) { |
- return '-' + ch; |
- }).concat(argv); |
- arg = argv.shift(); |
- } else { |
- // e.g. -a |
- } |
- } else { |
- // e.g. foo |
- } |
- |
- return arg; |
- } |
- |
- while (argv.length) { |
- arg = getarg(); |
- switch (arg) { |
- case '-f': |
- case '--fix': |
- case 'fix': |
- options.fix = true; |
- break; |
- case '-b': |
- case '--bench': |
- options.bench = true; |
- break; |
- case '-s': |
- case '--stop': |
- options.stop = true; |
- break; |
- case '-t': |
- case '--time': |
- options.time = true; |
- break; |
- default: |
- if (arg.indexOf('--') === 0) { |
- opt = camelize(arg.replace(/^--(no-)?/, '')); |
- if (!marked.defaults.hasOwnProperty(opt)) { |
- continue; |
- } |
- options.marked = options.marked || {}; |
- if (arg.indexOf('--no-') === 0) { |
- options.marked[opt] = typeof marked.defaults[opt] !== 'boolean' |
- ? null |
- : false; |
- } else { |
- options.marked[opt] = typeof marked.defaults[opt] !== 'boolean' |
- ? argv.shift() |
- : true; |
- } |
- } else { |
- orphans.push(arg); |
- } |
- break; |
- } |
- } |
- |
- return options; |
-} |
- |
-/** |
- * Helpers |
- */ |
- |
-function camelize(text) { |
- return text.replace(/(\w)-(\w)/g, function(_, a, b) { |
- return a + b.toUpperCase(); |
- }); |
-} |
- |
-/** |
- * Main |
- */ |
- |
-function main(argv) { |
- var opt = parseArg(); |
- |
- if (opt.fix) { |
- return fix(opt); |
- } |
- |
- if (opt.bench) { |
- return runBench(opt); |
- } |
- |
- if (opt.time) { |
- return time(opt); |
- } |
- |
- return runTests(opt); |
-} |
- |
-/** |
- * Execute |
- */ |
- |
-if (!module.parent) { |
- process.title = 'marked'; |
- process.exit(main(process.argv.slice()) ? 0 : 1); |
-} else { |
- exports = main; |
- exports.main = main; |
- exports.runTests = runTests; |
- exports.runBench = runBench; |
- exports.load = load; |
- exports.bench = bench; |
- module.exports = exports; |
-} |