prism-rails 1.19.0 → 1.29.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +22 -1
  4. data/lib/prism-rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/languages/prism-abap.js +17 -17
  6. data/vendor/assets/javascripts/languages/prism-abnf.js +3 -3
  7. data/vendor/assets/javascripts/languages/prism-actionscript.js +6 -2
  8. data/vendor/assets/javascripts/languages/prism-ada.js +9 -6
  9. data/vendor/assets/javascripts/languages/prism-agda.js +24 -0
  10. data/vendor/assets/javascripts/languages/prism-al.js +25 -0
  11. data/vendor/assets/javascripts/languages/prism-antlr4.js +1 -1
  12. data/vendor/assets/javascripts/languages/prism-apacheconf.js +3 -3
  13. data/vendor/assets/javascripts/languages/prism-apex.js +65 -0
  14. data/vendor/assets/javascripts/languages/prism-apl.js +3 -3
  15. data/vendor/assets/javascripts/languages/prism-applescript.js +5 -8
  16. data/vendor/assets/javascripts/languages/prism-aql.js +14 -6
  17. data/vendor/assets/javascripts/languages/prism-arduino.js +5 -3
  18. data/vendor/assets/javascripts/languages/prism-arff.js +1 -1
  19. data/vendor/assets/javascripts/languages/prism-armasm.js +49 -0
  20. data/vendor/assets/javascripts/languages/prism-arturo.js +105 -0
  21. data/vendor/assets/javascripts/languages/prism-asciidoc.js +13 -13
  22. data/vendor/assets/javascripts/languages/prism-asm6502.js +15 -14
  23. data/vendor/assets/javascripts/languages/prism-asmatmel.js +43 -0
  24. data/vendor/assets/javascripts/languages/prism-aspnet.js +6 -6
  25. data/vendor/assets/javascripts/languages/prism-autohotkey.js +31 -14
  26. data/vendor/assets/javascripts/languages/prism-autoit.js +16 -16
  27. data/vendor/assets/javascripts/languages/prism-avisynth.js +188 -0
  28. data/vendor/assets/javascripts/languages/prism-avro-idl.js +50 -0
  29. data/vendor/assets/javascripts/languages/prism-awk.js +32 -0
  30. data/vendor/assets/javascripts/languages/prism-bash.js +60 -22
  31. data/vendor/assets/javascripts/languages/prism-basic.js +4 -4
  32. data/vendor/assets/javascripts/languages/prism-batch.js +10 -10
  33. data/vendor/assets/javascripts/languages/prism-bbcode.js +3 -1
  34. data/vendor/assets/javascripts/languages/prism-bbj.js +19 -0
  35. data/vendor/assets/javascripts/languages/prism-bicep.js +77 -0
  36. data/vendor/assets/javascripts/languages/prism-birb.js +23 -0
  37. data/vendor/assets/javascripts/languages/prism-bison.js +2 -2
  38. data/vendor/assets/javascripts/languages/prism-bqn.js +63 -0
  39. data/vendor/assets/javascripts/languages/prism-brainfuck.js +1 -1
  40. data/vendor/assets/javascripts/languages/prism-brightscript.js +2 -2
  41. data/vendor/assets/javascripts/languages/prism-bro.js +9 -20
  42. data/vendor/assets/javascripts/languages/prism-bsl.js +75 -0
  43. data/vendor/assets/javascripts/languages/prism-c.js +53 -14
  44. data/vendor/assets/javascripts/languages/prism-cfscript.js +44 -0
  45. data/vendor/assets/javascripts/languages/prism-chaiscript.js +60 -0
  46. data/vendor/assets/javascripts/languages/prism-cil.js +5 -5
  47. data/vendor/assets/javascripts/languages/prism-cilkc.js +8 -0
  48. data/vendor/assets/javascripts/languages/prism-cilkcpp.js +9 -0
  49. data/vendor/assets/javascripts/languages/prism-clike.js +7 -6
  50. data/vendor/assets/javascripts/languages/prism-clojure.js +20 -5
  51. data/vendor/assets/javascripts/languages/prism-cmake.js +7 -7
  52. data/vendor/assets/javascripts/languages/prism-cobol.js +53 -0
  53. data/vendor/assets/javascripts/languages/prism-coffeescript.js +79 -75
  54. data/vendor/assets/javascripts/languages/prism-concurnas.js +33 -20
  55. data/vendor/assets/javascripts/languages/prism-cooklang.js +146 -0
  56. data/vendor/assets/javascripts/languages/prism-coq.js +54 -0
  57. data/vendor/assets/javascripts/languages/prism-core.js +1087 -451
  58. data/vendor/assets/javascripts/languages/prism-cpp.js +99 -21
  59. data/vendor/assets/javascripts/languages/prism-crystal.js +36 -30
  60. data/vendor/assets/javascripts/languages/prism-csharp.js +343 -58
  61. data/vendor/assets/javascripts/languages/prism-cshtml.js +199 -0
  62. data/vendor/assets/javascripts/languages/prism-csp.js +67 -16
  63. data/vendor/assets/javascripts/languages/prism-css-extras.js +27 -16
  64. data/vendor/assets/javascripts/languages/prism-css.js +28 -26
  65. data/vendor/assets/javascripts/languages/prism-csv.js +6 -0
  66. data/vendor/assets/javascripts/languages/prism-cue.js +84 -0
  67. data/vendor/assets/javascripts/languages/prism-cypher.js +36 -0
  68. data/vendor/assets/javascripts/languages/prism-d.js +15 -10
  69. data/vendor/assets/javascripts/languages/prism-dart.js +76 -21
  70. data/vendor/assets/javascripts/languages/prism-dataweave.js +41 -0
  71. data/vendor/assets/javascripts/languages/prism-dax.js +27 -0
  72. data/vendor/assets/javascripts/languages/prism-dhall.js +69 -0
  73. data/vendor/assets/javascripts/languages/prism-diff.js +15 -5
  74. data/vendor/assets/javascripts/languages/prism-django.js +8 -8
  75. data/vendor/assets/javascripts/languages/prism-dns-zone-file.js +3 -3
  76. data/vendor/assets/javascripts/languages/prism-docker.js +98 -11
  77. data/vendor/assets/javascripts/languages/prism-dot.js +76 -0
  78. data/vendor/assets/javascripts/languages/prism-ebnf.js +2 -2
  79. data/vendor/assets/javascripts/languages/prism-editorconfig.js +26 -0
  80. data/vendor/assets/javascripts/languages/prism-eiffel.js +5 -8
  81. data/vendor/assets/javascripts/languages/prism-ejs.js +4 -2
  82. data/vendor/assets/javascripts/languages/prism-elixir.js +21 -12
  83. data/vendor/assets/javascripts/languages/prism-elm.js +16 -15
  84. data/vendor/assets/javascripts/languages/prism-erb.js +12 -7
  85. data/vendor/assets/javascripts/languages/prism-erlang.js +6 -6
  86. data/vendor/assets/javascripts/languages/prism-excel-formula.js +66 -0
  87. data/vendor/assets/javascripts/languages/prism-factor.js +8 -8
  88. data/vendor/assets/javascripts/languages/prism-false.js +32 -0
  89. data/vendor/assets/javascripts/languages/prism-firestore-security-rules.js +2 -2
  90. data/vendor/assets/javascripts/languages/prism-flow.js +5 -5
  91. data/vendor/assets/javascripts/languages/prism-fortran.js +6 -6
  92. data/vendor/assets/javascripts/languages/prism-fsharp.js +20 -12
  93. data/vendor/assets/javascripts/languages/prism-ftl.js +12 -11
  94. data/vendor/assets/javascripts/languages/prism-gap.js +54 -0
  95. data/vendor/assets/javascripts/languages/prism-gcode.js +4 -3
  96. data/vendor/assets/javascripts/languages/prism-gdscript.js +2 -2
  97. data/vendor/assets/javascripts/languages/prism-gedcom.js +6 -6
  98. data/vendor/assets/javascripts/languages/prism-gettext.js +43 -0
  99. data/vendor/assets/javascripts/languages/prism-gherkin.js +7 -7
  100. data/vendor/assets/javascripts/languages/prism-git.js +3 -3
  101. data/vendor/assets/javascripts/languages/prism-glsl.js +2 -15
  102. data/vendor/assets/javascripts/languages/prism-gml.js +5 -5
  103. data/vendor/assets/javascripts/languages/prism-gn.js +51 -0
  104. data/vendor/assets/javascripts/languages/prism-go-module.js +24 -0
  105. data/vendor/assets/javascripts/languages/prism-go.js +21 -5
  106. data/vendor/assets/javascripts/languages/prism-gradle.js +63 -0
  107. data/vendor/assets/javascripts/languages/prism-graphql.js +187 -7
  108. data/vendor/assets/javascripts/languages/prism-groovy.js +56 -58
  109. data/vendor/assets/javascripts/languages/prism-haml.js +23 -16
  110. data/vendor/assets/javascripts/languages/prism-handlebars.js +10 -7
  111. data/vendor/assets/javascripts/languages/prism-haskell.js +42 -14
  112. data/vendor/assets/javascripts/languages/prism-haxe.js +54 -21
  113. data/vendor/assets/javascripts/languages/prism-hcl.js +12 -14
  114. data/vendor/assets/javascripts/languages/prism-hlsl.js +20 -0
  115. data/vendor/assets/javascripts/languages/prism-hoon.js +14 -0
  116. data/vendor/assets/javascripts/languages/prism-hpkp.js +4 -10
  117. data/vendor/assets/javascripts/languages/prism-hsts.js +4 -10
  118. data/vendor/assets/javascripts/languages/prism-http.js +91 -17
  119. data/vendor/assets/javascripts/languages/prism-ichigojam.js +5 -5
  120. data/vendor/assets/javascripts/languages/prism-icon.js +2 -2
  121. data/vendor/assets/javascripts/languages/prism-icu-message-format.js +148 -0
  122. data/vendor/assets/javascripts/languages/prism-idris.js +19 -0
  123. data/vendor/assets/javascripts/languages/prism-iecst.js +32 -0
  124. data/vendor/assets/javascripts/languages/prism-ignore.js +23 -0
  125. data/vendor/assets/javascripts/languages/prism-inform7.js +10 -10
  126. data/vendor/assets/javascripts/languages/prism-ini.js +39 -8
  127. data/vendor/assets/javascripts/languages/prism-io.js +10 -19
  128. data/vendor/assets/javascripts/languages/prism-j.js +7 -4
  129. data/vendor/assets/javascripts/languages/prism-java.js +80 -19
  130. data/vendor/assets/javascripts/languages/prism-javadoc.js +59 -31
  131. data/vendor/assets/javascripts/languages/prism-javadoclike.js +2 -2
  132. data/vendor/assets/javascripts/languages/prism-javascript.js +98 -17
  133. data/vendor/assets/javascripts/languages/prism-javastacktrace.js +63 -14
  134. data/vendor/assets/javascripts/languages/prism-jexl.js +14 -0
  135. data/vendor/assets/javascripts/languages/prism-jolie.js +23 -37
  136. data/vendor/assets/javascripts/languages/prism-jq.js +8 -6
  137. data/vendor/assets/javascripts/languages/prism-js-extras.js +34 -3
  138. data/vendor/assets/javascripts/languages/prism-js-templates.js +5 -2
  139. data/vendor/assets/javascripts/languages/prism-jsdoc.js +15 -10
  140. data/vendor/assets/javascripts/languages/prism-json.js +13 -5
  141. data/vendor/assets/javascripts/languages/prism-json5.js +3 -3
  142. data/vendor/assets/javascripts/languages/prism-jsonp.js +1 -1
  143. data/vendor/assets/javascripts/languages/prism-jsstacktrace.js +49 -0
  144. data/vendor/assets/javascripts/languages/prism-jsx.js +123 -104
  145. data/vendor/assets/javascripts/languages/prism-julia.js +31 -9
  146. data/vendor/assets/javascripts/languages/prism-keepalived.js +51 -0
  147. data/vendor/assets/javascripts/languages/prism-keyman.js +43 -13
  148. data/vendor/assets/javascripts/languages/prism-kotlin.js +56 -30
  149. data/vendor/assets/javascripts/languages/prism-kumir.js +106 -0
  150. data/vendor/assets/javascripts/languages/prism-kusto.js +44 -0
  151. data/vendor/assets/javascripts/languages/prism-latex.js +6 -6
  152. data/vendor/assets/javascripts/languages/prism-latte.js +11 -17
  153. data/vendor/assets/javascripts/languages/prism-less.js +5 -5
  154. data/vendor/assets/javascripts/languages/prism-lilypond.js +3 -3
  155. data/vendor/assets/javascripts/languages/prism-linker-script.js +30 -0
  156. data/vendor/assets/javascripts/languages/prism-liquid.js +62 -8
  157. data/vendor/assets/javascripts/languages/prism-lisp.js +41 -41
  158. data/vendor/assets/javascripts/languages/prism-livescript.js +3 -3
  159. data/vendor/assets/javascripts/languages/prism-llvm.js +19 -0
  160. data/vendor/assets/javascripts/languages/prism-log.js +120 -0
  161. data/vendor/assets/javascripts/languages/prism-lolcode.js +9 -9
  162. data/vendor/assets/javascripts/languages/prism-lua.js +3 -3
  163. data/vendor/assets/javascripts/languages/prism-magma.js +35 -0
  164. data/vendor/assets/javascripts/languages/prism-makefile.js +17 -17
  165. data/vendor/assets/javascripts/languages/prism-markdown.js +103 -32
  166. data/vendor/assets/javascripts/languages/prism-markup-templating.js +2 -1
  167. data/vendor/assets/javascripts/languages/prism-markup.js +95 -12
  168. data/vendor/assets/javascripts/languages/prism-mata.js +50 -0
  169. data/vendor/assets/javascripts/languages/prism-matlab.js +4 -4
  170. data/vendor/assets/javascripts/languages/prism-maxscript.js +91 -0
  171. data/vendor/assets/javascripts/languages/prism-mel.js +24 -21
  172. data/vendor/assets/javascripts/languages/prism-mermaid.js +113 -0
  173. data/vendor/assets/javascripts/languages/prism-metafont.js +84 -0
  174. data/vendor/assets/javascripts/languages/prism-mizar.js +3 -3
  175. data/vendor/assets/javascripts/languages/prism-mongodb.js +97 -0
  176. data/vendor/assets/javascripts/languages/prism-monkey.js +16 -18
  177. data/vendor/assets/javascripts/languages/prism-moonscript.js +1 -1
  178. data/vendor/assets/javascripts/languages/prism-n1ql.js +14 -8
  179. data/vendor/assets/javascripts/languages/prism-n4js.js +2 -2
  180. data/vendor/assets/javascripts/languages/prism-nand2tetris-hdl.js +3 -3
  181. data/vendor/assets/javascripts/languages/prism-naniscript.js +170 -0
  182. data/vendor/assets/javascripts/languages/prism-nasm.js +4 -4
  183. data/vendor/assets/javascripts/languages/prism-neon.js +5 -6
  184. data/vendor/assets/javascripts/languages/prism-nevod.js +125 -0
  185. data/vendor/assets/javascripts/languages/prism-nginx.js +54 -11
  186. data/vendor/assets/javascripts/languages/prism-nim.js +23 -12
  187. data/vendor/assets/javascripts/languages/prism-nix.js +10 -13
  188. data/vendor/assets/javascripts/languages/prism-nsis.js +10 -9
  189. data/vendor/assets/javascripts/languages/prism-objectivec.js +7 -2
  190. data/vendor/assets/javascripts/languages/prism-ocaml.js +32 -15
  191. data/vendor/assets/javascripts/languages/prism-odin.js +99 -0
  192. data/vendor/assets/javascripts/languages/prism-opencl.js +19 -12
  193. data/vendor/assets/javascripts/languages/prism-openqasm.js +23 -0
  194. data/vendor/assets/javascripts/languages/prism-oz.js +11 -8
  195. data/vendor/assets/javascripts/languages/prism-parigp.js +4 -4
  196. data/vendor/assets/javascripts/languages/prism-parser.js +3 -3
  197. data/vendor/assets/javascripts/languages/prism-pascal.js +24 -8
  198. data/vendor/assets/javascripts/languages/prism-pascaligo.js +7 -7
  199. data/vendor/assets/javascripts/languages/prism-pcaxis.js +2 -2
  200. data/vendor/assets/javascripts/languages/prism-peoplecode.js +42 -0
  201. data/vendor/assets/javascripts/languages/prism-perl.js +153 -188
  202. data/vendor/assets/javascripts/languages/prism-php-extras.js +8 -5
  203. data/vendor/assets/javascripts/languages/prism-php.js +275 -63
  204. data/vendor/assets/javascripts/languages/prism-phpdoc.js +1 -1
  205. data/vendor/assets/javascripts/languages/prism-plant-uml.js +103 -0
  206. data/vendor/assets/javascripts/languages/prism-plsql.js +16 -25
  207. data/vendor/assets/javascripts/languages/prism-powerquery.js +55 -0
  208. data/vendor/assets/javascripts/languages/prism-powershell.js +16 -18
  209. data/vendor/assets/javascripts/languages/prism-processing.js +6 -9
  210. data/vendor/assets/javascripts/languages/prism-prolog.js +7 -8
  211. data/vendor/assets/javascripts/languages/prism-promql.js +99 -0
  212. data/vendor/assets/javascripts/languages/prism-properties.js +9 -5
  213. data/vendor/assets/javascripts/languages/prism-protobuf.js +16 -9
  214. data/vendor/assets/javascripts/languages/prism-psl.js +35 -0
  215. data/vendor/assets/javascripts/languages/prism-pug.js +28 -21
  216. data/vendor/assets/javascripts/languages/prism-puppet.js +6 -6
  217. data/vendor/assets/javascripts/languages/prism-pure.js +9 -6
  218. data/vendor/assets/javascripts/languages/prism-purebasic.js +70 -0
  219. data/vendor/assets/javascripts/languages/prism-purescript.js +31 -0
  220. data/vendor/assets/javascripts/languages/prism-python.js +12 -11
  221. data/vendor/assets/javascripts/languages/prism-q.js +4 -4
  222. data/vendor/assets/javascripts/languages/prism-qml.js +9 -6
  223. data/vendor/assets/javascripts/languages/prism-qore.js +5 -5
  224. data/vendor/assets/javascripts/languages/prism-qsharp.js +132 -0
  225. data/vendor/assets/javascripts/languages/prism-r.js +5 -5
  226. data/vendor/assets/javascripts/languages/prism-racket.js +18 -0
  227. data/vendor/assets/javascripts/languages/prism-reason.js +5 -8
  228. data/vendor/assets/javascripts/languages/prism-regex.js +54 -47
  229. data/vendor/assets/javascripts/languages/prism-rego.js +30 -0
  230. data/vendor/assets/javascripts/languages/prism-renpy.js +12 -12
  231. data/vendor/assets/javascripts/languages/prism-rescript.js +60 -0
  232. data/vendor/assets/javascripts/languages/prism-rest.js +16 -16
  233. data/vendor/assets/javascripts/languages/prism-rip.js +22 -16
  234. data/vendor/assets/javascripts/languages/prism-roboconf.js +3 -3
  235. data/vendor/assets/javascripts/languages/prism-robotframework.js +5 -5
  236. data/vendor/assets/javascripts/languages/prism-ruby.js +127 -88
  237. data/vendor/assets/javascripts/languages/prism-rust.js +120 -60
  238. data/vendor/assets/javascripts/languages/prism-sas.js +62 -38
  239. data/vendor/assets/javascripts/languages/prism-sass.js +15 -10
  240. data/vendor/assets/javascripts/languages/prism-scala.js +36 -3
  241. data/vendor/assets/javascripts/languages/prism-scheme.js +120 -33
  242. data/vendor/assets/javascripts/languages/prism-scss.js +11 -7
  243. data/vendor/assets/javascripts/languages/prism-shell-session.js +42 -26
  244. data/vendor/assets/javascripts/languages/prism-smali.js +87 -0
  245. data/vendor/assets/javascripts/languages/prism-smalltalk.js +12 -5
  246. data/vendor/assets/javascripts/languages/prism-smarty.js +91 -47
  247. data/vendor/assets/javascripts/languages/prism-sml.js +68 -0
  248. data/vendor/assets/javascripts/languages/prism-solidity.js +3 -1
  249. data/vendor/assets/javascripts/languages/prism-solution-file.js +2 -2
  250. data/vendor/assets/javascripts/languages/prism-soy.js +9 -9
  251. data/vendor/assets/javascripts/languages/prism-sparql.js +8 -8
  252. data/vendor/assets/javascripts/languages/prism-splunk-spl.js +3 -3
  253. data/vendor/assets/javascripts/languages/prism-sqf.js +7 -7
  254. data/vendor/assets/javascripts/languages/prism-sql.js +12 -4
  255. data/vendor/assets/javascripts/languages/prism-squirrel.js +47 -0
  256. data/vendor/assets/javascripts/languages/prism-stan.js +65 -0
  257. data/vendor/assets/javascripts/languages/prism-stata.js +76 -0
  258. data/vendor/assets/javascripts/languages/prism-stylus.js +48 -16
  259. data/vendor/assets/javascripts/languages/prism-supercollider.js +36 -0
  260. data/vendor/assets/javascripts/languages/prism-swift.js +143 -20
  261. data/vendor/assets/javascripts/languages/prism-systemd.js +74 -0
  262. data/vendor/assets/javascripts/languages/prism-t4-templating.js +2 -2
  263. data/vendor/assets/javascripts/languages/prism-t4-vb.js +1 -1
  264. data/vendor/assets/javascripts/languages/prism-tap.js +13 -11
  265. data/vendor/assets/javascripts/languages/prism-tcl.js +8 -8
  266. data/vendor/assets/javascripts/languages/prism-textile.js +55 -29
  267. data/vendor/assets/javascripts/languages/prism-toml.js +14 -8
  268. data/vendor/assets/javascripts/languages/prism-tremor.js +72 -0
  269. data/vendor/assets/javascripts/languages/prism-tsx.js +15 -2
  270. data/vendor/assets/javascripts/languages/prism-tt2.js +7 -7
  271. data/vendor/assets/javascripts/languages/prism-turtle.js +4 -4
  272. data/vendor/assets/javascripts/languages/prism-twig.js +38 -40
  273. data/vendor/assets/javascripts/languages/prism-typescript.js +59 -6
  274. data/vendor/assets/javascripts/languages/prism-typoscript.js +80 -0
  275. data/vendor/assets/javascripts/languages/prism-unrealscript.js +42 -0
  276. data/vendor/assets/javascripts/languages/prism-uorazor.js +48 -0
  277. data/vendor/assets/javascripts/languages/prism-uri.js +96 -0
  278. data/vendor/assets/javascripts/languages/prism-v.js +81 -0
  279. data/vendor/assets/javascripts/languages/prism-vala.js +20 -10
  280. data/vendor/assets/javascripts/languages/prism-vbnet.js +11 -4
  281. data/vendor/assets/javascripts/languages/prism-velocity.js +6 -6
  282. data/vendor/assets/javascripts/languages/prism-verilog.js +14 -8
  283. data/vendor/assets/javascripts/languages/prism-vhdl.js +7 -4
  284. data/vendor/assets/javascripts/languages/prism-vim.js +4 -4
  285. data/vendor/assets/javascripts/languages/prism-visual-basic.js +9 -14
  286. data/vendor/assets/javascripts/languages/prism-warpscript.js +21 -0
  287. data/vendor/assets/javascripts/languages/prism-wasm.js +3 -3
  288. data/vendor/assets/javascripts/languages/prism-web-idl.js +101 -0
  289. data/vendor/assets/javascripts/languages/prism-wgsl.js +69 -0
  290. data/vendor/assets/javascripts/languages/prism-wiki.js +4 -4
  291. data/vendor/assets/javascripts/languages/prism-wolfram.js +29 -0
  292. data/vendor/assets/javascripts/languages/prism-wren.js +100 -0
  293. data/vendor/assets/javascripts/languages/prism-xeora.js +8 -8
  294. data/vendor/assets/javascripts/languages/prism-xml-doc.js +40 -0
  295. data/vendor/assets/javascripts/languages/prism-xojo.js +9 -8
  296. data/vendor/assets/javascripts/languages/prism-xquery.js +7 -7
  297. data/vendor/assets/javascripts/languages/prism-yaml.js +19 -12
  298. data/vendor/assets/javascripts/languages/prism-yang.js +20 -0
  299. data/vendor/assets/javascripts/languages/prism-zig.js +19 -15
  300. data/vendor/assets/javascripts/prism-plugin/prism-autolinker.js +60 -65
  301. data/vendor/assets/javascripts/prism-plugin/prism-autoloader.js +199 -67
  302. data/vendor/assets/javascripts/prism-plugin/prism-command-line.js +212 -112
  303. data/vendor/assets/javascripts/prism-plugin/prism-copy-to-clipboard.js +128 -43
  304. data/vendor/assets/javascripts/prism-plugin/prism-custom-class.js +23 -8
  305. data/vendor/assets/javascripts/prism-plugin/prism-data-uri-highlight.js +2 -6
  306. data/vendor/assets/javascripts/prism-plugin/prism-diff-highlight.js +19 -12
  307. data/vendor/assets/javascripts/prism-plugin/prism-download-button.js +3 -2
  308. data/vendor/assets/javascripts/prism-plugin/prism-file-highlight.js +169 -63
  309. data/vendor/assets/javascripts/prism-plugin/prism-filter-highlight-all.js +5 -3
  310. data/vendor/assets/javascripts/prism-plugin/prism-highlight-keywords.js +10 -13
  311. data/vendor/assets/javascripts/prism-plugin/prism-inline-color.js +29 -12
  312. data/vendor/assets/javascripts/prism-plugin/prism-jsonp-highlight.js +179 -82
  313. data/vendor/assets/javascripts/prism-plugin/prism-keep-markup.js +53 -26
  314. data/vendor/assets/javascripts/prism-plugin/prism-line-highlight.js +217 -84
  315. data/vendor/assets/javascripts/prism-plugin/prism-line-numbers.js +152 -68
  316. data/vendor/assets/javascripts/prism-plugin/prism-match-braces.js +53 -47
  317. data/vendor/assets/javascripts/prism-plugin/prism-normalize-whitespace.js +203 -164
  318. data/vendor/assets/javascripts/prism-plugin/prism-previewers.js +61 -52
  319. data/vendor/assets/javascripts/prism-plugin/prism-remove-initial-line-feed.js +16 -16
  320. data/vendor/assets/javascripts/prism-plugin/prism-show-invisibles.js +4 -5
  321. data/vendor/assets/javascripts/prism-plugin/prism-show-language.js +147 -21
  322. data/vendor/assets/javascripts/prism-plugin/prism-toolbar.js +9 -8
  323. data/vendor/assets/javascripts/prism-plugin/prism-treeview.js +70 -0
  324. data/vendor/assets/javascripts/prism-plugin/prism-unescaped-markup.js +41 -23
  325. data/vendor/assets/javascripts/prism-plugin/prism-wpd.js +133 -148
  326. data/vendor/assets/javascripts/prism.js +96 -4
  327. data/vendor/assets/stylesheets/prism-plugin/prism-autolinker.min.css +1 -0
  328. data/vendor/assets/stylesheets/prism-plugin/prism-command-line.css +11 -1
  329. data/vendor/assets/stylesheets/prism-plugin/prism-command-line.min.css +1 -0
  330. data/vendor/assets/stylesheets/prism-plugin/prism-diff-highlight.min.css +1 -0
  331. data/vendor/assets/stylesheets/prism-plugin/prism-inline-color.css +26 -2
  332. data/vendor/assets/stylesheets/prism-plugin/prism-inline-color.min.css +1 -0
  333. data/vendor/assets/stylesheets/prism-plugin/prism-line-highlight.css +21 -0
  334. data/vendor/assets/stylesheets/prism-plugin/prism-line-highlight.min.css +1 -0
  335. data/vendor/assets/stylesheets/prism-plugin/prism-line-numbers.css +0 -1
  336. data/vendor/assets/stylesheets/prism-plugin/prism-line-numbers.min.css +1 -0
  337. data/vendor/assets/stylesheets/prism-plugin/prism-match-braces.min.css +1 -0
  338. data/vendor/assets/stylesheets/prism-plugin/prism-previewers.css +1 -0
  339. data/vendor/assets/stylesheets/prism-plugin/prism-previewers.min.css +1 -0
  340. data/vendor/assets/stylesheets/prism-plugin/prism-show-invisibles.min.css +1 -0
  341. data/vendor/assets/stylesheets/prism-plugin/prism-toolbar.css +13 -12
  342. data/vendor/assets/stylesheets/prism-plugin/prism-toolbar.min.css +1 -0
  343. data/vendor/assets/stylesheets/prism-plugin/prism-treeview.css +168 -0
  344. data/vendor/assets/stylesheets/prism-plugin/prism-treeview.min.css +1 -0
  345. data/vendor/assets/stylesheets/prism-plugin/prism-unescaped-markup.min.css +1 -0
  346. data/vendor/assets/stylesheets/prism-plugin/prism-wpd.min.css +1 -0
  347. data/vendor/assets/stylesheets/prism-theme/prism-base16-ateliersulphurpool.light.css +3 -3
  348. data/vendor/assets/stylesheets/prism-theme/prism-cb.css +5 -35
  349. data/vendor/assets/stylesheets/prism-theme/prism-coldark-cold.css +317 -0
  350. data/vendor/assets/stylesheets/prism-theme/prism-coldark-dark.css +317 -0
  351. data/vendor/assets/stylesheets/prism-theme/prism-coy-without-shadows.css +140 -0
  352. data/vendor/assets/stylesheets/prism-theme/prism-coy.css +5 -12
  353. data/vendor/assets/stylesheets/prism-theme/prism-coy.min.css +1 -0
  354. data/vendor/assets/stylesheets/prism-theme/prism-dark.min.css +1 -0
  355. data/vendor/assets/stylesheets/prism-theme/prism-duotone-dark.css +3 -3
  356. data/vendor/assets/stylesheets/prism-theme/prism-duotone-earth.css +3 -3
  357. data/vendor/assets/stylesheets/prism-theme/prism-duotone-forest.css +3 -3
  358. data/vendor/assets/stylesheets/prism-theme/prism-duotone-light.css +3 -3
  359. data/vendor/assets/stylesheets/prism-theme/prism-duotone-sea.css +3 -3
  360. data/vendor/assets/stylesheets/prism-theme/prism-duotone-space.css +3 -3
  361. data/vendor/assets/stylesheets/prism-theme/prism-funky.min.css +1 -0
  362. data/vendor/assets/stylesheets/prism-theme/prism-gruvbox-dark.css +143 -0
  363. data/vendor/assets/stylesheets/prism-theme/prism-gruvbox-light.css +143 -0
  364. data/vendor/assets/stylesheets/prism-theme/prism-holi-theme.css +119 -0
  365. data/vendor/assets/stylesheets/prism-theme/prism-laserwave.css +133 -0
  366. data/vendor/assets/stylesheets/prism-theme/prism-lucario.css +122 -0
  367. data/vendor/assets/stylesheets/prism-theme/prism-night-owl.css +158 -0
  368. data/vendor/assets/stylesheets/prism-theme/prism-okaidia.css +1 -1
  369. data/vendor/assets/stylesheets/prism-theme/prism-okaidia.min.css +1 -0
  370. data/vendor/assets/stylesheets/prism-theme/prism-one-dark.css +440 -0
  371. data/vendor/assets/stylesheets/prism-theme/prism-one-light.css +428 -0
  372. data/vendor/assets/stylesheets/prism-theme/prism-shades-of-purple.css +3 -7
  373. data/vendor/assets/stylesheets/prism-theme/prism-solarized-dark-atom.css +143 -0
  374. data/vendor/assets/stylesheets/prism-theme/prism-solarizedlight.min.css +1 -0
  375. data/vendor/assets/stylesheets/prism-theme/prism-tomorrow.min.css +1 -0
  376. data/vendor/assets/stylesheets/prism-theme/prism-twilight.css +3 -33
  377. data/vendor/assets/stylesheets/prism-theme/prism-twilight.min.css +1 -0
  378. data/vendor/assets/stylesheets/prism-theme/prism-vs.css +7 -3
  379. data/vendor/assets/stylesheets/prism-theme/prism-vsc-dark-plus.css +108 -49
  380. data/vendor/assets/stylesheets/prism-theme/prism-xonokai.css +3 -30
  381. data/vendor/assets/stylesheets/prism-theme/prism-z-touch.css +160 -0
  382. data/vendor/assets/stylesheets/prism.css +1 -0
  383. metadata +133 -6
@@ -1,25 +1,148 @@
1
- // issues: nested multiline comments
2
- Prism.languages.swift = Prism.languages.extend('clike', {
3
- 'string': {
4
- pattern: /("|')(?:\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
5
- greedy: true,
6
- inside: {
7
- 'interpolation': {
8
- pattern: /\\\((?:[^()]|\([^)]+\))+\)/,
9
- inside: {
10
- delimiter: {
11
- pattern: /^\\\(|\)$/,
12
- alias: 'variable'
13
- }
14
- // See rest below
15
- }
1
+ Prism.languages.swift = {
2
+ 'comment': {
3
+ // Nested comments are supported up to 2 levels
4
+ pattern: /(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,
5
+ lookbehind: true,
6
+ greedy: true
7
+ },
8
+ 'string-literal': [
9
+ // https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html
10
+ {
11
+ pattern: RegExp(
12
+ /(^|[^"#])/.source
13
+ + '(?:'
14
+ // single-line string
15
+ + /"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source
16
+ + '|'
17
+ // multi-line string
18
+ + /"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source
19
+ + ')'
20
+ + /(?!["#])/.source
21
+ ),
22
+ lookbehind: true,
23
+ greedy: true,
24
+ inside: {
25
+ 'interpolation': {
26
+ pattern: /(\\\()(?:[^()]|\([^()]*\))*(?=\))/,
27
+ lookbehind: true,
28
+ inside: null // see below
29
+ },
30
+ 'interpolation-punctuation': {
31
+ pattern: /^\)|\\\($/,
32
+ alias: 'punctuation'
33
+ },
34
+ 'punctuation': /\\(?=[\r\n])/,
35
+ 'string': /[\s\S]+/
36
+ }
37
+ },
38
+ {
39
+ pattern: RegExp(
40
+ /(^|[^"#])(#+)/.source
41
+ + '(?:'
42
+ // single-line string
43
+ + /"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source
44
+ + '|'
45
+ // multi-line string
46
+ + /"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source
47
+ + ')'
48
+ + '\\2'
49
+ ),
50
+ lookbehind: true,
51
+ greedy: true,
52
+ inside: {
53
+ 'interpolation': {
54
+ pattern: /(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,
55
+ lookbehind: true,
56
+ inside: null // see below
57
+ },
58
+ 'interpolation-punctuation': {
59
+ pattern: /^\)|\\#+\($/,
60
+ alias: 'punctuation'
61
+ },
62
+ 'string': /[\s\S]+/
16
63
  }
64
+ },
65
+ ],
66
+
67
+ 'directive': {
68
+ // directives with conditions
69
+ pattern: RegExp(
70
+ /#/.source
71
+ + '(?:'
72
+ + (
73
+ /(?:elseif|if)\b/.source
74
+ + '(?:[ \t]*'
75
+ // This regex is a little complex. It's equivalent to this:
76
+ // (?:![ \t]*)?(?:\b\w+\b(?:[ \t]*<round>)?|<round>)(?:[ \t]*(?:&&|\|\|))?
77
+ // where <round> is a general parentheses expression.
78
+ + /(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source
79
+ + ')+'
80
+ )
81
+ + '|'
82
+ + /(?:else|endif)\b/.source
83
+ + ')'
84
+ ),
85
+ alias: 'property',
86
+ inside: {
87
+ 'directive-name': /^#\w+/,
88
+ 'boolean': /\b(?:false|true)\b/,
89
+ 'number': /\b\d+(?:\.\d+)*\b/,
90
+ 'operator': /!|&&|\|\||[<>]=?/,
91
+ 'punctuation': /[(),]/
17
92
  }
18
93
  },
19
- 'keyword': /\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,
94
+ 'literal': {
95
+ pattern: /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,
96
+ alias: 'constant'
97
+ },
98
+ 'other-directive': {
99
+ pattern: /#\w+\b/,
100
+ alias: 'property'
101
+ },
102
+
103
+ 'attribute': {
104
+ pattern: /@\w+/,
105
+ alias: 'atrule'
106
+ },
107
+
108
+ 'function-definition': {
109
+ pattern: /(\bfunc\s+)\w+/,
110
+ lookbehind: true,
111
+ alias: 'function'
112
+ },
113
+ 'label': {
114
+ // https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID141
115
+ pattern: /\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,
116
+ lookbehind: true,
117
+ alias: 'important'
118
+ },
119
+
120
+ 'keyword': /\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,
121
+ 'boolean': /\b(?:false|true)\b/,
122
+ 'nil': {
123
+ pattern: /\bnil\b/,
124
+ alias: 'constant'
125
+ },
126
+
127
+ 'short-argument': /\$\d+\b/,
128
+ 'omit': {
129
+ pattern: /\b_\b/,
130
+ alias: 'keyword'
131
+ },
20
132
  'number': /\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,
21
- 'constant': /\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,
22
- 'atrule': /@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,
23
- 'builtin': /\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/
133
+
134
+ // A class name must start with an upper-case letter and be either 1 letter long or contain a lower-case letter.
135
+ 'class-name': /\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,
136
+ 'function': /\b[a-z_]\w*(?=\s*\()/i,
137
+ 'constant': /\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,
138
+
139
+ // Operators are generic in Swift. Developers can even create new operators (e.g. +++).
140
+ // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html#ID481
141
+ // This regex only supports ASCII operators.
142
+ 'operator': /[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,
143
+ 'punctuation': /[{}[\]();,.:\\]/
144
+ };
145
+
146
+ Prism.languages.swift['string-literal'].forEach(function (rule) {
147
+ rule.inside['interpolation'].inside = Prism.languages.swift;
24
148
  });
25
- Prism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.languages.swift;
@@ -0,0 +1,74 @@
1
+ // https://www.freedesktop.org/software/systemd/man/systemd.syntax.html
2
+
3
+ (function (Prism) {
4
+
5
+ var comment = {
6
+ pattern: /^[;#].*/m,
7
+ greedy: true
8
+ };
9
+
10
+ var quotesSource = /"(?:[^\r\n"\\]|\\(?:[^\r]|\r\n?))*"(?!\S)/.source;
11
+
12
+ Prism.languages.systemd = {
13
+ 'comment': comment,
14
+
15
+ 'section': {
16
+ pattern: /^\[[^\n\r\[\]]*\](?=[ \t]*$)/m,
17
+ greedy: true,
18
+ inside: {
19
+ 'punctuation': /^\[|\]$/,
20
+ 'section-name': {
21
+ pattern: /[\s\S]+/,
22
+ alias: 'selector'
23
+ },
24
+ }
25
+ },
26
+
27
+ 'key': {
28
+ pattern: /^[^\s=]+(?=[ \t]*=)/m,
29
+ greedy: true,
30
+ alias: 'attr-name'
31
+ },
32
+ 'value': {
33
+ // This pattern is quite complex because of two properties:
34
+ // 1) Quotes (strings) must be preceded by a space. Since we can't use lookbehinds, we have to "resolve"
35
+ // the lookbehind. You will see this in the main loop where spaces are handled separately.
36
+ // 2) Line continuations.
37
+ // After line continuations, empty lines and comments are ignored so we have to consume them.
38
+ pattern: RegExp(
39
+ /(=[ \t]*(?!\s))/.source +
40
+ // the value either starts with quotes or not
41
+ '(?:' + quotesSource + '|(?=[^"\r\n]))' +
42
+ // main loop
43
+ '(?:' + (
44
+ /[^\s\\]/.source +
45
+ // handle spaces separately because of quotes
46
+ '|' + '[ \t]+(?:(?![ \t"])|' + quotesSource + ')' +
47
+ // line continuation
48
+ '|' + /\\[\r\n]+(?:[#;].*[\r\n]+)*(?![#;])/.source
49
+ ) +
50
+ ')*'
51
+ ),
52
+ lookbehind: true,
53
+ greedy: true,
54
+ alias: 'attr-value',
55
+ inside: {
56
+ 'comment': comment,
57
+ 'quoted': {
58
+ pattern: RegExp(/(^|\s)/.source + quotesSource),
59
+ lookbehind: true,
60
+ greedy: true,
61
+ },
62
+ 'punctuation': /\\$/m,
63
+
64
+ 'boolean': {
65
+ pattern: /^(?:false|no|off|on|true|yes)$/,
66
+ greedy: true
67
+ }
68
+ }
69
+ },
70
+
71
+ 'punctuation': /=/
72
+ };
73
+
74
+ }(Prism));
@@ -33,8 +33,8 @@
33
33
  'punctuation': /^=|^["']|["']$/
34
34
  }
35
35
  },
36
- 'keyword': /\w+(?=\s)/,
37
- 'attr-name': /\w+/
36
+ 'keyword': /\b\w+(?=\s)/,
37
+ 'attr-name': /\b\w+/
38
38
  }),
39
39
  'expression': createBlock('=', grammar, className),
40
40
  'class-feature': createBlock('\\+', grammar, className),
@@ -1 +1 @@
1
- Prism.languages['t4-vb'] = Prism.languages['t4-templating'].createT4('visual-basic');
1
+ Prism.languages['t4-vb'] = Prism.languages['t4-templating'].createT4('vbnet');
@@ -1,18 +1,20 @@
1
+ // https://en.wikipedia.org/wiki/Test_Anything_Protocol
2
+
1
3
  Prism.languages.tap = {
2
- fail: /not ok[^#{\n\r]*/,
3
- pass: /ok[^#{\n\r]*/,
4
- pragma: /pragma [+-][a-z]+/,
5
- bailout: /bail out!.*/i,
6
- version: /TAP version \d+/i,
7
- plan: /\d+\.\.\d+(?: +#.*)?/,
8
- subtest: {
4
+ 'fail': /not ok[^#{\n\r]*/,
5
+ 'pass': /ok[^#{\n\r]*/,
6
+ 'pragma': /pragma [+-][a-z]+/,
7
+ 'bailout': /bail out!.*/i,
8
+ 'version': /TAP version \d+/i,
9
+ 'plan': /\b\d+\.\.\d+(?: +#.*)?/,
10
+ 'subtest': {
9
11
  pattern: /# Subtest(?:: .*)?/,
10
12
  greedy: true
11
13
  },
12
- punctuation: /[{}]/,
13
- directive: /#.*/,
14
- yamlish: {
15
- pattern: /(^[^\S\r\n]*)---(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?[^\S\r\n]*\.\.\.$/m,
14
+ 'punctuation': /[{}]/,
15
+ 'directive': /#.*/,
16
+ 'yamlish': {
17
+ pattern: /(^[ \t]*)---[\s\S]*?[\r\n][ \t]*\.\.\.$/m,
16
18
  lookbehind: true,
17
19
  inside: Prism.languages.yaml,
18
20
  alias: 'language-yaml'
@@ -13,34 +13,34 @@ Prism.languages.tcl = {
13
13
  lookbehind: true
14
14
  },
15
15
  {
16
- pattern: /(\$){[^}]+}/,
16
+ pattern: /(\$)\{[^}]+\}/,
17
17
  lookbehind: true
18
18
  },
19
19
  {
20
- pattern: /(^\s*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,
20
+ pattern: /(^[\t ]*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,
21
21
  lookbehind: true
22
22
  }
23
23
  ],
24
24
  'function': {
25
- pattern: /(^\s*proc[ \t]+)[^\s]+/m,
25
+ pattern: /(^[\t ]*proc[ \t]+)\S+/m,
26
26
  lookbehind: true
27
27
  },
28
28
  'builtin': [
29
29
  {
30
- pattern: /(^\s*)(?:proc|return|class|error|eval|exit|for|foreach|if|switch|while|break|continue)\b/m,
30
+ pattern: /(^[\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\b/m,
31
31
  lookbehind: true
32
32
  },
33
- /\b(?:elseif|else)\b/
33
+ /\b(?:else|elseif)\b/
34
34
  ],
35
35
  'scope': {
36
- pattern: /(^\s*)(?:global|upvar|variable)\b/m,
36
+ pattern: /(^[\t ]*)(?:global|upvar|variable)\b/m,
37
37
  lookbehind: true,
38
38
  alias: 'constant'
39
39
  },
40
40
  'keyword': {
41
- pattern: /(^\s*|\[)(?:after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|Safe_Base|scan|seek|set|socket|source|split|string|subst|Tcl|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|wordBreak(?:After|Before)|test|vars)|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,
41
+ pattern: /(^[\t ]*|\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,
42
42
  lookbehind: true
43
43
  },
44
- 'operator': /!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|ne|in|ni)\b/,
44
+ 'operator': /!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|in|ne|ni)\b/,
45
45
  'punctuation': /[{}()\[\]]/
46
46
  };
@@ -1,21 +1,36 @@
1
1
  (function (Prism) {
2
2
  // We don't allow for pipes inside parentheses
3
3
  // to not break table pattern |(. foo |). bar |
4
- var modifierRegex = /(?:\([^|)]+\)|\[[^\]]+\]|\{[^}]+\})+/.source;
4
+ var modifierRegex = /\([^|()\n]+\)|\[[^\]\n]+\]|\{[^}\n]+\}/.source;
5
+ // Opening and closing parentheses which are not a modifier
6
+ // This pattern is necessary to prevent exponential backtracking
7
+ var parenthesesRegex = /\)|\((?![^|()\n]+\))/.source;
8
+ /**
9
+ * @param {string} source
10
+ * @param {string} [flags]
11
+ */
12
+ function withModifier(source, flags) {
13
+ return RegExp(
14
+ source
15
+ .replace(/<MOD>/g, function () { return '(?:' + modifierRegex + ')'; })
16
+ .replace(/<PAR>/g, function () { return '(?:' + parenthesesRegex + ')'; }),
17
+ flags || '');
18
+ }
19
+
5
20
  var modifierTokens = {
6
21
  'css': {
7
- pattern: /\{[^}]+\}/,
22
+ pattern: /\{[^{}]+\}/,
8
23
  inside: {
9
24
  rest: Prism.languages.css
10
25
  }
11
26
  },
12
27
  'class-id': {
13
- pattern: /(\()[^)]+(?=\))/,
28
+ pattern: /(\()[^()]+(?=\))/,
14
29
  lookbehind: true,
15
30
  alias: 'attr-value'
16
31
  },
17
32
  'lang': {
18
- pattern: /(\[)[^\]]+(?=\])/,
33
+ pattern: /(\[)[^\[\]]+(?=\])/,
19
34
  lookbehind: true,
20
35
  alias: 'attr-value'
21
36
  },
@@ -32,10 +47,10 @@
32
47
 
33
48
  // h1. Header 1
34
49
  'block-tag': {
35
- pattern: RegExp('^[a-z]\\w*(?:' + modifierRegex + '|[<>=()])*\\.'),
50
+ pattern: withModifier(/^[a-z]\w*(?:<MOD>|<PAR>|[<>=])*\./.source),
36
51
  inside: {
37
52
  'modifier': {
38
- pattern: RegExp('(^[a-z]\\w*)(?:' + modifierRegex + '|[<>=()])+(?=\\.)'),
53
+ pattern: withModifier(/(^[a-z]\w*)(?:<MOD>|<PAR>|[<>=])+(?=\.)/.source),
39
54
  lookbehind: true,
40
55
  inside: modifierTokens
41
56
  },
@@ -47,10 +62,10 @@
47
62
  // # List item
48
63
  // * List item
49
64
  'list': {
50
- pattern: RegExp('^[*#]+(?:' + modifierRegex + ')?\\s+.+', 'm'),
65
+ pattern: withModifier(/^[*#]+<MOD>*\s+\S.*/.source, 'm'),
51
66
  inside: {
52
67
  'modifier': {
53
- pattern: RegExp('(^[*#]+)' + modifierRegex),
68
+ pattern: withModifier(/(^[*#]+)<MOD>+/.source),
54
69
  lookbehind: true,
55
70
  inside: modifierTokens
56
71
  },
@@ -62,12 +77,12 @@
62
77
  'table': {
63
78
  // Modifiers can be applied to the row: {color:red}.|1|2|3|
64
79
  // or the cell: |{color:red}.1|2|3|
65
- pattern: RegExp('^(?:(?:' + modifierRegex + '|[<>=()^~])+\\.\\s*)?(?:\\|(?:(?:' + modifierRegex + '|[<>=()^~_]|[\\\\/]\\d+)+\\.)?[^|]*)+\\|', 'm'),
80
+ pattern: withModifier(/^(?:(?:<MOD>|<PAR>|[<>=^~])+\.\s*)?(?:\|(?:(?:<MOD>|<PAR>|[<>=^~_]|[\\/]\d+)+\.|(?!(?:<MOD>|<PAR>|[<>=^~_]|[\\/]\d+)+\.))[^|]*)+\|/.source, 'm'),
66
81
  inside: {
67
82
  'modifier': {
68
83
  // Modifiers for rows after the first one are
69
84
  // preceded by a pipe and a line feed
70
- pattern: RegExp('(^|\\|(?:\\r?\\n|\\r)?)(?:' + modifierRegex + '|[<>=()^~_]|[\\\\/]\\d+)+(?=\\.)'),
85
+ pattern: withModifier(/(^|\|(?:\r?\n|\r)?)(?:<MOD>|<PAR>|[<>=^~_]|[\\/]\d+)+(?=\.)/.source),
71
86
  lookbehind: true,
72
87
  inside: modifierTokens
73
88
  },
@@ -76,56 +91,65 @@
76
91
  },
77
92
 
78
93
  'inline': {
79
- pattern: RegExp('(\\*\\*|__|\\?\\?|[*_%@+\\-^~])(?:' + modifierRegex + ')?.+?\\1'),
94
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
95
+ pattern: withModifier(/(^|[^a-zA-Z\d])(\*\*|__|\?\?|[*_%@+\-^~])<MOD>*.+?\2(?![a-zA-Z\d])/.source),
96
+ lookbehind: true,
80
97
  inside: {
81
98
  // Note: superscripts and subscripts are not handled specifically
82
99
 
83
100
  // *bold*, **bold**
84
101
  'bold': {
85
- pattern: RegExp('(^(\\*\\*?)(?:' + modifierRegex + ')?).+?(?=\\2)'),
102
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
103
+ pattern: withModifier(/(^(\*\*?)<MOD>*).+?(?=\2)/.source),
86
104
  lookbehind: true
87
105
  },
88
106
 
89
107
  // _italic_, __italic__
90
108
  'italic': {
91
- pattern: RegExp('(^(__?)(?:' + modifierRegex + ')?).+?(?=\\2)'),
109
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
110
+ pattern: withModifier(/(^(__?)<MOD>*).+?(?=\2)/.source),
92
111
  lookbehind: true
93
112
  },
94
113
 
95
114
  // ??cite??
96
115
  'cite': {
97
- pattern: RegExp('(^\\?\\?(?:' + modifierRegex + ')?).+?(?=\\?\\?)'),
116
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
117
+ pattern: withModifier(/(^\?\?<MOD>*).+?(?=\?\?)/.source),
98
118
  lookbehind: true,
99
119
  alias: 'string'
100
120
  },
101
121
 
102
122
  // @code@
103
123
  'code': {
104
- pattern: RegExp('(^@(?:' + modifierRegex + ')?).+?(?=@)'),
124
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
125
+ pattern: withModifier(/(^@<MOD>*).+?(?=@)/.source),
105
126
  lookbehind: true,
106
127
  alias: 'keyword'
107
128
  },
108
129
 
109
130
  // +inserted+
110
131
  'inserted': {
111
- pattern: RegExp('(^\\+(?:' + modifierRegex + ')?).+?(?=\\+)'),
132
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
133
+ pattern: withModifier(/(^\+<MOD>*).+?(?=\+)/.source),
112
134
  lookbehind: true
113
135
  },
114
136
 
115
137
  // -deleted-
116
138
  'deleted': {
117
- pattern: RegExp('(^-(?:' + modifierRegex + ')?).+?(?=-)'),
139
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
140
+ pattern: withModifier(/(^-<MOD>*).+?(?=-)/.source),
118
141
  lookbehind: true
119
142
  },
120
143
 
121
144
  // %span%
122
145
  'span': {
123
- pattern: RegExp('(^%(?:' + modifierRegex + ')?).+?(?=%)'),
146
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
147
+ pattern: withModifier(/(^%<MOD>*).+?(?=%)/.source),
124
148
  lookbehind: true
125
149
  },
126
150
 
127
151
  'modifier': {
128
- pattern: RegExp('(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])' + modifierRegex),
152
+ pattern: withModifier(/(^\*\*|__|\?\?|[*_%@+\-^~])<MOD>+/.source),
129
153
  lookbehind: true,
130
154
  inside: modifierTokens
131
155
  },
@@ -138,11 +162,11 @@
138
162
  pattern: /^\[[^\]]+\]\S+$/m,
139
163
  inside: {
140
164
  'string': {
141
- pattern: /(\[)[^\]]+(?=\])/,
165
+ pattern: /(^\[)[^\]]+(?=\])/,
142
166
  lookbehind: true
143
167
  },
144
168
  'url': {
145
- pattern: /(\])\S+$/,
169
+ pattern: /(^\])\S+$/,
146
170
  lookbehind: true
147
171
  },
148
172
  'punctuation': /[\[\]]/
@@ -152,14 +176,16 @@
152
176
  // "text":http://example.com
153
177
  // "text":link-ref
154
178
  'link': {
155
- pattern: RegExp('"(?:' + modifierRegex + ')?[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),
179
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
180
+ pattern: withModifier(/"<MOD>*[^"]+":.+?(?=[^\w/]?(?:\s|$))/.source),
156
181
  inside: {
157
182
  'text': {
158
- pattern: RegExp('(^"(?:' + modifierRegex + ')?)[^"]+(?=")'),
183
+ // eslint-disable-next-line regexp/no-super-linear-backtracking
184
+ pattern: withModifier(/(^"<MOD>*)[^"]+(?=")/.source),
159
185
  lookbehind: true
160
186
  },
161
187
  'modifier': {
162
- pattern: RegExp('(^")' + modifierRegex),
188
+ pattern: withModifier(/(^")<MOD>+/.source),
163
189
  lookbehind: true,
164
190
  inside: modifierTokens
165
191
  },
@@ -174,15 +200,15 @@
174
200
  // !image.jpg!
175
201
  // !image.jpg(Title)!:http://example.com
176
202
  'image': {
177
- pattern: RegExp('!(?:' + modifierRegex + '|[<>=()])*[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?'),
203
+ pattern: withModifier(/!(?:<MOD>|<PAR>|[<>=])*(?![<>=])[^!\s()]+(?:\([^)]+\))?!(?::.+?(?=[^\w/]?(?:\s|$)))?/.source),
178
204
  inside: {
179
205
  'source': {
180
- pattern: RegExp('(^!(?:' + modifierRegex + '|[<>=()])*)[^!\\s()]+(?:\\([^)]+\\))?(?=!)'),
206
+ pattern: withModifier(/(^!(?:<MOD>|<PAR>|[<>=])*)(?![<>=])[^!\s()]+(?:\([^)]+\))?(?=!)/.source),
181
207
  lookbehind: true,
182
208
  alias: 'url'
183
209
  },
184
210
  'modifier': {
185
- pattern: RegExp('(^!)(?:' + modifierRegex + '|[<>=()])+'),
211
+ pattern: withModifier(/(^!)(?:<MOD>|<PAR>|[<>=])+/.source),
186
212
  lookbehind: true,
187
213
  inside: modifierTokens
188
214
  },
@@ -208,7 +234,7 @@
208
234
  pattern: /\b[A-Z\d]+\([^)]+\)/,
209
235
  inside: {
210
236
  'comment': {
211
- pattern: /(\()[^)]+(?=\))/,
237
+ pattern: /(\()[^()]+(?=\))/,
212
238
  lookbehind: true
213
239
  },
214
240
  'punctuation': /[()]/
@@ -217,7 +243,7 @@
217
243
 
218
244
  // Prism(C)
219
245
  'mark': {
220
- pattern: /\b\((?:TM|R|C)\)/,
246
+ pattern: /\b\((?:C|R|TM)\)/,
221
247
  alias: 'comment',
222
248
  inside: {
223
249
  'punctuation': /[()]/
@@ -1,7 +1,13 @@
1
1
  (function (Prism) {
2
2
 
3
- // pattern: /(?:[\w-]+|'[^'\n\r]*'|"(?:\.|[^\\"\r\n])*")/
4
- var key = "(?:[\\w-]+|'[^'\n\r]*'|\"(?:\\.|[^\\\\\"\r\n])*\")";
3
+ var key = /(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;
4
+
5
+ /**
6
+ * @param {string} pattern
7
+ */
8
+ function insertKey(pattern) {
9
+ return pattern.replace(/__/g, function () { return key; });
10
+ }
5
11
 
6
12
  Prism.languages.toml = {
7
13
  'comment': {
@@ -9,13 +15,13 @@
9
15
  greedy: true
10
16
  },
11
17
  'table': {
12
- pattern: RegExp("(^\\s*\\[\\s*(?:\\[\\s*)?)" + key + "(?:\\s*\\.\\s*" + key + ")*(?=\\s*\\])", "m"),
18
+ pattern: RegExp(insertKey(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source), 'm'),
13
19
  lookbehind: true,
14
20
  greedy: true,
15
21
  alias: 'class-name'
16
22
  },
17
23
  'key': {
18
- pattern: RegExp("(^\\s*|[{,]\\s*)" + key + "(?:\\s*\\.\\s*" + key + ")*(?=\\s*=)", "m"),
24
+ pattern: RegExp(insertKey(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source), 'm'),
19
25
  lookbehind: true,
20
26
  greedy: true,
21
27
  alias: 'property'
@@ -27,17 +33,17 @@
27
33
  'date': [
28
34
  {
29
35
  // Offset Date-Time, Local Date-Time, Local Date
30
- pattern: /\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?/i,
36
+ pattern: /\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,
31
37
  alias: 'number'
32
38
  },
33
39
  {
34
40
  // Local Time
35
- pattern: /\d{2}:\d{2}:\d{2}(?:\.\d+)?/i,
41
+ pattern: /\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,
36
42
  alias: 'number'
37
43
  }
38
44
  ],
39
- 'number': /(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?(?:inf|nan)\b/,
40
- 'boolean': /\b(?:true|false)\b/,
45
+ 'number': /(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,
46
+ 'boolean': /\b(?:false|true)\b/,
41
47
  'punctuation': /[.,=[\]{}]/
42
48
  };
43
49
  }(Prism));