fluentd-ui 0.3.12 → 0.3.13

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fluentd-ui might be problematic. Click here for more details.

Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +4 -0
  3. data/Gemfile.lock +1 -1
  4. data/app/assets/javascripts/application.js +2 -0
  5. data/app/assets/javascripts/codemirror.js +29 -0
  6. data/app/assets/javascripts/codemirror_fluentd.js +59 -0
  7. data/app/assets/stylesheets/application.css +6 -0
  8. data/app/views/fluentd/settings/edit.html.haml +1 -1
  9. data/app/views/shared/vue/_setting.html.erb +1 -1
  10. data/bower.json +2 -1
  11. data/lib/fluentd-ui/version.rb +1 -1
  12. data/spec/features/source_and_output_spec.rb +16 -6
  13. data/vendor/assets/javascripts/bower/codemirror/.bower.json +29 -0
  14. data/vendor/assets/javascripts/bower/codemirror/AUTHORS +423 -0
  15. data/vendor/assets/javascripts/bower/codemirror/CONTRIBUTING.md +76 -0
  16. data/vendor/assets/javascripts/bower/codemirror/LICENSE +19 -0
  17. data/vendor/assets/javascripts/bower/codemirror/README.md +11 -0
  18. data/vendor/assets/javascripts/bower/codemirror/addon/comment/comment.js +183 -0
  19. data/vendor/assets/javascripts/bower/codemirror/addon/comment/continuecomment.js +85 -0
  20. data/vendor/assets/javascripts/bower/codemirror/addon/dialog/dialog.css +32 -0
  21. data/vendor/assets/javascripts/bower/codemirror/addon/dialog/dialog.js +155 -0
  22. data/vendor/assets/javascripts/bower/codemirror/addon/display/fullscreen.css +6 -0
  23. data/vendor/assets/javascripts/bower/codemirror/addon/display/fullscreen.js +41 -0
  24. data/vendor/assets/javascripts/bower/codemirror/addon/display/panel.js +94 -0
  25. data/vendor/assets/javascripts/bower/codemirror/addon/display/placeholder.js +58 -0
  26. data/vendor/assets/javascripts/bower/codemirror/addon/display/rulers.js +64 -0
  27. data/vendor/assets/javascripts/bower/codemirror/addon/edit/closebrackets.js +159 -0
  28. data/vendor/assets/javascripts/bower/codemirror/addon/edit/closetag.js +159 -0
  29. data/vendor/assets/javascripts/bower/codemirror/addon/edit/continuelist.js +51 -0
  30. data/vendor/assets/javascripts/bower/codemirror/addon/edit/matchbrackets.js +120 -0
  31. data/vendor/assets/javascripts/bower/codemirror/addon/edit/matchtags.js +66 -0
  32. data/vendor/assets/javascripts/bower/codemirror/addon/edit/trailingspace.js +27 -0
  33. data/vendor/assets/javascripts/bower/codemirror/addon/fold/brace-fold.js +105 -0
  34. data/vendor/assets/javascripts/bower/codemirror/addon/fold/comment-fold.js +57 -0
  35. data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldcode.js +145 -0
  36. data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldgutter.css +20 -0
  37. data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldgutter.js +134 -0
  38. data/vendor/assets/javascripts/bower/codemirror/addon/fold/indent-fold.js +44 -0
  39. data/vendor/assets/javascripts/bower/codemirror/addon/fold/markdown-fold.js +49 -0
  40. data/vendor/assets/javascripts/bower/codemirror/addon/fold/xml-fold.js +182 -0
  41. data/vendor/assets/javascripts/bower/codemirror/addon/hint/anyword-hint.js +41 -0
  42. data/vendor/assets/javascripts/bower/codemirror/addon/hint/css-hint.js +56 -0
  43. data/vendor/assets/javascripts/bower/codemirror/addon/hint/html-hint.js +348 -0
  44. data/vendor/assets/javascripts/bower/codemirror/addon/hint/javascript-hint.js +146 -0
  45. data/vendor/assets/javascripts/bower/codemirror/addon/hint/show-hint.css +38 -0
  46. data/vendor/assets/javascripts/bower/codemirror/addon/hint/show-hint.js +389 -0
  47. data/vendor/assets/javascripts/bower/codemirror/addon/hint/sql-hint.js +197 -0
  48. data/vendor/assets/javascripts/bower/codemirror/addon/hint/xml-hint.js +110 -0
  49. data/vendor/assets/javascripts/bower/codemirror/addon/lint/coffeescript-lint.js +41 -0
  50. data/vendor/assets/javascripts/bower/codemirror/addon/lint/css-lint.js +35 -0
  51. data/vendor/assets/javascripts/bower/codemirror/addon/lint/javascript-lint.js +136 -0
  52. data/vendor/assets/javascripts/bower/codemirror/addon/lint/json-lint.js +31 -0
  53. data/vendor/assets/javascripts/bower/codemirror/addon/lint/lint.css +73 -0
  54. data/vendor/assets/javascripts/bower/codemirror/addon/lint/lint.js +204 -0
  55. data/vendor/assets/javascripts/bower/codemirror/addon/lint/yaml-lint.js +28 -0
  56. data/vendor/assets/javascripts/bower/codemirror/addon/merge/merge.css +112 -0
  57. data/vendor/assets/javascripts/bower/codemirror/addon/merge/merge.js +643 -0
  58. data/vendor/assets/javascripts/bower/codemirror/addon/mode/loadmode.js +64 -0
  59. data/vendor/assets/javascripts/bower/codemirror/addon/mode/multiplex.js +118 -0
  60. data/vendor/assets/javascripts/bower/codemirror/addon/mode/multiplex_test.js +33 -0
  61. data/vendor/assets/javascripts/bower/codemirror/addon/mode/overlay.js +85 -0
  62. data/vendor/assets/javascripts/bower/codemirror/addon/mode/simple.js +213 -0
  63. data/vendor/assets/javascripts/bower/codemirror/addon/runmode/colorize.js +40 -0
  64. data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode-standalone.js +157 -0
  65. data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode.js +72 -0
  66. data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode.node.js +120 -0
  67. data/vendor/assets/javascripts/bower/codemirror/addon/scroll/annotatescrollbar.js +76 -0
  68. data/vendor/assets/javascripts/bower/codemirror/addon/scroll/scrollpastend.js +46 -0
  69. data/vendor/assets/javascripts/bower/codemirror/addon/scroll/simplescrollbars.css +66 -0
  70. data/vendor/assets/javascripts/bower/codemirror/addon/scroll/simplescrollbars.js +139 -0
  71. data/vendor/assets/javascripts/bower/codemirror/addon/search/match-highlighter.js +128 -0
  72. data/vendor/assets/javascripts/bower/codemirror/addon/search/matchesonscrollbar.css +8 -0
  73. data/vendor/assets/javascripts/bower/codemirror/addon/search/matchesonscrollbar.js +90 -0
  74. data/vendor/assets/javascripts/bower/codemirror/addon/search/search.js +164 -0
  75. data/vendor/assets/javascripts/bower/codemirror/addon/search/searchcursor.js +189 -0
  76. data/vendor/assets/javascripts/bower/codemirror/addon/selection/active-line.js +71 -0
  77. data/vendor/assets/javascripts/bower/codemirror/addon/selection/mark-selection.js +118 -0
  78. data/vendor/assets/javascripts/bower/codemirror/addon/tern/tern.css +86 -0
  79. data/vendor/assets/javascripts/bower/codemirror/addon/tern/tern.js +670 -0
  80. data/vendor/assets/javascripts/bower/codemirror/addon/tern/worker.js +44 -0
  81. data/vendor/assets/javascripts/bower/codemirror/addon/wrap/hardwrap.js +139 -0
  82. data/vendor/assets/javascripts/bower/codemirror/bower.json +16 -0
  83. data/vendor/assets/javascripts/bower/codemirror/keymap/emacs.js +411 -0
  84. data/vendor/assets/javascripts/bower/codemirror/keymap/sublime.js +540 -0
  85. data/vendor/assets/javascripts/bower/codemirror/keymap/vim.js +4901 -0
  86. data/vendor/assets/javascripts/bower/codemirror/lib/codemirror.css +309 -0
  87. data/vendor/assets/javascripts/bower/codemirror/lib/codemirror.js +8029 -0
  88. data/vendor/assets/javascripts/bower/codemirror/mode/apl/apl.js +175 -0
  89. data/vendor/assets/javascripts/bower/codemirror/mode/asterisk/asterisk.js +198 -0
  90. data/vendor/assets/javascripts/bower/codemirror/mode/clike/clike.js +489 -0
  91. data/vendor/assets/javascripts/bower/codemirror/mode/clike/scala.html +767 -0
  92. data/vendor/assets/javascripts/bower/codemirror/mode/clojure/clojure.js +243 -0
  93. data/vendor/assets/javascripts/bower/codemirror/mode/cobol/cobol.js +255 -0
  94. data/vendor/assets/javascripts/bower/codemirror/mode/coffeescript/coffeescript.js +369 -0
  95. data/vendor/assets/javascripts/bower/codemirror/mode/commonlisp/commonlisp.js +122 -0
  96. data/vendor/assets/javascripts/bower/codemirror/mode/css/css.js +717 -0
  97. data/vendor/assets/javascripts/bower/codemirror/mode/css/less.html +152 -0
  98. data/vendor/assets/javascripts/bower/codemirror/mode/css/less_test.js +51 -0
  99. data/vendor/assets/javascripts/bower/codemirror/mode/css/scss.html +157 -0
  100. data/vendor/assets/javascripts/bower/codemirror/mode/css/scss_test.js +110 -0
  101. data/vendor/assets/javascripts/bower/codemirror/mode/css/test.js +135 -0
  102. data/vendor/assets/javascripts/bower/codemirror/mode/cypher/cypher.js +146 -0
  103. data/vendor/assets/javascripts/bower/codemirror/mode/d/d.js +218 -0
  104. data/vendor/assets/javascripts/bower/codemirror/mode/dart/dart.js +50 -0
  105. data/vendor/assets/javascripts/bower/codemirror/mode/diff/diff.js +47 -0
  106. data/vendor/assets/javascripts/bower/codemirror/mode/django/django.js +67 -0
  107. data/vendor/assets/javascripts/bower/codemirror/mode/dockerfile/dockerfile.js +76 -0
  108. data/vendor/assets/javascripts/bower/codemirror/mode/dtd/dtd.js +142 -0
  109. data/vendor/assets/javascripts/bower/codemirror/mode/dylan/dylan.js +299 -0
  110. data/vendor/assets/javascripts/bower/codemirror/mode/ebnf/ebnf.js +195 -0
  111. data/vendor/assets/javascripts/bower/codemirror/mode/ecl/ecl.js +207 -0
  112. data/vendor/assets/javascripts/bower/codemirror/mode/eiffel/eiffel.js +162 -0
  113. data/vendor/assets/javascripts/bower/codemirror/mode/erlang/erlang.js +622 -0
  114. data/vendor/assets/javascripts/bower/codemirror/mode/fortran/fortran.js +188 -0
  115. data/vendor/assets/javascripts/bower/codemirror/mode/gas/gas.js +345 -0
  116. data/vendor/assets/javascripts/bower/codemirror/mode/gfm/gfm.js +123 -0
  117. data/vendor/assets/javascripts/bower/codemirror/mode/gfm/test.js +213 -0
  118. data/vendor/assets/javascripts/bower/codemirror/mode/gherkin/gherkin.js +178 -0
  119. data/vendor/assets/javascripts/bower/codemirror/mode/go/go.js +184 -0
  120. data/vendor/assets/javascripts/bower/codemirror/mode/groovy/groovy.js +226 -0
  121. data/vendor/assets/javascripts/bower/codemirror/mode/haml/haml.js +159 -0
  122. data/vendor/assets/javascripts/bower/codemirror/mode/haml/test.js +97 -0
  123. data/vendor/assets/javascripts/bower/codemirror/mode/haskell/haskell.js +267 -0
  124. data/vendor/assets/javascripts/bower/codemirror/mode/haxe/haxe.js +518 -0
  125. data/vendor/assets/javascripts/bower/codemirror/mode/htmlembedded/htmlembedded.js +86 -0
  126. data/vendor/assets/javascripts/bower/codemirror/mode/htmlmixed/htmlmixed.js +121 -0
  127. data/vendor/assets/javascripts/bower/codemirror/mode/http/http.js +113 -0
  128. data/vendor/assets/javascripts/bower/codemirror/mode/idl/idl.js +290 -0
  129. data/vendor/assets/javascripts/bower/codemirror/mode/jade/jade.js +590 -0
  130. data/vendor/assets/javascripts/bower/codemirror/mode/javascript/javascript.js +686 -0
  131. data/vendor/assets/javascripts/bower/codemirror/mode/javascript/json-ld.html +72 -0
  132. data/vendor/assets/javascripts/bower/codemirror/mode/javascript/test.js +200 -0
  133. data/vendor/assets/javascripts/bower/codemirror/mode/javascript/typescript.html +61 -0
  134. data/vendor/assets/javascripts/bower/codemirror/mode/jinja2/jinja2.js +142 -0
  135. data/vendor/assets/javascripts/bower/codemirror/mode/julia/julia.js +301 -0
  136. data/vendor/assets/javascripts/bower/codemirror/mode/kotlin/kotlin.js +280 -0
  137. data/vendor/assets/javascripts/bower/codemirror/mode/livescript/livescript.js +280 -0
  138. data/vendor/assets/javascripts/bower/codemirror/mode/lua/lua.js +159 -0
  139. data/vendor/assets/javascripts/bower/codemirror/mode/markdown/markdown.js +765 -0
  140. data/vendor/assets/javascripts/bower/codemirror/mode/markdown/test.js +754 -0
  141. data/vendor/assets/javascripts/bower/codemirror/mode/meta.js +165 -0
  142. data/vendor/assets/javascripts/bower/codemirror/mode/mirc/mirc.js +193 -0
  143. data/vendor/assets/javascripts/bower/codemirror/mode/mllike/mllike.js +205 -0
  144. data/vendor/assets/javascripts/bower/codemirror/mode/modelica/modelica.js +245 -0
  145. data/vendor/assets/javascripts/bower/codemirror/mode/nginx/nginx.js +178 -0
  146. data/vendor/assets/javascripts/bower/codemirror/mode/ntriples/ntriples.js +186 -0
  147. data/vendor/assets/javascripts/bower/codemirror/mode/octave/octave.js +135 -0
  148. data/vendor/assets/javascripts/bower/codemirror/mode/pascal/pascal.js +109 -0
  149. data/vendor/assets/javascripts/bower/codemirror/mode/pegjs/pegjs.js +114 -0
  150. data/vendor/assets/javascripts/bower/codemirror/mode/perl/perl.js +832 -0
  151. data/vendor/assets/javascripts/bower/codemirror/mode/php/php.js +226 -0
  152. data/vendor/assets/javascripts/bower/codemirror/mode/php/test.js +154 -0
  153. data/vendor/assets/javascripts/bower/codemirror/mode/pig/pig.js +188 -0
  154. data/vendor/assets/javascripts/bower/codemirror/mode/properties/properties.js +78 -0
  155. data/vendor/assets/javascripts/bower/codemirror/mode/puppet/puppet.js +220 -0
  156. data/vendor/assets/javascripts/bower/codemirror/mode/python/python.js +359 -0
  157. data/vendor/assets/javascripts/bower/codemirror/mode/q/q.js +139 -0
  158. data/vendor/assets/javascripts/bower/codemirror/mode/r/r.js +162 -0
  159. data/vendor/assets/javascripts/bower/codemirror/mode/rpm/rpm.js +101 -0
  160. data/vendor/assets/javascripts/bower/codemirror/mode/rst/rst.js +557 -0
  161. data/vendor/assets/javascripts/bower/codemirror/mode/ruby/ruby.js +285 -0
  162. data/vendor/assets/javascripts/bower/codemirror/mode/ruby/test.js +14 -0
  163. data/vendor/assets/javascripts/bower/codemirror/mode/rust/rust.js +451 -0
  164. data/vendor/assets/javascripts/bower/codemirror/mode/sass/sass.js +327 -0
  165. data/vendor/assets/javascripts/bower/codemirror/mode/scheme/scheme.js +248 -0
  166. data/vendor/assets/javascripts/bower/codemirror/mode/shell/shell.js +139 -0
  167. data/vendor/assets/javascripts/bower/codemirror/mode/shell/test.js +58 -0
  168. data/vendor/assets/javascripts/bower/codemirror/mode/sieve/sieve.js +193 -0
  169. data/vendor/assets/javascripts/bower/codemirror/mode/slim/slim.js +575 -0
  170. data/vendor/assets/javascripts/bower/codemirror/mode/slim/test.js +96 -0
  171. data/vendor/assets/javascripts/bower/codemirror/mode/smalltalk/smalltalk.js +168 -0
  172. data/vendor/assets/javascripts/bower/codemirror/mode/smarty/smarty.js +221 -0
  173. data/vendor/assets/javascripts/bower/codemirror/mode/smartymixed/smartymixed.js +197 -0
  174. data/vendor/assets/javascripts/bower/codemirror/mode/solr/solr.js +104 -0
  175. data/vendor/assets/javascripts/bower/codemirror/mode/soy/soy.js +198 -0
  176. data/vendor/assets/javascripts/bower/codemirror/mode/sparql/sparql.js +174 -0
  177. data/vendor/assets/javascripts/bower/codemirror/mode/spreadsheet/spreadsheet.js +109 -0
  178. data/vendor/assets/javascripts/bower/codemirror/mode/sql/sql.js +391 -0
  179. data/vendor/assets/javascripts/bower/codemirror/mode/stex/stex.js +251 -0
  180. data/vendor/assets/javascripts/bower/codemirror/mode/stex/test.js +123 -0
  181. data/vendor/assets/javascripts/bower/codemirror/mode/tcl/tcl.js +147 -0
  182. data/vendor/assets/javascripts/bower/codemirror/mode/textile/test.js +417 -0
  183. data/vendor/assets/javascripts/bower/codemirror/mode/textile/textile.js +469 -0
  184. data/vendor/assets/javascripts/bower/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  185. data/vendor/assets/javascripts/bower/codemirror/mode/tiddlywiki/tiddlywiki.js +369 -0
  186. data/vendor/assets/javascripts/bower/codemirror/mode/tiki/tiki.css +26 -0
  187. data/vendor/assets/javascripts/bower/codemirror/mode/tiki/tiki.js +323 -0
  188. data/vendor/assets/javascripts/bower/codemirror/mode/toml/toml.js +88 -0
  189. data/vendor/assets/javascripts/bower/codemirror/mode/tornado/tornado.js +68 -0
  190. data/vendor/assets/javascripts/bower/codemirror/mode/turtle/turtle.js +162 -0
  191. data/vendor/assets/javascripts/bower/codemirror/mode/vb/vb.js +274 -0
  192. data/vendor/assets/javascripts/bower/codemirror/mode/vbscript/vbscript.js +350 -0
  193. data/vendor/assets/javascripts/bower/codemirror/mode/velocity/velocity.js +201 -0
  194. data/vendor/assets/javascripts/bower/codemirror/mode/verilog/test.js +273 -0
  195. data/vendor/assets/javascripts/bower/codemirror/mode/verilog/verilog.js +364 -0
  196. data/vendor/assets/javascripts/bower/codemirror/mode/xml/test.js +51 -0
  197. data/vendor/assets/javascripts/bower/codemirror/mode/xml/xml.js +384 -0
  198. data/vendor/assets/javascripts/bower/codemirror/mode/xquery/test.js +67 -0
  199. data/vendor/assets/javascripts/bower/codemirror/mode/xquery/xquery.js +447 -0
  200. data/vendor/assets/javascripts/bower/codemirror/mode/yaml/yaml.js +117 -0
  201. data/vendor/assets/javascripts/bower/codemirror/mode/z80/z80.js +100 -0
  202. data/vendor/assets/javascripts/bower/codemirror/theme/3024-day.css +38 -0
  203. data/vendor/assets/javascripts/bower/codemirror/theme/3024-night.css +37 -0
  204. data/vendor/assets/javascripts/bower/codemirror/theme/ambiance-mobile.css +5 -0
  205. data/vendor/assets/javascripts/bower/codemirror/theme/ambiance.css +77 -0
  206. data/vendor/assets/javascripts/bower/codemirror/theme/base16-dark.css +36 -0
  207. data/vendor/assets/javascripts/bower/codemirror/theme/base16-light.css +36 -0
  208. data/vendor/assets/javascripts/bower/codemirror/theme/blackboard.css +30 -0
  209. data/vendor/assets/javascripts/bower/codemirror/theme/cobalt.css +23 -0
  210. data/vendor/assets/javascripts/bower/codemirror/theme/eclipse.css +23 -0
  211. data/vendor/assets/javascripts/bower/codemirror/theme/elegant.css +13 -0
  212. data/vendor/assets/javascripts/bower/codemirror/theme/erlang-dark.css +32 -0
  213. data/vendor/assets/javascripts/bower/codemirror/theme/lesser-dark.css +45 -0
  214. data/vendor/assets/javascripts/bower/codemirror/theme/mbo.css +35 -0
  215. data/vendor/assets/javascripts/bower/codemirror/theme/mdn-like.css +44 -0
  216. data/vendor/assets/javascripts/bower/codemirror/theme/midnight.css +45 -0
  217. data/vendor/assets/javascripts/bower/codemirror/theme/monokai.css +31 -0
  218. data/vendor/assets/javascripts/bower/codemirror/theme/neat.css +12 -0
  219. data/vendor/assets/javascripts/bower/codemirror/theme/neo.css +43 -0
  220. data/vendor/assets/javascripts/bower/codemirror/theme/night.css +26 -0
  221. data/vendor/assets/javascripts/bower/codemirror/theme/paraiso-dark.css +36 -0
  222. data/vendor/assets/javascripts/bower/codemirror/theme/paraiso-light.css +36 -0
  223. data/vendor/assets/javascripts/bower/codemirror/theme/pastel-on-dark.css +50 -0
  224. data/vendor/assets/javascripts/bower/codemirror/theme/rubyblue.css +23 -0
  225. data/vendor/assets/javascripts/bower/codemirror/theme/solarized.css +165 -0
  226. data/vendor/assets/javascripts/bower/codemirror/theme/the-matrix.css +28 -0
  227. data/vendor/assets/javascripts/bower/codemirror/theme/tomorrow-night-bright.css +35 -0
  228. data/vendor/assets/javascripts/bower/codemirror/theme/tomorrow-night-eighties.css +36 -0
  229. data/vendor/assets/javascripts/bower/codemirror/theme/twilight.css +30 -0
  230. data/vendor/assets/javascripts/bower/codemirror/theme/vibrant-ink.css +32 -0
  231. data/vendor/assets/javascripts/bower/codemirror/theme/xq-dark.css +51 -0
  232. data/vendor/assets/javascripts/bower/codemirror/theme/xq-light.css +43 -0
  233. data/vendor/assets/javascripts/bower/codemirror/theme/zenburn.css +37 -0
  234. metadata +225 -2
@@ -0,0 +1,754 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ (function() {
5
+ var mode = CodeMirror.getMode({tabSize: 4}, "markdown");
6
+ function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
7
+ var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true});
8
+ function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); }
9
+
10
+ FT("formatting_emAsterisk",
11
+ "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]");
12
+
13
+ FT("formatting_emUnderscore",
14
+ "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]");
15
+
16
+ FT("formatting_strongAsterisk",
17
+ "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]");
18
+
19
+ FT("formatting_strongUnderscore",
20
+ "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]");
21
+
22
+ FT("formatting_codeBackticks",
23
+ "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]");
24
+
25
+ FT("formatting_doubleBackticks",
26
+ "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]");
27
+
28
+ FT("formatting_atxHeader",
29
+ "[header&header-1&formatting&formatting-header&formatting-header-1 #][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]");
30
+
31
+ FT("formatting_setextHeader",
32
+ "foo",
33
+ "[header&header-1&formatting&formatting-header&formatting-header-1 =]");
34
+
35
+ FT("formatting_blockquote",
36
+ "[quote&quote-1&formatting&formatting-quote&formatting-quote-1 > ][quote&quote-1 foo]");
37
+
38
+ FT("formatting_list",
39
+ "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]");
40
+ FT("formatting_list",
41
+ "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]");
42
+
43
+ FT("formatting_link",
44
+ "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string (][string http://example.com/][string&formatting&formatting-link-string )]");
45
+
46
+ FT("formatting_linkReference",
47
+ "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string [][string bar][string&formatting&formatting-link-string ]]]",
48
+ "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string http://example.com/]");
49
+
50
+ FT("formatting_linkWeb",
51
+ "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]");
52
+
53
+ FT("formatting_linkEmail",
54
+ "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]");
55
+
56
+ FT("formatting_escape",
57
+ "[formatting-escape \\*]");
58
+
59
+ MT("plainText",
60
+ "foo");
61
+
62
+ // Don't style single trailing space
63
+ MT("trailingSpace1",
64
+ "foo ");
65
+
66
+ // Two or more trailing spaces should be styled with line break character
67
+ MT("trailingSpace2",
68
+ "foo[trailing-space-a ][trailing-space-new-line ]");
69
+
70
+ MT("trailingSpace3",
71
+ "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]");
72
+
73
+ MT("trailingSpace4",
74
+ "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]");
75
+
76
+ // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value)
77
+ MT("codeBlocksUsing4Spaces",
78
+ " [comment foo]");
79
+
80
+ // Code blocks using 4 spaces with internal indentation
81
+ MT("codeBlocksUsing4SpacesIndentation",
82
+ " [comment bar]",
83
+ " [comment hello]",
84
+ " [comment world]",
85
+ " [comment foo]",
86
+ "bar");
87
+
88
+ // Code blocks using 4 spaces with internal indentation
89
+ MT("codeBlocksUsing4SpacesIndentation",
90
+ " foo",
91
+ " [comment bar]",
92
+ " [comment hello]",
93
+ " [comment world]");
94
+
95
+ // Code blocks should end even after extra indented lines
96
+ MT("codeBlocksWithTrailingIndentedLine",
97
+ " [comment foo]",
98
+ " [comment bar]",
99
+ " [comment baz]",
100
+ " ",
101
+ "hello");
102
+
103
+ // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value)
104
+ MT("codeBlocksUsing1Tab",
105
+ "\t[comment foo]");
106
+
107
+ // Inline code using backticks
108
+ MT("inlineCodeUsingBackticks",
109
+ "foo [comment `bar`]");
110
+
111
+ // Block code using single backtick (shouldn't work)
112
+ MT("blockCodeSingleBacktick",
113
+ "[comment `]",
114
+ "foo",
115
+ "[comment `]");
116
+
117
+ // Unclosed backticks
118
+ // Instead of simply marking as CODE, it would be nice to have an
119
+ // incomplete flag for CODE, that is styled slightly different.
120
+ MT("unclosedBackticks",
121
+ "foo [comment `bar]");
122
+
123
+ // Per documentation: "To include a literal backtick character within a
124
+ // code span, you can use multiple backticks as the opening and closing
125
+ // delimiters"
126
+ MT("doubleBackticks",
127
+ "[comment ``foo ` bar``]");
128
+
129
+ // Tests based on Dingus
130
+ // http://daringfireball.net/projects/markdown/dingus
131
+ //
132
+ // Multiple backticks within an inline code block
133
+ MT("consecutiveBackticks",
134
+ "[comment `foo```bar`]");
135
+
136
+ // Multiple backticks within an inline code block with a second code block
137
+ MT("consecutiveBackticks",
138
+ "[comment `foo```bar`] hello [comment `world`]");
139
+
140
+ // Unclosed with several different groups of backticks
141
+ MT("unclosedBackticks",
142
+ "[comment ``foo ``` bar` hello]");
143
+
144
+ // Closed with several different groups of backticks
145
+ MT("closedBackticks",
146
+ "[comment ``foo ``` bar` hello``] world");
147
+
148
+ // atx headers
149
+ // http://daringfireball.net/projects/markdown/syntax#header
150
+
151
+ MT("atxH1",
152
+ "[header&header-1 # foo]");
153
+
154
+ MT("atxH2",
155
+ "[header&header-2 ## foo]");
156
+
157
+ MT("atxH3",
158
+ "[header&header-3 ### foo]");
159
+
160
+ MT("atxH4",
161
+ "[header&header-4 #### foo]");
162
+
163
+ MT("atxH5",
164
+ "[header&header-5 ##### foo]");
165
+
166
+ MT("atxH6",
167
+ "[header&header-6 ###### foo]");
168
+
169
+ // H6 - 7x '#' should still be H6, per Dingus
170
+ // http://daringfireball.net/projects/markdown/dingus
171
+ MT("atxH6NotH7",
172
+ "[header&header-6 ####### foo]");
173
+
174
+ // Inline styles should be parsed inside headers
175
+ MT("atxH1inline",
176
+ "[header&header-1 # foo ][header&header-1&em *bar*]");
177
+
178
+ // Setext headers - H1, H2
179
+ // Per documentation, "Any number of underlining =’s or -’s will work."
180
+ // http://daringfireball.net/projects/markdown/syntax#header
181
+ // Ideally, the text would be marked as `header` as well, but this is
182
+ // not really feasible at the moment. So, instead, we're testing against
183
+ // what works today, to avoid any regressions.
184
+ //
185
+ // Check if single underlining = works
186
+ MT("setextH1",
187
+ "foo",
188
+ "[header&header-1 =]");
189
+
190
+ // Check if 3+ ='s work
191
+ MT("setextH1",
192
+ "foo",
193
+ "[header&header-1 ===]");
194
+
195
+ // Check if single underlining - works
196
+ MT("setextH2",
197
+ "foo",
198
+ "[header&header-2 -]");
199
+
200
+ // Check if 3+ -'s work
201
+ MT("setextH2",
202
+ "foo",
203
+ "[header&header-2 ---]");
204
+
205
+ // Single-line blockquote with trailing space
206
+ MT("blockquoteSpace",
207
+ "[quote&quote-1 > foo]");
208
+
209
+ // Single-line blockquote
210
+ MT("blockquoteNoSpace",
211
+ "[quote&quote-1 >foo]");
212
+
213
+ // No blank line before blockquote
214
+ MT("blockquoteNoBlankLine",
215
+ "foo",
216
+ "[quote&quote-1 > bar]");
217
+
218
+ // Nested blockquote
219
+ MT("blockquoteSpace",
220
+ "[quote&quote-1 > foo]",
221
+ "[quote&quote-1 >][quote&quote-2 > foo]",
222
+ "[quote&quote-1 >][quote&quote-2 >][quote&quote-3 > foo]");
223
+
224
+ // Single-line blockquote followed by normal paragraph
225
+ MT("blockquoteThenParagraph",
226
+ "[quote&quote-1 >foo]",
227
+ "",
228
+ "bar");
229
+
230
+ // Multi-line blockquote (lazy mode)
231
+ MT("multiBlockquoteLazy",
232
+ "[quote&quote-1 >foo]",
233
+ "[quote&quote-1 bar]");
234
+
235
+ // Multi-line blockquote followed by normal paragraph (lazy mode)
236
+ MT("multiBlockquoteLazyThenParagraph",
237
+ "[quote&quote-1 >foo]",
238
+ "[quote&quote-1 bar]",
239
+ "",
240
+ "hello");
241
+
242
+ // Multi-line blockquote (non-lazy mode)
243
+ MT("multiBlockquote",
244
+ "[quote&quote-1 >foo]",
245
+ "[quote&quote-1 >bar]");
246
+
247
+ // Multi-line blockquote followed by normal paragraph (non-lazy mode)
248
+ MT("multiBlockquoteThenParagraph",
249
+ "[quote&quote-1 >foo]",
250
+ "[quote&quote-1 >bar]",
251
+ "",
252
+ "hello");
253
+
254
+ // Check list types
255
+
256
+ MT("listAsterisk",
257
+ "foo",
258
+ "bar",
259
+ "",
260
+ "[variable-2 * foo]",
261
+ "[variable-2 * bar]");
262
+
263
+ MT("listPlus",
264
+ "foo",
265
+ "bar",
266
+ "",
267
+ "[variable-2 + foo]",
268
+ "[variable-2 + bar]");
269
+
270
+ MT("listDash",
271
+ "foo",
272
+ "bar",
273
+ "",
274
+ "[variable-2 - foo]",
275
+ "[variable-2 - bar]");
276
+
277
+ MT("listNumber",
278
+ "foo",
279
+ "bar",
280
+ "",
281
+ "[variable-2 1. foo]",
282
+ "[variable-2 2. bar]");
283
+
284
+ // Lists require a preceding blank line (per Dingus)
285
+ MT("listBogus",
286
+ "foo",
287
+ "1. bar",
288
+ "2. hello");
289
+
290
+ // List after header
291
+ MT("listAfterHeader",
292
+ "[header&header-1 # foo]",
293
+ "[variable-2 - bar]");
294
+
295
+ // Formatting in lists (*)
296
+ MT("listAsteriskFormatting",
297
+ "[variable-2 * ][variable-2&em *foo*][variable-2 bar]",
298
+ "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]",
299
+ "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
300
+ "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]");
301
+
302
+ // Formatting in lists (+)
303
+ MT("listPlusFormatting",
304
+ "[variable-2 + ][variable-2&em *foo*][variable-2 bar]",
305
+ "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]",
306
+ "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
307
+ "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]");
308
+
309
+ // Formatting in lists (-)
310
+ MT("listDashFormatting",
311
+ "[variable-2 - ][variable-2&em *foo*][variable-2 bar]",
312
+ "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]",
313
+ "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
314
+ "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]");
315
+
316
+ // Formatting in lists (1.)
317
+ MT("listNumberFormatting",
318
+ "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]",
319
+ "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]",
320
+ "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
321
+ "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]");
322
+
323
+ // Paragraph lists
324
+ MT("listParagraph",
325
+ "[variable-2 * foo]",
326
+ "",
327
+ "[variable-2 * bar]");
328
+
329
+ // Multi-paragraph lists
330
+ //
331
+ // 4 spaces
332
+ MT("listMultiParagraph",
333
+ "[variable-2 * foo]",
334
+ "",
335
+ "[variable-2 * bar]",
336
+ "",
337
+ " [variable-2 hello]");
338
+
339
+ // 4 spaces, extra blank lines (should still be list, per Dingus)
340
+ MT("listMultiParagraphExtra",
341
+ "[variable-2 * foo]",
342
+ "",
343
+ "[variable-2 * bar]",
344
+ "",
345
+ "",
346
+ " [variable-2 hello]");
347
+
348
+ // 4 spaces, plus 1 space (should still be list, per Dingus)
349
+ MT("listMultiParagraphExtraSpace",
350
+ "[variable-2 * foo]",
351
+ "",
352
+ "[variable-2 * bar]",
353
+ "",
354
+ " [variable-2 hello]",
355
+ "",
356
+ " [variable-2 world]");
357
+
358
+ // 1 tab
359
+ MT("listTab",
360
+ "[variable-2 * foo]",
361
+ "",
362
+ "[variable-2 * bar]",
363
+ "",
364
+ "\t[variable-2 hello]");
365
+
366
+ // No indent
367
+ MT("listNoIndent",
368
+ "[variable-2 * foo]",
369
+ "",
370
+ "[variable-2 * bar]",
371
+ "",
372
+ "hello");
373
+
374
+ // Blockquote
375
+ MT("blockquote",
376
+ "[variable-2 * foo]",
377
+ "",
378
+ "[variable-2 * bar]",
379
+ "",
380
+ " [variable-2&quote&quote-1 > hello]");
381
+
382
+ // Code block
383
+ MT("blockquoteCode",
384
+ "[variable-2 * foo]",
385
+ "",
386
+ "[variable-2 * bar]",
387
+ "",
388
+ " [comment > hello]",
389
+ "",
390
+ " [variable-2 world]");
391
+
392
+ // Code block followed by text
393
+ MT("blockquoteCodeText",
394
+ "[variable-2 * foo]",
395
+ "",
396
+ " [variable-2 bar]",
397
+ "",
398
+ " [comment hello]",
399
+ "",
400
+ " [variable-2 world]");
401
+
402
+ // Nested list
403
+
404
+ MT("listAsteriskNested",
405
+ "[variable-2 * foo]",
406
+ "",
407
+ " [variable-3 * bar]");
408
+
409
+ MT("listPlusNested",
410
+ "[variable-2 + foo]",
411
+ "",
412
+ " [variable-3 + bar]");
413
+
414
+ MT("listDashNested",
415
+ "[variable-2 - foo]",
416
+ "",
417
+ " [variable-3 - bar]");
418
+
419
+ MT("listNumberNested",
420
+ "[variable-2 1. foo]",
421
+ "",
422
+ " [variable-3 2. bar]");
423
+
424
+ MT("listMixed",
425
+ "[variable-2 * foo]",
426
+ "",
427
+ " [variable-3 + bar]",
428
+ "",
429
+ " [keyword - hello]",
430
+ "",
431
+ " [variable-2 1. world]");
432
+
433
+ MT("listBlockquote",
434
+ "[variable-2 * foo]",
435
+ "",
436
+ " [variable-3 + bar]",
437
+ "",
438
+ " [quote&quote-1&variable-3 > hello]");
439
+
440
+ MT("listCode",
441
+ "[variable-2 * foo]",
442
+ "",
443
+ " [variable-3 + bar]",
444
+ "",
445
+ " [comment hello]");
446
+
447
+ // Code with internal indentation
448
+ MT("listCodeIndentation",
449
+ "[variable-2 * foo]",
450
+ "",
451
+ " [comment bar]",
452
+ " [comment hello]",
453
+ " [comment world]",
454
+ " [comment foo]",
455
+ " [variable-2 bar]");
456
+
457
+ // List nesting edge cases
458
+ MT("listNested",
459
+ "[variable-2 * foo]",
460
+ "",
461
+ " [variable-3 * bar]",
462
+ "",
463
+ " [variable-2 hello]"
464
+ );
465
+ MT("listNested",
466
+ "[variable-2 * foo]",
467
+ "",
468
+ " [variable-3 * bar]",
469
+ "",
470
+ " [variable-3 * foo]"
471
+ );
472
+
473
+ // Code followed by text
474
+ MT("listCodeText",
475
+ "[variable-2 * foo]",
476
+ "",
477
+ " [comment bar]",
478
+ "",
479
+ "hello");
480
+
481
+ // Following tests directly from official Markdown documentation
482
+ // http://daringfireball.net/projects/markdown/syntax#hr
483
+
484
+ MT("hrSpace",
485
+ "[hr * * *]");
486
+
487
+ MT("hr",
488
+ "[hr ***]");
489
+
490
+ MT("hrLong",
491
+ "[hr *****]");
492
+
493
+ MT("hrSpaceDash",
494
+ "[hr - - -]");
495
+
496
+ MT("hrDashLong",
497
+ "[hr ---------------------------------------]");
498
+
499
+ // Inline link with title
500
+ MT("linkTitle",
501
+ "[link [[foo]]][string (http://example.com/ \"bar\")] hello");
502
+
503
+ // Inline link without title
504
+ MT("linkNoTitle",
505
+ "[link [[foo]]][string (http://example.com/)] bar");
506
+
507
+ // Inline link with image
508
+ MT("linkImage",
509
+ "[link [[][tag ![[foo]]][string (http://example.com/)][link ]]][string (http://example.com/)] bar");
510
+
511
+ // Inline link with Em
512
+ MT("linkEm",
513
+ "[link [[][link&em *foo*][link ]]][string (http://example.com/)] bar");
514
+
515
+ // Inline link with Strong
516
+ MT("linkStrong",
517
+ "[link [[][link&strong **foo**][link ]]][string (http://example.com/)] bar");
518
+
519
+ // Inline link with EmStrong
520
+ MT("linkEmStrong",
521
+ "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string (http://example.com/)] bar");
522
+
523
+ // Image with title
524
+ MT("imageTitle",
525
+ "[tag ![[foo]]][string (http://example.com/ \"bar\")] hello");
526
+
527
+ // Image without title
528
+ MT("imageNoTitle",
529
+ "[tag ![[foo]]][string (http://example.com/)] bar");
530
+
531
+ // Image with asterisks
532
+ MT("imageAsterisks",
533
+ "[tag ![[*foo*]]][string (http://example.com/)] bar");
534
+
535
+ // Not a link. Should be normal text due to square brackets being used
536
+ // regularly in text, especially in quoted material, and no space is allowed
537
+ // between square brackets and parentheses (per Dingus).
538
+ MT("notALink",
539
+ "[[foo]] (bar)");
540
+
541
+ // Reference-style links
542
+ MT("linkReference",
543
+ "[link [[foo]]][string [[bar]]] hello");
544
+
545
+ // Reference-style links with Em
546
+ MT("linkReferenceEm",
547
+ "[link [[][link&em *foo*][link ]]][string [[bar]]] hello");
548
+
549
+ // Reference-style links with Strong
550
+ MT("linkReferenceStrong",
551
+ "[link [[][link&strong **foo**][link ]]][string [[bar]]] hello");
552
+
553
+ // Reference-style links with EmStrong
554
+ MT("linkReferenceEmStrong",
555
+ "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string [[bar]]] hello");
556
+
557
+ // Reference-style links with optional space separator (per docuentation)
558
+ // "You can optionally use a space to separate the sets of brackets"
559
+ MT("linkReferenceSpace",
560
+ "[link [[foo]]] [string [[bar]]] hello");
561
+
562
+ // Should only allow a single space ("...use *a* space...")
563
+ MT("linkReferenceDoubleSpace",
564
+ "[[foo]] [[bar]] hello");
565
+
566
+ // Reference-style links with implicit link name
567
+ MT("linkImplicit",
568
+ "[link [[foo]]][string [[]]] hello");
569
+
570
+ // @todo It would be nice if, at some point, the document was actually
571
+ // checked to see if the referenced link exists
572
+
573
+ // Link label, for reference-style links (taken from documentation)
574
+
575
+ MT("labelNoTitle",
576
+ "[link [[foo]]:] [string http://example.com/]");
577
+
578
+ MT("labelIndented",
579
+ " [link [[foo]]:] [string http://example.com/]");
580
+
581
+ MT("labelSpaceTitle",
582
+ "[link [[foo bar]]:] [string http://example.com/ \"hello\"]");
583
+
584
+ MT("labelDoubleTitle",
585
+ "[link [[foo bar]]:] [string http://example.com/ \"hello\"] \"world\"");
586
+
587
+ MT("labelTitleDoubleQuotes",
588
+ "[link [[foo]]:] [string http://example.com/ \"bar\"]");
589
+
590
+ MT("labelTitleSingleQuotes",
591
+ "[link [[foo]]:] [string http://example.com/ 'bar']");
592
+
593
+ MT("labelTitleParenthese",
594
+ "[link [[foo]]:] [string http://example.com/ (bar)]");
595
+
596
+ MT("labelTitleInvalid",
597
+ "[link [[foo]]:] [string http://example.com/] bar");
598
+
599
+ MT("labelLinkAngleBrackets",
600
+ "[link [[foo]]:] [string <http://example.com/> \"bar\"]");
601
+
602
+ MT("labelTitleNextDoubleQuotes",
603
+ "[link [[foo]]:] [string http://example.com/]",
604
+ "[string \"bar\"] hello");
605
+
606
+ MT("labelTitleNextSingleQuotes",
607
+ "[link [[foo]]:] [string http://example.com/]",
608
+ "[string 'bar'] hello");
609
+
610
+ MT("labelTitleNextParenthese",
611
+ "[link [[foo]]:] [string http://example.com/]",
612
+ "[string (bar)] hello");
613
+
614
+ MT("labelTitleNextMixed",
615
+ "[link [[foo]]:] [string http://example.com/]",
616
+ "(bar\" hello");
617
+
618
+ MT("linkWeb",
619
+ "[link <http://example.com/>] foo");
620
+
621
+ MT("linkWebDouble",
622
+ "[link <http://example.com/>] foo [link <http://example.com/>]");
623
+
624
+ MT("linkEmail",
625
+ "[link <user@example.com>] foo");
626
+
627
+ MT("linkEmailDouble",
628
+ "[link <user@example.com>] foo [link <user@example.com>]");
629
+
630
+ MT("emAsterisk",
631
+ "[em *foo*] bar");
632
+
633
+ MT("emUnderscore",
634
+ "[em _foo_] bar");
635
+
636
+ MT("emInWordAsterisk",
637
+ "foo[em *bar*]hello");
638
+
639
+ MT("emInWordUnderscore",
640
+ "foo[em _bar_]hello");
641
+
642
+ // Per documentation: "...surround an * or _ with spaces, it’ll be
643
+ // treated as a literal asterisk or underscore."
644
+
645
+ MT("emEscapedBySpaceIn",
646
+ "foo [em _bar _ hello_] world");
647
+
648
+ MT("emEscapedBySpaceOut",
649
+ "foo _ bar[em _hello_]world");
650
+
651
+ MT("emEscapedByNewline",
652
+ "foo",
653
+ "_ bar[em _hello_]world");
654
+
655
+ // Unclosed emphasis characters
656
+ // Instead of simply marking as EM / STRONG, it would be nice to have an
657
+ // incomplete flag for EM and STRONG, that is styled slightly different.
658
+ MT("emIncompleteAsterisk",
659
+ "foo [em *bar]");
660
+
661
+ MT("emIncompleteUnderscore",
662
+ "foo [em _bar]");
663
+
664
+ MT("strongAsterisk",
665
+ "[strong **foo**] bar");
666
+
667
+ MT("strongUnderscore",
668
+ "[strong __foo__] bar");
669
+
670
+ MT("emStrongAsterisk",
671
+ "[em *foo][em&strong **bar*][strong hello**] world");
672
+
673
+ MT("emStrongUnderscore",
674
+ "[em _foo][em&strong __bar_][strong hello__] world");
675
+
676
+ // "...same character must be used to open and close an emphasis span.""
677
+ MT("emStrongMixed",
678
+ "[em _foo][em&strong **bar*hello__ world]");
679
+
680
+ MT("emStrongMixed",
681
+ "[em *foo][em&strong __bar_hello** world]");
682
+
683
+ // These characters should be escaped:
684
+ // \ backslash
685
+ // ` backtick
686
+ // * asterisk
687
+ // _ underscore
688
+ // {} curly braces
689
+ // [] square brackets
690
+ // () parentheses
691
+ // # hash mark
692
+ // + plus sign
693
+ // - minus sign (hyphen)
694
+ // . dot
695
+ // ! exclamation mark
696
+
697
+ MT("escapeBacktick",
698
+ "foo \\`bar\\`");
699
+
700
+ MT("doubleEscapeBacktick",
701
+ "foo \\\\[comment `bar\\\\`]");
702
+
703
+ MT("escapeAsterisk",
704
+ "foo \\*bar\\*");
705
+
706
+ MT("doubleEscapeAsterisk",
707
+ "foo \\\\[em *bar\\\\*]");
708
+
709
+ MT("escapeUnderscore",
710
+ "foo \\_bar\\_");
711
+
712
+ MT("doubleEscapeUnderscore",
713
+ "foo \\\\[em _bar\\\\_]");
714
+
715
+ MT("escapeHash",
716
+ "\\# foo");
717
+
718
+ MT("doubleEscapeHash",
719
+ "\\\\# foo");
720
+
721
+ MT("escapeNewline",
722
+ "\\",
723
+ "[em *foo*]");
724
+
725
+
726
+ // Tests to make sure GFM-specific things aren't getting through
727
+
728
+ MT("taskList",
729
+ "[variable-2 * [ ]] bar]");
730
+
731
+ MT("fencedCodeBlocks",
732
+ "[comment ```]",
733
+ "foo",
734
+ "[comment ```]");
735
+
736
+ // Tests that require XML mode
737
+
738
+ MT("xmlMode",
739
+ "[tag&bracket <][tag div][tag&bracket >]",
740
+ "*foo*",
741
+ "[tag&bracket <][tag http://github.com][tag&bracket />]",
742
+ "[tag&bracket </][tag div][tag&bracket >]",
743
+ "[link <http://github.com/>]");
744
+
745
+ MT("xmlModeWithMarkdownInside",
746
+ "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]",
747
+ "[em *foo*]",
748
+ "[link <http://github.com/>]",
749
+ "[tag </div>]",
750
+ "[link <http://github.com/>]",
751
+ "[tag&bracket <][tag div][tag&bracket >]",
752
+ "[tag&bracket </][tag div][tag&bracket >]");
753
+
754
+ })();