performance.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /**
  2. * Created by Tivie on 21/12/2016.
  3. */
  4. 'use strict';
  5. var fs = require('fs'),
  6. showdown = require('../../.build/showdown.js'),
  7. converter = new showdown.Converter(),
  8. pkg = require('../../package.json'),
  9. performance = require('./lib/performance.lib.js');
  10. performance.setLibraryName(pkg.name);
  11. performance.setVersion(pkg.version);
  12. performance.setGithubLink('https://github.com/showdownjs/showdown/tree/');
  13. var globals = {
  14. gHtmlBlocks: [],
  15. gHtmlMdBlocks: [],
  16. gHtmlSpans: [],
  17. gUrls: {},
  18. gTitles: {},
  19. gDimensions: {},
  20. gListLevel: 0,
  21. hashLinkCounts: {},
  22. langExtensions: [],
  23. outputModifiers: [],
  24. converter: converter,
  25. ghCodeBlocks: []
  26. },
  27. options = showdown.getOptions();
  28. function runTests () {
  29. var testMDFile = fs.readFileSync('test/performance.testfile.md', 'utf8');
  30. new performance.Suite('Basic')
  31. .setOption('cycles', 50)
  32. .add('Simple "Hello World"', function () {
  33. converter.makeHtml('*Hello* **World**!');
  34. })
  35. .add('performance.testfile.md', {
  36. prepare: function () {
  37. return testMDFile;
  38. },
  39. test: function (mdText) {
  40. converter.makeHtml(mdText);
  41. }
  42. });
  43. new performance.Suite('subParsers')
  44. .setOption('cycles', 20)
  45. .add('hashHTMLBlocks', function () {
  46. showdown.subParser('makehtml.hashHTMLBlocks')(testMDFile, options, globals);
  47. })
  48. .add('anchors', function () {
  49. showdown.subParser('makehtml.anchors')(testMDFile, options, globals);
  50. })
  51. .add('autoLinks', function () {
  52. showdown.subParser('makehtml.autoLinks')(testMDFile, options, globals);
  53. })
  54. .add('blockQuotes', function () {
  55. showdown.subParser('makehtml.blockQuotes')(testMDFile, options, globals);
  56. })
  57. .add('codeBlocks', function () {
  58. showdown.subParser('makehtml.codeBlocks')(testMDFile, options, globals);
  59. })
  60. .add('codeSpans', function () {
  61. showdown.subParser('makehtml.codeSpans')(testMDFile, options, globals);
  62. })
  63. .add('detab', function () {
  64. showdown.subParser('makehtml.detab')(testMDFile, options, globals);
  65. })
  66. .add('encodeAmpsAndAngles', function () {
  67. showdown.subParser('makehtml.encodeAmpsAndAngles')(testMDFile, options, globals);
  68. })
  69. .add('encodeBackslashEscapes', function () {
  70. showdown.subParser('makehtml.encodeBackslashEscapes')(testMDFile, options, globals);
  71. })
  72. .add('encodeCode', function () {
  73. showdown.subParser('makehtml.encodeCode')(testMDFile, options, globals);
  74. })
  75. .add('escapeSpecialCharsWithinTagAttributes', function () {
  76. showdown.subParser('makehtml.escapeSpecialCharsWithinTagAttributes')(testMDFile, options, globals);
  77. })
  78. .add('githubCodeBlocks', function () {
  79. showdown.subParser('makehtml.githubCodeBlocks')(testMDFile, options, globals);
  80. })
  81. .add('hashBlock', function () {
  82. showdown.subParser('makehtml.hashBlock')(testMDFile, options, globals);
  83. })
  84. .add('hashElement', function () {
  85. showdown.subParser('makehtml.hashElement')(testMDFile, options, globals);
  86. })
  87. .add('hashHTMLSpans', function () {
  88. showdown.subParser('makehtml.hashHTMLSpans')(testMDFile, options, globals);
  89. })
  90. .add('hashPreCodeTags', function () {
  91. showdown.subParser('makehtml.hashPreCodeTags')(testMDFile, options, globals);
  92. })
  93. .add('headers', function () {
  94. showdown.subParser('makehtml.headers')(testMDFile, options, globals);
  95. })
  96. .add('horizontalRule', function () {
  97. showdown.subParser('makehtml.horizontalRule')(testMDFile, options, globals);
  98. })
  99. .add('images', function () {
  100. showdown.subParser('makehtml.images')(testMDFile, options, globals);
  101. })
  102. .add('italicsAndBold', function () {
  103. showdown.subParser('makehtml.italicsAndBold')(testMDFile, options, globals);
  104. })
  105. .add('lists', function () {
  106. showdown.subParser('makehtml.lists')(testMDFile, options, globals);
  107. })
  108. .add('outdent', function () {
  109. showdown.subParser('makehtml.outdent')(testMDFile, options, globals);
  110. })
  111. .add('paragraphs', function () {
  112. showdown.subParser('makehtml.paragraphs')(testMDFile, options, globals);
  113. })
  114. .add('spanGamut', function () {
  115. showdown.subParser('makehtml.spanGamut')(testMDFile, options, globals);
  116. })
  117. .add('strikethrough', function () {
  118. showdown.subParser('makehtml.strikethrough')(testMDFile, options, globals);
  119. })
  120. .add('stripLinkDefinitions', function () {
  121. showdown.subParser('makehtml.stripLinkDefinitions')(testMDFile, options, globals);
  122. })
  123. .add('tables', function () {
  124. showdown.subParser('makehtml.tables')(testMDFile, options, globals);
  125. })
  126. .add('unescapeSpecialChars', function () {
  127. showdown.subParser('makehtml.unescapeSpecialChars')(testMDFile, options, globals);
  128. });
  129. }
  130. function generateLogs () {
  131. performance.generateLog(null, null, true);
  132. }
  133. module.exports = {
  134. runTests: runTests,
  135. generateLogs: generateLogs
  136. };