prism-rails 1.6.0.3 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (341) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +88 -44
  4. data/lib/prism-rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/languages/index.js +82 -0
  6. data/vendor/assets/javascripts/{prism → languages}/prism-abap.js +2 -2
  7. data/vendor/assets/javascripts/languages/prism-abnf.js +54 -0
  8. data/vendor/assets/javascripts/{prism → languages}/prism-actionscript.js +3 -5
  9. data/vendor/assets/javascripts/{prism → languages}/prism-ada.js +2 -2
  10. data/vendor/assets/javascripts/languages/prism-antlr4.js +65 -0
  11. data/vendor/assets/javascripts/languages/prism-apacheconf.js +47 -0
  12. data/vendor/assets/javascripts/{prism → languages}/prism-apl.js +8 -5
  13. data/vendor/assets/javascripts/{prism → languages}/prism-applescript.js +3 -3
  14. data/vendor/assets/javascripts/languages/prism-aql.js +41 -0
  15. data/vendor/assets/javascripts/languages/prism-arduino.js +5 -0
  16. data/vendor/assets/javascripts/languages/prism-arff.js +10 -0
  17. data/vendor/assets/javascripts/{prism → languages}/prism-asciidoc.js +23 -60
  18. data/vendor/assets/javascripts/languages/prism-asm6502.js +28 -0
  19. data/vendor/assets/javascripts/{prism → languages}/prism-aspnet.js +22 -10
  20. data/vendor/assets/javascripts/languages/prism-autohotkey.js +27 -0
  21. data/vendor/assets/javascripts/{prism → languages}/prism-autoit.js +1 -0
  22. data/vendor/assets/javascripts/languages/prism-bash.js +197 -0
  23. data/vendor/assets/javascripts/{prism → languages}/prism-basic.js +5 -2
  24. data/vendor/assets/javascripts/{prism → languages}/prism-batch.js +0 -0
  25. data/vendor/assets/javascripts/languages/prism-bbcode.js +27 -0
  26. data/vendor/assets/javascripts/{prism → languages}/prism-bison.js +0 -0
  27. data/vendor/assets/javascripts/languages/prism-bnf.js +21 -0
  28. data/vendor/assets/javascripts/{prism → languages}/prism-brainfuck.js +0 -0
  29. data/vendor/assets/javascripts/languages/prism-brightscript.js +44 -0
  30. data/vendor/assets/javascripts/languages/prism-bro.js +48 -0
  31. data/vendor/assets/javascripts/languages/prism-c.js +41 -0
  32. data/vendor/assets/javascripts/languages/prism-cil.js +27 -0
  33. data/vendor/assets/javascripts/languages/prism-clike.js +30 -0
  34. data/vendor/assets/javascripts/languages/prism-clojure.js +16 -0
  35. data/vendor/assets/javascripts/languages/prism-cmake.js +29 -0
  36. data/vendor/assets/javascripts/{prism → languages}/prism-coffeescript.js +6 -5
  37. data/vendor/assets/javascripts/languages/prism-concurnas.js +48 -0
  38. data/vendor/assets/javascripts/languages/prism-core.js +627 -0
  39. data/vendor/assets/javascripts/languages/prism-cpp.js +21 -0
  40. data/vendor/assets/javascripts/{prism → languages}/prism-crystal.js +5 -7
  41. data/vendor/assets/javascripts/languages/prism-csharp.js +81 -0
  42. data/vendor/assets/javascripts/languages/prism-csp.js +25 -0
  43. data/vendor/assets/javascripts/languages/prism-css-extras.js +109 -0
  44. data/vendor/assets/javascripts/languages/prism-css.js +62 -0
  45. data/vendor/assets/javascripts/{prism → languages}/prism-d.js +49 -34
  46. data/vendor/assets/javascripts/{prism → languages}/prism-dart.js +8 -2
  47. data/vendor/assets/javascripts/languages/prism-diff.js +54 -0
  48. data/vendor/assets/javascripts/languages/prism-django.js +60 -0
  49. data/vendor/assets/javascripts/languages/prism-dns-zone-file.js +33 -0
  50. data/vendor/assets/javascripts/languages/prism-docker.js +11 -0
  51. data/vendor/assets/javascripts/languages/prism-ebnf.js +22 -0
  52. data/vendor/assets/javascripts/{prism → languages}/prism-eiffel.js +20 -7
  53. data/vendor/assets/javascripts/languages/prism-ejs.js +24 -0
  54. data/vendor/assets/javascripts/{prism → languages}/prism-elixir.js +14 -15
  55. data/vendor/assets/javascripts/languages/prism-elm.js +44 -0
  56. data/vendor/assets/javascripts/languages/prism-erb.js +20 -0
  57. data/vendor/assets/javascripts/{prism → languages}/prism-erlang.js +7 -4
  58. data/vendor/assets/javascripts/languages/prism-etlua.js +23 -0
  59. data/vendor/assets/javascripts/languages/prism-factor.js +403 -0
  60. data/vendor/assets/javascripts/languages/prism-firestore-security-rules.js +35 -0
  61. data/vendor/assets/javascripts/languages/prism-flow.js +35 -0
  62. data/vendor/assets/javascripts/{prism → languages}/prism-fortran.js +5 -2
  63. data/vendor/assets/javascripts/languages/prism-fsharp.js +67 -0
  64. data/vendor/assets/javascripts/languages/prism-ftl.js +97 -0
  65. data/vendor/assets/javascripts/languages/prism-gcode.js +15 -0
  66. data/vendor/assets/javascripts/languages/prism-gdscript.js +27 -0
  67. data/vendor/assets/javascripts/languages/prism-gedcom.js +28 -0
  68. data/vendor/assets/javascripts/languages/prism-gherkin.js +85 -0
  69. data/vendor/assets/javascripts/{prism → languages}/prism-git.js +2 -2
  70. data/vendor/assets/javascripts/{prism → languages}/prism-glsl.js +3 -3
  71. data/vendor/assets/javascripts/languages/prism-gml.js +7 -0
  72. data/vendor/assets/javascripts/languages/prism-go.js +12 -0
  73. data/vendor/assets/javascripts/languages/prism-graphql.js +31 -0
  74. data/vendor/assets/javascripts/{prism → languages}/prism-groovy.js +12 -10
  75. data/vendor/assets/javascripts/{prism → languages}/prism-haml.js +14 -26
  76. data/vendor/assets/javascripts/languages/prism-handlebars.js +37 -0
  77. data/vendor/assets/javascripts/languages/prism-haskell.js +38 -0
  78. data/vendor/assets/javascripts/{prism → languages}/prism-haxe.js +4 -2
  79. data/vendor/assets/javascripts/languages/prism-hcl.js +65 -0
  80. data/vendor/assets/javascripts/languages/prism-hpkp.js +20 -0
  81. data/vendor/assets/javascripts/languages/prism-hsts.js +20 -0
  82. data/vendor/assets/javascripts/languages/prism-http.js +77 -0
  83. data/vendor/assets/javascripts/languages/prism-ichigojam.js +15 -0
  84. data/vendor/assets/javascripts/{prism → languages}/prism-icon.js +4 -1
  85. data/vendor/assets/javascripts/{prism → languages}/prism-inform7.js +6 -3
  86. data/vendor/assets/javascripts/{prism → languages}/prism-ini.js +2 -2
  87. data/vendor/assets/javascripts/languages/prism-io.js +31 -0
  88. data/vendor/assets/javascripts/{prism → languages}/prism-j.js +5 -2
  89. data/vendor/assets/javascripts/{prism → languages}/prism-jade.js +0 -0
  90. data/vendor/assets/javascripts/languages/prism-java.js +63 -0
  91. data/vendor/assets/javascripts/languages/prism-javadoc.js +54 -0
  92. data/vendor/assets/javascripts/languages/prism-javadoclike.js +87 -0
  93. data/vendor/assets/javascripts/languages/prism-javascript.js +91 -0
  94. data/vendor/assets/javascripts/languages/prism-javastacktrace.js +93 -0
  95. data/vendor/assets/javascripts/{prism → languages}/prism-jolie.js +9 -10
  96. data/vendor/assets/javascripts/languages/prism-jq.js +67 -0
  97. data/vendor/assets/javascripts/languages/prism-js-extras.js +104 -0
  98. data/vendor/assets/javascripts/languages/prism-js-templates.js +346 -0
  99. data/vendor/assets/javascripts/languages/prism-jsdoc.js +73 -0
  100. data/vendor/assets/javascripts/languages/prism-json.js +19 -0
  101. data/vendor/assets/javascripts/languages/prism-json5.js +23 -0
  102. data/vendor/assets/javascripts/languages/prism-jsonp.js +7 -0
  103. data/vendor/assets/javascripts/languages/prism-jsx.js +126 -0
  104. data/vendor/assets/javascripts/languages/prism-julia.js +13 -0
  105. data/vendor/assets/javascripts/languages/prism-keyman.js +14 -0
  106. data/vendor/assets/javascripts/{prism → languages}/prism-kotlin.js +6 -6
  107. data/vendor/assets/javascripts/{prism → languages}/prism-latex.js +16 -13
  108. data/vendor/assets/javascripts/languages/prism-latte.js +69 -0
  109. data/vendor/assets/javascripts/{prism → languages}/prism-less.js +3 -9
  110. data/vendor/assets/javascripts/languages/prism-lilypond.js +69 -0
  111. data/vendor/assets/javascripts/languages/prism-liquid.js +12 -0
  112. data/vendor/assets/javascripts/languages/prism-lisp.js +197 -0
  113. data/vendor/assets/javascripts/{prism → languages}/prism-livescript.js +19 -18
  114. data/vendor/assets/javascripts/{prism → languages}/prism-lolcode.js +3 -2
  115. data/vendor/assets/javascripts/{prism → languages}/prism-lua.js +0 -0
  116. data/vendor/assets/javascripts/{prism → languages}/prism-makefile.js +5 -2
  117. data/vendor/assets/javascripts/languages/prism-markdown.js +344 -0
  118. data/vendor/assets/javascripts/languages/prism-markup-templating.js +123 -0
  119. data/vendor/assets/javascripts/languages/prism-markup.js +103 -0
  120. data/vendor/assets/javascripts/{prism → languages}/prism-matlab.js +5 -3
  121. data/vendor/assets/javascripts/{prism → languages}/prism-mel.js +7 -3
  122. data/vendor/assets/javascripts/{prism → languages}/prism-mizar.js +0 -0
  123. data/vendor/assets/javascripts/{prism → languages}/prism-monkey.js +9 -3
  124. data/vendor/assets/javascripts/languages/prism-moonscript.js +57 -0
  125. data/vendor/assets/javascripts/languages/prism-n1ql.js +18 -0
  126. data/vendor/assets/javascripts/languages/prism-n4js.js +14 -0
  127. data/vendor/assets/javascripts/languages/prism-nand2tetris-hdl.js +9 -0
  128. data/vendor/assets/javascripts/languages/prism-nasm.js +24 -0
  129. data/vendor/assets/javascripts/languages/prism-neon.js +41 -0
  130. data/vendor/assets/javascripts/languages/prism-nginx.js +11 -0
  131. data/vendor/assets/javascripts/{prism → languages}/prism-nim.js +4 -1
  132. data/vendor/assets/javascripts/{prism → languages}/prism-nix.js +2 -1
  133. data/vendor/assets/javascripts/languages/prism-nsis.js +29 -0
  134. data/vendor/assets/javascripts/languages/prism-objectivec.js +7 -0
  135. data/vendor/assets/javascripts/languages/prism-ocaml.js +41 -0
  136. data/vendor/assets/javascripts/languages/prism-opencl.js +54 -0
  137. data/vendor/assets/javascripts/{prism → languages}/prism-oz.js +6 -2
  138. data/vendor/assets/javascripts/{prism → languages}/prism-parigp.js +4 -1
  139. data/vendor/assets/javascripts/languages/prism-parser.js +73 -0
  140. data/vendor/assets/javascripts/{prism → languages}/prism-pascal.js +9 -4
  141. data/vendor/assets/javascripts/languages/prism-pascaligo.js +62 -0
  142. data/vendor/assets/javascripts/languages/prism-pcaxis.js +53 -0
  143. data/vendor/assets/javascripts/languages/prism-perl.js +191 -0
  144. data/vendor/assets/javascripts/{prism → languages}/prism-php-extras.js +3 -3
  145. data/vendor/assets/javascripts/languages/prism-php.js +130 -0
  146. data/vendor/assets/javascripts/languages/prism-phpdoc.js +27 -0
  147. data/vendor/assets/javascripts/languages/prism-plsql.js +26 -0
  148. data/vendor/assets/javascripts/languages/prism-powershell.js +60 -0
  149. data/vendor/assets/javascripts/{prism → languages}/prism-processing.js +2 -2
  150. data/vendor/assets/javascripts/{prism → languages}/prism-prolog.js +4 -1
  151. data/vendor/assets/javascripts/{prism → languages}/prism-properties.js +2 -2
  152. data/vendor/assets/javascripts/languages/prism-protobuf.js +36 -0
  153. data/vendor/assets/javascripts/languages/prism-pug.js +181 -0
  154. data/vendor/assets/javascripts/{prism → languages}/prism-puppet.js +7 -2
  155. data/vendor/assets/javascripts/{prism → languages}/prism-pure.js +19 -17
  156. data/vendor/assets/javascripts/languages/prism-python.js +64 -0
  157. data/vendor/assets/javascripts/{prism → languages}/prism-q.js +13 -6
  158. data/vendor/assets/javascripts/languages/prism-qml.js +58 -0
  159. data/vendor/assets/javascripts/{prism → languages}/prism-qore.js +7 -4
  160. data/vendor/assets/javascripts/{prism → languages}/prism-r.js +5 -2
  161. data/vendor/assets/javascripts/{prism → languages}/prism-reason.js +4 -8
  162. data/vendor/assets/javascripts/languages/prism-regex.js +97 -0
  163. data/vendor/assets/javascripts/languages/prism-renpy.js +29 -0
  164. data/vendor/assets/javascripts/{prism → languages}/prism-rest.js +4 -4
  165. data/vendor/assets/javascripts/{prism → languages}/prism-rip.js +7 -3
  166. data/vendor/assets/javascripts/{prism → languages}/prism-roboconf.js +0 -0
  167. data/vendor/assets/javascripts/languages/prism-robotframework.js +104 -0
  168. data/vendor/assets/javascripts/{prism → languages}/prism-ruby.js +49 -15
  169. data/vendor/assets/javascripts/languages/prism-rust.js +68 -0
  170. data/vendor/assets/javascripts/languages/prism-sas.js +302 -0
  171. data/vendor/assets/javascripts/{prism → languages}/prism-sass.js +1 -2
  172. data/vendor/assets/javascripts/{prism → languages}/prism-scala.js +10 -11
  173. data/vendor/assets/javascripts/languages/prism-scheme.js +33 -0
  174. data/vendor/assets/javascripts/{prism → languages}/prism-scss.js +18 -16
  175. data/vendor/assets/javascripts/languages/prism-shell-session.js +54 -0
  176. data/vendor/assets/javascripts/{prism → languages}/prism-smalltalk.js +9 -9
  177. data/vendor/assets/javascripts/languages/prism-smarty.js +87 -0
  178. data/vendor/assets/javascripts/languages/prism-solidity.js +20 -0
  179. data/vendor/assets/javascripts/languages/prism-solution-file.js +51 -0
  180. data/vendor/assets/javascripts/languages/prism-soy.js +96 -0
  181. data/vendor/assets/javascripts/languages/prism-sparql.js +18 -0
  182. data/vendor/assets/javascripts/languages/prism-splunk-spl.js +24 -0
  183. data/vendor/assets/javascripts/languages/prism-sqf.js +34 -0
  184. data/vendor/assets/javascripts/languages/prism-sql.js +24 -0
  185. data/vendor/assets/javascripts/{prism → languages}/prism-stylus.js +16 -7
  186. data/vendor/assets/javascripts/languages/prism-swift.js +25 -0
  187. data/vendor/assets/javascripts/languages/prism-t4-cs.js +1 -0
  188. data/vendor/assets/javascripts/languages/prism-t4-templating.js +49 -0
  189. data/vendor/assets/javascripts/languages/prism-t4-vb.js +1 -0
  190. data/vendor/assets/javascripts/languages/prism-tap.js +20 -0
  191. data/vendor/assets/javascripts/languages/prism-tcl.js +46 -0
  192. data/vendor/assets/javascripts/{prism → languages}/prism-textile.js +35 -32
  193. data/vendor/assets/javascripts/languages/prism-toml.js +43 -0
  194. data/vendor/assets/javascripts/languages/prism-tsx.js +2 -0
  195. data/vendor/assets/javascripts/languages/prism-tt2.js +53 -0
  196. data/vendor/assets/javascripts/languages/prism-turtle.js +54 -0
  197. data/vendor/assets/javascripts/{prism → languages}/prism-twig.js +8 -8
  198. data/vendor/assets/javascripts/languages/prism-typescript.js +7 -0
  199. data/vendor/assets/javascripts/languages/prism-vala.js +74 -0
  200. data/vendor/assets/javascripts/languages/prism-vbnet.js +15 -0
  201. data/vendor/assets/javascripts/languages/prism-velocity.js +72 -0
  202. data/vendor/assets/javascripts/languages/prism-verilog.js +20 -0
  203. data/vendor/assets/javascripts/{prism → languages}/prism-vhdl.js +2 -2
  204. data/vendor/assets/javascripts/{prism → languages}/prism-vim.js +1 -1
  205. data/vendor/assets/javascripts/languages/prism-visual-basic.js +34 -0
  206. data/vendor/assets/javascripts/languages/prism-wasm.js +31 -0
  207. data/vendor/assets/javascripts/{prism → languages}/prism-wiki.js +7 -6
  208. data/vendor/assets/javascripts/languages/prism-xeora.js +114 -0
  209. data/vendor/assets/javascripts/{prism → languages}/prism-xojo.js +1 -1
  210. data/vendor/assets/javascripts/languages/prism-xquery.js +162 -0
  211. data/vendor/assets/javascripts/languages/prism-yaml.js +76 -0
  212. data/vendor/assets/javascripts/languages/prism-zig.js +97 -0
  213. data/vendor/assets/javascripts/prism-plugin/prism-autolinker.js +13 -8
  214. data/vendor/assets/javascripts/prism-plugin/prism-autoloader.js +306 -95
  215. data/vendor/assets/javascripts/prism-plugin/prism-command-line.js +96 -38
  216. data/vendor/assets/javascripts/prism-plugin/prism-copy-to-clipboard.js +10 -10
  217. data/vendor/assets/javascripts/prism-plugin/prism-custom-class.js +89 -23
  218. data/vendor/assets/javascripts/prism-plugin/prism-data-uri-highlight.js +2 -2
  219. data/vendor/assets/javascripts/prism-plugin/prism-diff-highlight.js +83 -0
  220. data/vendor/assets/javascripts/prism-plugin/prism-download-button.js +19 -0
  221. data/vendor/assets/javascripts/prism-plugin/prism-file-highlight.js +53 -41
  222. data/vendor/assets/javascripts/prism-plugin/prism-filter-highlight-all.js +125 -0
  223. data/vendor/assets/javascripts/prism-plugin/prism-inline-color.js +88 -0
  224. data/vendor/assets/javascripts/prism-plugin/prism-jsonp-highlight.js +124 -69
  225. data/vendor/assets/javascripts/prism-plugin/prism-keep-markup.js +4 -2
  226. data/vendor/assets/javascripts/prism-plugin/prism-line-highlight.js +195 -115
  227. data/vendor/assets/javascripts/prism-plugin/prism-line-numbers.js +154 -43
  228. data/vendor/assets/javascripts/prism-plugin/prism-match-braces.js +184 -0
  229. data/vendor/assets/javascripts/prism-plugin/prism-normalize-whitespace.js +29 -11
  230. data/vendor/assets/javascripts/prism-plugin/prism-previewers.js +703 -0
  231. data/vendor/assets/javascripts/prism-plugin/prism-remove-initial-line-feed.js +2 -2
  232. data/vendor/assets/javascripts/prism-plugin/prism-show-invisibles.js +83 -18
  233. data/vendor/assets/javascripts/prism-plugin/prism-show-language.js +190 -19
  234. data/vendor/assets/javascripts/prism-plugin/prism-toolbar.js +53 -8
  235. data/vendor/assets/javascripts/prism-plugin/prism-unescaped-markup.js +11 -7
  236. data/vendor/assets/javascripts/prism-plugin/prism-wpd.js +12 -12
  237. data/vendor/assets/javascripts/prism.js +210 -127
  238. data/vendor/assets/stylesheets/prism-plugin/prism-diff-highlight.css +13 -0
  239. data/vendor/assets/stylesheets/prism-plugin/prism-inline-color.css +9 -0
  240. data/vendor/assets/stylesheets/prism-plugin/prism-line-highlight.css +5 -0
  241. data/vendor/assets/stylesheets/prism-plugin/prism-line-numbers.css +4 -3
  242. data/vendor/assets/stylesheets/prism-plugin/prism-match-braces.css +29 -0
  243. data/vendor/assets/stylesheets/prism-plugin/prism-previewers.css +242 -0
  244. data/vendor/assets/stylesheets/prism-plugin/prism-show-invisibles.css +7 -6
  245. data/vendor/assets/stylesheets/prism-plugin/prism-toolbar.css +21 -15
  246. data/vendor/assets/stylesheets/prism-plugin/prism-unescaped-markup.css +4 -4
  247. data/vendor/assets/stylesheets/prism-theme/prism-a11y-dark.css +161 -0
  248. data/vendor/assets/stylesheets/{prism-atom-dark.css → prism-theme/prism-atom-dark.css} +10 -13
  249. data/vendor/assets/stylesheets/prism-theme/prism-autolinker.css +3 -0
  250. data/vendor/assets/stylesheets/{prism-base16-ateliersulphurpool.light.css → prism-theme/prism-base16-ateliersulphurpool.light.css} +57 -53
  251. data/vendor/assets/stylesheets/{prism-cb.css → prism-theme/prism-cb.css} +27 -27
  252. data/vendor/assets/stylesheets/prism-theme/prism-command-line.css +33 -0
  253. data/vendor/assets/stylesheets/{prism-coy.css → prism-theme/prism-coy.css} +14 -9
  254. data/vendor/assets/stylesheets/prism-theme/prism-darcula.css +159 -0
  255. data/vendor/assets/stylesheets/{prism-dark.css → prism-theme/prism-dark.css} +2 -1
  256. data/vendor/assets/stylesheets/prism-theme/prism-dracula.css +122 -0
  257. data/vendor/assets/stylesheets/{prism-duotone-dark.css → prism-theme/prism-duotone-dark.css} +55 -51
  258. data/vendor/assets/stylesheets/{prism-duotone-earth.css → prism-theme/prism-duotone-earth.css} +55 -51
  259. data/vendor/assets/stylesheets/{prism-duotone-forest.css → prism-theme/prism-duotone-forest.css} +55 -51
  260. data/vendor/assets/stylesheets/{prism-duotone-light.css → prism-theme/prism-duotone-light.css} +55 -51
  261. data/vendor/assets/stylesheets/{prism-duotone-sea.css → prism-theme/prism-duotone-sea.css} +55 -51
  262. data/vendor/assets/stylesheets/{prism-duotone-space.css → prism-theme/prism-duotone-space.css} +55 -51
  263. data/vendor/assets/stylesheets/{prism-funky.css → prism-theme/prism-funky.css} +16 -2
  264. data/vendor/assets/stylesheets/{prism-ghcolors.css → prism-theme/prism-ghcolors.css} +47 -44
  265. data/vendor/assets/stylesheets/prism-theme/prism-hopscotch.css +132 -0
  266. data/vendor/assets/stylesheets/prism-theme/prism-line-highlight.css +49 -0
  267. data/vendor/assets/stylesheets/prism-theme/prism-line-numbers.css +41 -0
  268. data/vendor/assets/stylesheets/prism-theme/prism-material-dark.css +205 -0
  269. data/vendor/assets/stylesheets/prism-theme/prism-material-light.css +207 -0
  270. data/vendor/assets/stylesheets/prism-theme/prism-material-oceanic.css +210 -0
  271. data/vendor/assets/stylesheets/prism-theme/prism-nord.css +124 -0
  272. data/vendor/assets/stylesheets/{prism-okaidia.css → prism-theme/prism-okaidia.css} +4 -2
  273. data/vendor/assets/stylesheets/prism-theme/prism-pojoaque.css +151 -0
  274. data/vendor/assets/stylesheets/prism-theme/prism-previewers.css +242 -0
  275. data/vendor/assets/stylesheets/prism-theme/prism-shades-of-purple.css +200 -0
  276. data/vendor/assets/stylesheets/prism-theme/prism-show-invisibles.css +34 -0
  277. data/vendor/assets/stylesheets/{prism-show-language.css → prism-theme/prism-show-language.css} +0 -0
  278. data/vendor/assets/stylesheets/{prism-solarizedlight.css → prism-theme/prism-solarizedlight.css} +5 -3
  279. data/vendor/assets/stylesheets/prism-theme/prism-synthwave84.css +140 -0
  280. data/vendor/assets/stylesheets/{prism-tomorrow.css → prism-theme/prism-tomorrow.css} +1 -0
  281. data/vendor/assets/stylesheets/{prism-toolbar.css → prism-theme/prism-toolbar.css} +15 -15
  282. data/vendor/assets/stylesheets/{prism-twilight.css → prism-theme/prism-twilight.css} +2 -1
  283. data/vendor/assets/stylesheets/prism-theme/prism-unescaped-markup.css +10 -0
  284. data/vendor/assets/stylesheets/{prism-vs.css → prism-theme/prism-vs.css} +62 -55
  285. data/vendor/assets/stylesheets/prism-theme/prism-vsc-dark-plus.css +216 -0
  286. data/vendor/assets/stylesheets/prism-theme/prism-wpd.css +11 -0
  287. data/vendor/assets/stylesheets/prism-theme/prism-xonokai.css +189 -0
  288. data/vendor/assets/stylesheets/prism.css +5 -3
  289. metadata +262 -148
  290. data/vendor/assets/javascripts/prism/prism-apacheconf.js +0 -47
  291. data/vendor/assets/javascripts/prism/prism-autohotkey.js +0 -27
  292. data/vendor/assets/javascripts/prism/prism-bash.js +0 -80
  293. data/vendor/assets/javascripts/prism/prism-bro.js +0 -50
  294. data/vendor/assets/javascripts/prism/prism-c.js +0 -33
  295. data/vendor/assets/javascripts/prism/prism-clike.js +0 -29
  296. data/vendor/assets/javascripts/prism/prism-core.js +0 -511
  297. data/vendor/assets/javascripts/prism/prism-cpp.js +0 -12
  298. data/vendor/assets/javascripts/prism/prism-csharp.js +0 -32
  299. data/vendor/assets/javascripts/prism/prism-css-extras.js +0 -16
  300. data/vendor/assets/javascripts/prism/prism-css.js +0 -51
  301. data/vendor/assets/javascripts/prism/prism-diff.js +0 -20
  302. data/vendor/assets/javascripts/prism/prism-docker.js +0 -9
  303. data/vendor/assets/javascripts/prism/prism-fsharp.js +0 -33
  304. data/vendor/assets/javascripts/prism/prism-gherkin.js +0 -78
  305. data/vendor/assets/javascripts/prism/prism-go.js +0 -9
  306. data/vendor/assets/javascripts/prism/prism-graphql.js +0 -24
  307. data/vendor/assets/javascripts/prism/prism-handlebars.js +0 -83
  308. data/vendor/assets/javascripts/prism/prism-haskell.js +0 -35
  309. data/vendor/assets/javascripts/prism/prism-http.js +0 -50
  310. data/vendor/assets/javascripts/prism/prism-java.js +0 -16
  311. data/vendor/assets/javascripts/prism/prism-javascript.js +0 -48
  312. data/vendor/assets/javascripts/prism/prism-json.js +0 -11
  313. data/vendor/assets/javascripts/prism/prism-jsx.js +0 -27
  314. data/vendor/assets/javascripts/prism/prism-julia.js +0 -12
  315. data/vendor/assets/javascripts/prism/prism-keyman.js +0 -14
  316. data/vendor/assets/javascripts/prism/prism-markdown.js +0 -120
  317. data/vendor/assets/javascripts/prism/prism-markup.js +0 -46
  318. data/vendor/assets/javascripts/prism/prism-nasm.js +0 -24
  319. data/vendor/assets/javascripts/prism/prism-nginx.js +0 -11
  320. data/vendor/assets/javascripts/prism/prism-nsis.js +0 -26
  321. data/vendor/assets/javascripts/prism/prism-objectivec.js +0 -5
  322. data/vendor/assets/javascripts/prism/prism-ocaml.js +0 -21
  323. data/vendor/assets/javascripts/prism/prism-parser.js +0 -66
  324. data/vendor/assets/javascripts/prism/prism-perl.js +0 -140
  325. data/vendor/assets/javascripts/prism/prism-php.js +0 -111
  326. data/vendor/assets/javascripts/prism/prism-powershell.js +0 -52
  327. data/vendor/assets/javascripts/prism/prism-protobuf.js +0 -8
  328. data/vendor/assets/javascripts/prism/prism-python.js +0 -27
  329. data/vendor/assets/javascripts/prism/prism-rust.js +0 -53
  330. data/vendor/assets/javascripts/prism/prism-sas.js +0 -31
  331. data/vendor/assets/javascripts/prism/prism-scheme.js +0 -26
  332. data/vendor/assets/javascripts/prism/prism-smarty.js +0 -127
  333. data/vendor/assets/javascripts/prism/prism-sql.js +0 -17
  334. data/vendor/assets/javascripts/prism/prism-swift.js +0 -25
  335. data/vendor/assets/javascripts/prism/prism-tcl.js +0 -43
  336. data/vendor/assets/javascripts/prism/prism-typescript.js +0 -5
  337. data/vendor/assets/javascripts/prism/prism-verilog.js +0 -17
  338. data/vendor/assets/javascripts/prism/prism-yaml.js +0 -44
  339. data/vendor/assets/stylesheets/prism-hopscotch.css +0 -124
  340. data/vendor/assets/stylesheets/prism-pojoaque.css +0 -134
  341. data/vendor/assets/stylesheets/prism-xonokai.css +0 -164
@@ -1,18 +1,17 @@
1
1
  Prism.languages.jolie = Prism.languages.extend('clike', {
2
- 'keyword': /\b(?:include|define|is_defined|undef|main|init|outputPort|inputPort|Location|Protocol|Interfaces|RequestResponse|OneWay|type|interface|extender|throws|cset|csets|forward|Aggregates|Redirects|embedded|courier|extender|execution|sequential|concurrent|single|scope|install|throw|comp|cH|default|global|linkIn|linkOut|synchronized|this|new|for|if|else|while|in|Jolie|Java|Javascript|nullProcess|spawn|constants|with|provide|until|exit|foreach|instanceof|over|service)\b/g,
2
+ 'keyword': /\b(?:include|define|is_defined|undef|main|init|outputPort|inputPort|Location|Protocol|Interfaces|RequestResponse|OneWay|type|interface|extender|throws|cset|csets|forward|Aggregates|Redirects|embedded|courier|execution|sequential|concurrent|single|scope|install|throw|comp|cH|default|global|linkIn|linkOut|synchronized|this|new|for|if|else|while|in|Jolie|Java|Javascript|nullProcess|spawn|constants|with|provide|until|exit|foreach|instanceof|over|service)\b/,
3
3
  'builtin': /\b(?:undefined|string|int|void|long|Byte|bool|double|float|char|any)\b/,
4
- 'number': /\b\d*\.?\d+(?:e[+-]?\d+)?l?\b/i,
5
- 'operator': /->|<<|[!+-<>=*]?=|[:<>!?*\/%^]|&&|\|\||--?|\+\+?/g,
4
+ 'number': /(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?l?/i,
5
+ 'operator': /-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[:?\/%^]/,
6
6
  'symbol': /[|;@]/,
7
7
  'punctuation': /[,.]/,
8
8
  'string': {
9
- pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
9
+ pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
10
10
  greedy: true
11
- },
11
+ }
12
12
  });
13
13
 
14
14
  delete Prism.languages.jolie['class-name'];
15
- delete Prism.languages.jolie['function'];
16
15
 
17
16
  Prism.languages.insertBefore( 'jolie', 'keyword', {
18
17
  'function':
@@ -24,7 +23,7 @@ Prism.languages.insertBefore( 'jolie', 'keyword', {
24
23
  pattern: /(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,
25
24
  lookbehind: true,
26
25
  inside: {
27
- 'withExtension': {
26
+ 'with-extension': {
28
27
  pattern: /\bwith\s+\w+/,
29
28
  inside: {
30
29
  'keyword' : /\bwith\b/
@@ -46,11 +45,11 @@ Prism.languages.insertBefore( 'jolie', 'keyword', {
46
45
  pattern: /,/
47
46
  },
48
47
  'function': {
49
- pattern: /\w+/g
48
+ pattern: /\w+/
50
49
  },
51
50
  'symbol': {
52
- pattern: /=>/g
51
+ pattern: /=>/
53
52
  }
54
53
  }
55
54
  }
56
- });
55
+ });
@@ -0,0 +1,67 @@
1
+ (function (Prism) {
2
+
3
+ var interpolation = /\\\((?:[^()]|\([^()]*\))*\)/.source;
4
+ var string = RegExp(/"(?:[^"\r\n\\]|\\[^\r\n(]|__)*"/.source.replace(/__/g, interpolation));
5
+ var stringInterpolation = {
6
+ 'interpolation': {
7
+ pattern: RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + interpolation),
8
+ lookbehind: true,
9
+ inside: {
10
+ 'content': {
11
+ pattern: /^(\\\()[\s\S]+(?=\)$)/,
12
+ lookbehind: true,
13
+ inside: null // see below
14
+ },
15
+ 'punctuation': /^\\\(|\)$/
16
+ }
17
+ }
18
+ };
19
+
20
+ var jq = Prism.languages.jq = {
21
+ 'comment': /#.*/,
22
+ 'property': {
23
+ pattern: RegExp(string.source + /(?=\s*:(?!:))/.source),
24
+ greedy: true,
25
+ inside: stringInterpolation
26
+ },
27
+ 'string': {
28
+ pattern: string,
29
+ greedy: true,
30
+ inside: stringInterpolation
31
+ },
32
+
33
+ 'function': {
34
+ pattern: /(\bdef\s+)[a-z_]\w+/i,
35
+ lookbehind: true
36
+ },
37
+
38
+ 'variable': /\B\$\w+/,
39
+ 'property-literal': {
40
+ pattern: /[a-z_]\w*(?=\s*:(?!:))/i,
41
+ alias: 'property'
42
+ },
43
+ 'keyword': /\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,
44
+ 'boolean': /\b(?:true|false)\b/,
45
+ 'number': /(?:\b\d+\.|\B\.)?\d+(?:[eE][+-]?\d+)?\b/,
46
+
47
+ 'operator': [
48
+ {
49
+ pattern: /\|=?/,
50
+ alias: 'pipe'
51
+ },
52
+ /\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|or|not)\b/
53
+ ],
54
+ 'c-style-function': {
55
+ pattern: /\b[a-z_]\w*(?=\s*\()/i,
56
+ alias: 'function'
57
+ },
58
+ 'punctuation': /::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,
59
+ 'dot': {
60
+ pattern: /\./,
61
+ alias: 'important'
62
+ }
63
+ }
64
+
65
+ stringInterpolation.interpolation.inside.content.inside = jq;
66
+
67
+ }(Prism));
@@ -0,0 +1,104 @@
1
+ (function (Prism) {
2
+
3
+ Prism.languages.insertBefore('javascript', 'function-variable', {
4
+ 'method-variable': {
5
+ pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),
6
+ lookbehind: true,
7
+ alias: ['function-variable', 'method', 'function', 'property-access']
8
+ }
9
+ });
10
+
11
+ Prism.languages.insertBefore('javascript', 'function', {
12
+ 'method': {
13
+ pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source),
14
+ lookbehind: true,
15
+ alias: ['function', 'property-access']
16
+ }
17
+ });
18
+
19
+ Prism.languages.insertBefore('javascript', 'constant', {
20
+ 'known-class-name': [
21
+ {
22
+ // standard built-ins
23
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
24
+ pattern: /\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,
25
+ alias: 'class-name'
26
+ },
27
+ {
28
+ // errors
29
+ pattern: /\b(?:[A-Z]\w*)Error\b/,
30
+ alias: 'class-name'
31
+ }
32
+ ]
33
+ });
34
+
35
+ Prism.languages.javascript['keyword'].unshift(
36
+ {
37
+ pattern: /\b(?:as|default|export|from|import)\b/,
38
+ alias: 'module'
39
+ },
40
+ {
41
+ pattern: /\bnull\b/,
42
+ alias: ['null', 'nil']
43
+ },
44
+ {
45
+ pattern: /\bundefined\b/,
46
+ alias: 'nil'
47
+ }
48
+ );
49
+
50
+ Prism.languages.insertBefore('javascript', 'operator', {
51
+ 'spread': {
52
+ pattern: /\.{3}/,
53
+ alias: 'operator'
54
+ },
55
+ 'arrow': {
56
+ pattern: /=>/,
57
+ alias: 'operator'
58
+ }
59
+ });
60
+
61
+ Prism.languages.insertBefore('javascript', 'punctuation', {
62
+ 'property-access': {
63
+ pattern: /(\.\s*)#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,
64
+ lookbehind: true
65
+ },
66
+ 'maybe-class-name': {
67
+ pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,
68
+ lookbehind: true
69
+ },
70
+ 'dom': {
71
+ // this contains only a few commonly used DOM variables
72
+ pattern: /\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,
73
+ alias: 'variable'
74
+ },
75
+ 'console': {
76
+ pattern: /\bconsole(?=\s*\.)/,
77
+ alias: 'class-name'
78
+ }
79
+ });
80
+
81
+
82
+ // add 'maybe-class-name' to tokens which might be a class name
83
+ var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];
84
+
85
+ for (var i = 0; i < maybeClassNameTokens.length; i++) {
86
+ var token = maybeClassNameTokens[i];
87
+ var value = Prism.languages.javascript[token];
88
+
89
+ // convert regex to object
90
+ if (Prism.util.type(value) === 'RegExp') {
91
+ value = Prism.languages.javascript[token] = {
92
+ pattern: value
93
+ };
94
+ }
95
+
96
+ // keep in mind that we don't support arrays
97
+
98
+ var inside = value.inside || {};
99
+ value.inside = inside;
100
+
101
+ inside['maybe-class-name'] = /^[A-Z][\s\S]*/;
102
+ }
103
+
104
+ }(Prism));
@@ -0,0 +1,346 @@
1
+ (function (Prism) {
2
+
3
+ var templateString = Prism.languages.javascript['template-string'];
4
+
5
+ // see the pattern in prism-javascript.js
6
+ var templateLiteralPattern = templateString.pattern.source;
7
+ var interpolationObject = templateString.inside['interpolation'];
8
+ var interpolationPunctuationObject = interpolationObject.inside['interpolation-punctuation'];
9
+ var interpolationPattern = interpolationObject.pattern.source;
10
+
11
+
12
+ /**
13
+ * Creates a new pattern to match a template string with a special tag.
14
+ *
15
+ * This will return `undefined` if there is no grammar with the given language id.
16
+ *
17
+ * @param {string} language The language id of the embedded language. E.g. `markdown`.
18
+ * @param {string} tag The regex pattern to match the tag.
19
+ * @returns {object | undefined}
20
+ * @example
21
+ * createTemplate('css', /\bcss/.source);
22
+ */
23
+ function createTemplate(language, tag) {
24
+ if (!Prism.languages[language]) {
25
+ return undefined;
26
+ }
27
+
28
+ return {
29
+ pattern: RegExp('((?:' + tag + ')\\s*)' + templateLiteralPattern),
30
+ lookbehind: true,
31
+ greedy: true,
32
+ inside: {
33
+ 'template-punctuation': {
34
+ pattern: /^`|`$/,
35
+ alias: 'string'
36
+ },
37
+ 'embedded-code': {
38
+ pattern: /[\s\S]+/,
39
+ alias: language
40
+ }
41
+ }
42
+ };
43
+ }
44
+
45
+
46
+ Prism.languages.javascript['template-string'] = [
47
+ // styled-jsx:
48
+ // css`a { color: #25F; }`
49
+ // styled-components:
50
+ // styled.h1`color: red;`
51
+ createTemplate('css', /\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),
52
+
53
+ // html`<p></p>`
54
+ // div.innerHTML = `<p></p>`
55
+ createTemplate('html', /\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),
56
+
57
+ // svg`<path fill="#fff" d="M55.37 ..."/>`
58
+ createTemplate('svg', /\bsvg/.source),
59
+
60
+ // md`# h1`, markdown`## h2`
61
+ createTemplate('markdown', /\b(?:md|markdown)/.source),
62
+
63
+ // gql`...`, graphql`...`, graphql.experimental`...`
64
+ createTemplate('graphql', /\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),
65
+
66
+ // vanilla template string
67
+ templateString
68
+ ].filter(Boolean);
69
+
70
+
71
+ /**
72
+ * Returns a specific placeholder literal for the given language.
73
+ *
74
+ * @param {number} counter
75
+ * @param {string} language
76
+ * @returns {string}
77
+ */
78
+ function getPlaceholder(counter, language) {
79
+ return '___' + language.toUpperCase() + '_' + counter + '___';
80
+ }
81
+
82
+ /**
83
+ * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.
84
+ *
85
+ * @param {string} code
86
+ * @param {any} grammar
87
+ * @param {string} language
88
+ * @returns {(string|Token)[]}
89
+ */
90
+ function tokenizeWithHooks(code, grammar, language) {
91
+ var env = {
92
+ code: code,
93
+ grammar: grammar,
94
+ language: language
95
+ };
96
+ Prism.hooks.run('before-tokenize', env);
97
+ env.tokens = Prism.tokenize(env.code, env.grammar);
98
+ Prism.hooks.run('after-tokenize', env);
99
+ return env.tokens;
100
+ }
101
+
102
+ /**
103
+ * Returns the token of the given JavaScript interpolation expression.
104
+ *
105
+ * @param {string} expression The code of the expression. E.g. `"${42}"`
106
+ * @returns {Token}
107
+ */
108
+ function tokenizeInterpolationExpression(expression) {
109
+ var tempGrammar = {};
110
+ tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject;
111
+
112
+ /** @type {Array} */
113
+ var tokens = Prism.tokenize(expression, tempGrammar);
114
+ if (tokens.length === 3) {
115
+ /**
116
+ * The token array will look like this
117
+ * [
118
+ * ["interpolation-punctuation", "${"]
119
+ * "..." // JavaScript expression of the interpolation
120
+ * ["interpolation-punctuation", "}"]
121
+ * ]
122
+ */
123
+
124
+ var args = [1, 1];
125
+ args.push.apply(args, tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript'));
126
+
127
+ tokens.splice.apply(tokens, args);
128
+ }
129
+
130
+ return new Prism.Token('interpolation', tokens, interpolationObject.alias, expression);
131
+ }
132
+
133
+ /**
134
+ * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.
135
+ *
136
+ * This function has 3 phases:
137
+ *
138
+ * 1. Replace all JavaScript interpolation expression with a placeholder.
139
+ * The placeholder will have the syntax of a identify of the target language.
140
+ * 2. Tokenize the code with placeholders.
141
+ * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.
142
+ * The insertion only works if a placeholder hasn't been "ripped apart" meaning that the placeholder has been
143
+ * tokenized as two tokens by the grammar of the embedded language.
144
+ *
145
+ * @param {string} code
146
+ * @param {object} grammar
147
+ * @param {string} language
148
+ * @returns {Token}
149
+ */
150
+ function tokenizeEmbedded(code, grammar, language) {
151
+ // 1. First filter out all interpolations
152
+
153
+ // because they might be escaped, we need a lookbehind, so we use Prism
154
+ /** @type {(Token|string)[]} */
155
+ var _tokens = Prism.tokenize(code, {
156
+ 'interpolation': {
157
+ pattern: RegExp(interpolationPattern),
158
+ lookbehind: true
159
+ }
160
+ });
161
+
162
+ // replace all interpolations with a placeholder which is not in the code already
163
+ var placeholderCounter = 0;
164
+ /** @type {Object<string, string>} */
165
+ var placeholderMap = {};
166
+ var embeddedCode = _tokens.map(function (token) {
167
+ if (typeof token === 'string') {
168
+ return token;
169
+ } else {
170
+ var interpolationExpression = token.content;
171
+
172
+ var placeholder;
173
+ while (code.indexOf(placeholder = getPlaceholder(placeholderCounter++, language)) !== -1) { }
174
+ placeholderMap[placeholder] = interpolationExpression;
175
+ return placeholder;
176
+ }
177
+ }).join('');
178
+
179
+
180
+ // 2. Tokenize the embedded code
181
+
182
+ var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language);
183
+
184
+
185
+ // 3. Re-insert the interpolation
186
+
187
+ var placeholders = Object.keys(placeholderMap);
188
+ placeholderCounter = 0;
189
+
190
+ /**
191
+ *
192
+ * @param {(Token|string)[]} tokens
193
+ * @returns {void}
194
+ */
195
+ function walkTokens(tokens) {
196
+ for (var i = 0; i < tokens.length; i++) {
197
+ if (placeholderCounter >= placeholders.length) {
198
+ return;
199
+ }
200
+
201
+ var token = tokens[i];
202
+
203
+ if (typeof token === 'string' || typeof token.content === 'string') {
204
+ var placeholder = placeholders[placeholderCounter];
205
+ var s = typeof token === 'string' ? token : /** @type {string} */ (token.content);
206
+
207
+ var index = s.indexOf(placeholder);
208
+ if (index !== -1) {
209
+ ++placeholderCounter;
210
+
211
+ var before = s.substring(0, index);
212
+ var middle = tokenizeInterpolationExpression(placeholderMap[placeholder]);
213
+ var after = s.substring(index + placeholder.length);
214
+
215
+ var replacement = [];
216
+ if (before) {
217
+ replacement.push(before);
218
+ }
219
+ replacement.push(middle);
220
+ if (after) {
221
+ var afterTokens = [after];
222
+ walkTokens(afterTokens);
223
+ replacement.push.apply(replacement, afterTokens);
224
+ }
225
+
226
+ if (typeof token === 'string') {
227
+ tokens.splice.apply(tokens, [i, 1].concat(replacement));
228
+ i += replacement.length - 1;
229
+ } else {
230
+ token.content = replacement;
231
+ }
232
+ }
233
+ } else {
234
+ var content = token.content;
235
+ if (Array.isArray(content)) {
236
+ walkTokens(content);
237
+ } else {
238
+ walkTokens([content]);
239
+ }
240
+ }
241
+ }
242
+ }
243
+ walkTokens(embeddedTokens);
244
+
245
+ return new Prism.Token(language, embeddedTokens, 'language-' + language, code);
246
+ }
247
+
248
+ /**
249
+ * The languages for which JS templating will handle tagged template literals.
250
+ *
251
+ * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.
252
+ */
253
+ var supportedLanguages = {
254
+ 'javascript': true,
255
+ 'js': true,
256
+ 'typescript': true,
257
+ 'ts': true,
258
+ 'jsx': true,
259
+ 'tsx': true,
260
+ };
261
+ Prism.hooks.add('after-tokenize', function (env) {
262
+ if (!(env.language in supportedLanguages)) {
263
+ return;
264
+ }
265
+
266
+ /**
267
+ * Finds and tokenizes all template strings with an embedded languages.
268
+ *
269
+ * @param {(Token | string)[]} tokens
270
+ * @returns {void}
271
+ */
272
+ function findTemplateStrings(tokens) {
273
+ for (var i = 0, l = tokens.length; i < l; i++) {
274
+ var token = tokens[i];
275
+
276
+ if (typeof token === 'string') {
277
+ continue;
278
+ }
279
+
280
+ var content = token.content;
281
+ if (!Array.isArray(content)) {
282
+ if (typeof content !== 'string') {
283
+ findTemplateStrings([content]);
284
+ }
285
+ continue;
286
+ }
287
+
288
+ if (token.type === 'template-string') {
289
+ /**
290
+ * A JavaScript template-string token will look like this:
291
+ *
292
+ * ["template-string", [
293
+ * ["template-punctuation", "`"],
294
+ * (
295
+ * An array of "string" and "interpolation" tokens. This is the simple string case.
296
+ * or
297
+ * ["embedded-code", "..."] This is the token containing the embedded code.
298
+ * It also has an alias which is the language of the embedded code.
299
+ * ),
300
+ * ["template-punctuation", "`"]
301
+ * ]]
302
+ */
303
+
304
+ var embedded = content[1];
305
+ if (content.length === 3 && typeof embedded !== 'string' && embedded.type === 'embedded-code') {
306
+ // get string content
307
+ var code = stringContent(embedded);
308
+
309
+ var alias = embedded.alias;
310
+ var language = Array.isArray(alias) ? alias[0] : alias;
311
+
312
+ var grammar = Prism.languages[language];
313
+ if (!grammar) {
314
+ // the embedded language isn't registered.
315
+ continue;
316
+ }
317
+
318
+ content[1] = tokenizeEmbedded(code, grammar, language);
319
+ }
320
+ } else {
321
+ findTemplateStrings(content);
322
+ }
323
+ }
324
+ }
325
+
326
+ findTemplateStrings(env.tokens);
327
+ });
328
+
329
+
330
+ /**
331
+ * Returns the string content of a token or token stream.
332
+ *
333
+ * @param {string | Token | (string | Token)[]} value
334
+ * @returns {string}
335
+ */
336
+ function stringContent(value) {
337
+ if (typeof value === 'string') {
338
+ return value;
339
+ } else if (Array.isArray(value)) {
340
+ return value.map(stringContent).join('');
341
+ } else {
342
+ return stringContent(value.content);
343
+ }
344
+ }
345
+
346
+ }(Prism));