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,33 +1,38 @@
1
1
  (function () {
2
2
 
3
- if (typeof Prism === 'undefined' || !Prism.languages['diff']) {
3
+ if (typeof Prism === 'undefined') {
4
4
  return;
5
5
  }
6
6
 
7
7
 
8
- var LANGUAGE_REGEX = /diff-([\w-]+)/i;
9
- var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/gi;
8
+ var LANGUAGE_REGEX = /^diff-([\w-]+)/i;
9
+ var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g;
10
10
  //this will match a line plus the line break while ignoring the line breaks HTML tags may contain.
11
- var HTML_LINE = RegExp(/(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))/.source.replace(/__/g, HTML_TAG.source), 'gi');
12
-
13
- var PREFIXES = Prism.languages.diff.PREFIXES;
11
+ var HTML_LINE = RegExp(/(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))/.source.replace(/__/g, function () { return HTML_TAG.source; }), 'gi');
14
12
 
13
+ var warningLogged = false;
15
14
 
16
15
  Prism.hooks.add('before-sanity-check', function (env) {
17
16
  var lang = env.language;
18
17
  if (LANGUAGE_REGEX.test(lang) && !env.grammar) {
19
- env.grammar = Prism.languages[lang] = Prism.languages['diff'];
18
+ env.grammar = Prism.languages[lang] = Prism.languages.diff;
20
19
  }
21
20
  });
22
21
  Prism.hooks.add('before-tokenize', function (env) {
22
+ if (!warningLogged && !Prism.languages.diff && !Prism.plugins.autoloader) {
23
+ warningLogged = true;
24
+ console.warn("Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js)." +
25
+ "Make sure the language definition is loaded or use Prism's Autoloader plugin.");
26
+ }
27
+
23
28
  var lang = env.language;
24
29
  if (LANGUAGE_REGEX.test(lang) && !Prism.languages[lang]) {
25
- Prism.languages[lang] = Prism.languages['diff'];
30
+ Prism.languages[lang] = Prism.languages.diff;
26
31
  }
27
32
  });
28
33
 
29
34
  Prism.hooks.add('wrap', function (env) {
30
- var diffLanguage, diffGrammar;
35
+ var diffLanguage; var diffGrammar;
31
36
 
32
37
  if (env.language !== 'diff') {
33
38
  var langMatch = LANGUAGE_REGEX.exec(env.language);
@@ -39,8 +44,10 @@
39
44
  diffGrammar = Prism.languages[diffLanguage];
40
45
  }
41
46
 
47
+ var PREFIXES = Prism.languages.diff && Prism.languages.diff.PREFIXES;
48
+
42
49
  // one of the diff tokens without any nested tokens
43
- if (env.type in PREFIXES) {
50
+ if (PREFIXES && env.type in PREFIXES) {
44
51
  /** @type {string} */
45
52
  var content = env.content.replace(HTML_TAG, ''); // remove all HTML tags
46
53
 
@@ -63,9 +70,9 @@
63
70
  var prefix = Prism.Token.stringify(prefixToken, env.language);
64
71
 
65
72
  // add prefix
66
- var lines = [], m;
73
+ var lines = []; var m;
67
74
  HTML_LINE.lastIndex = 0;
68
- while (m = HTML_LINE.exec(highlighted)) {
75
+ while ((m = HTML_LINE.exec(highlighted))) {
69
76
  lines.push(prefix + m[0]);
70
77
  }
71
78
  if (/(?:^|[\r\n]).$/.test(decoded)) {
@@ -1,5 +1,6 @@
1
1
  (function () {
2
- if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
2
+
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.querySelector) {
3
4
  return;
4
5
  }
5
6
 
@@ -16,4 +17,4 @@
16
17
  return a;
17
18
  });
18
19
 
19
- })();
20
+ }());
@@ -1,89 +1,195 @@
1
1
  (function () {
2
- if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
2
+
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined') {
3
4
  return;
4
5
  }
5
6
 
6
- /**
7
- * @param {Element} [container=document]
8
- */
9
- self.Prism.fileHighlight = function(container) {
10
- container = container || document;
11
-
12
- var Extensions = {
13
- 'js': 'javascript',
14
- 'py': 'python',
15
- 'rb': 'ruby',
16
- 'ps1': 'powershell',
17
- 'psm1': 'powershell',
18
- 'sh': 'bash',
19
- 'bat': 'batch',
20
- 'h': 'c',
21
- 'tex': 'latex'
22
- };
7
+ // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
8
+ if (!Element.prototype.matches) {
9
+ Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
10
+ }
23
11
 
24
- Array.prototype.slice.call(container.querySelectorAll('pre[data-src]')).forEach(function (pre) {
25
- // ignore if already loaded
26
- if (pre.hasAttribute('data-src-loaded')) {
27
- return;
28
- }
12
+ var LOADING_MESSAGE = 'Loading…';
13
+ var FAILURE_MESSAGE = function (status, message) {
14
+ return '✖ Error ' + status + ' while fetching file: ' + message;
15
+ };
16
+ var FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';
17
+
18
+ var EXTENSIONS = {
19
+ 'js': 'javascript',
20
+ 'py': 'python',
21
+ 'rb': 'ruby',
22
+ 'ps1': 'powershell',
23
+ 'psm1': 'powershell',
24
+ 'sh': 'bash',
25
+ 'bat': 'batch',
26
+ 'h': 'c',
27
+ 'tex': 'latex'
28
+ };
29
29
 
30
- // load current
31
- var src = pre.getAttribute('data-src');
30
+ var STATUS_ATTR = 'data-src-status';
31
+ var STATUS_LOADING = 'loading';
32
+ var STATUS_LOADED = 'loaded';
33
+ var STATUS_FAILED = 'failed';
32
34
 
33
- var language, parent = pre;
34
- var lang = /\blang(?:uage)?-([\w-]+)\b/i;
35
- while (parent && !lang.test(parent.className)) {
36
- parent = parent.parentNode;
37
- }
35
+ var SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '="' + STATUS_LOADED + '"])'
36
+ + ':not([' + STATUS_ATTR + '="' + STATUS_LOADING + '"])';
38
37
 
39
- if (parent) {
40
- language = (pre.className.match(lang) || [, ''])[1];
38
+ /**
39
+ * Loads the given file.
40
+ *
41
+ * @param {string} src The URL or path of the source file to load.
42
+ * @param {(result: string) => void} success
43
+ * @param {(reason: string) => void} error
44
+ */
45
+ function loadFile(src, success, error) {
46
+ var xhr = new XMLHttpRequest();
47
+ xhr.open('GET', src, true);
48
+ xhr.onreadystatechange = function () {
49
+ if (xhr.readyState == 4) {
50
+ if (xhr.status < 400 && xhr.responseText) {
51
+ success(xhr.responseText);
52
+ } else {
53
+ if (xhr.status >= 400) {
54
+ error(FAILURE_MESSAGE(xhr.status, xhr.statusText));
55
+ } else {
56
+ error(FAILURE_EMPTY_MESSAGE);
57
+ }
58
+ }
41
59
  }
60
+ };
61
+ xhr.send(null);
62
+ }
42
63
 
43
- if (!language) {
44
- var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
45
- language = Extensions[extension] || extension;
64
+ /**
65
+ * Parses the given range.
66
+ *
67
+ * This returns a range with inclusive ends.
68
+ *
69
+ * @param {string | null | undefined} range
70
+ * @returns {[number, number | undefined] | undefined}
71
+ */
72
+ function parseRange(range) {
73
+ var m = /^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(range || '');
74
+ if (m) {
75
+ var start = Number(m[1]);
76
+ var comma = m[2];
77
+ var end = m[3];
78
+
79
+ if (!comma) {
80
+ return [start, start];
46
81
  }
82
+ if (!end) {
83
+ return [start, undefined];
84
+ }
85
+ return [start, Number(end)];
86
+ }
87
+ return undefined;
88
+ }
47
89
 
48
- var code = document.createElement('code');
49
- code.className = 'language-' + language;
90
+ Prism.hooks.add('before-highlightall', function (env) {
91
+ env.selector += ', ' + SELECTOR;
92
+ });
50
93
 
51
- pre.textContent = '';
94
+ Prism.hooks.add('before-sanity-check', function (env) {
95
+ var pre = /** @type {HTMLPreElement} */ (env.element);
96
+ if (pre.matches(SELECTOR)) {
97
+ env.code = ''; // fast-path the whole thing and go to complete
52
98
 
53
- code.textContent = 'Loading…';
99
+ pre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading
54
100
 
55
- pre.appendChild(code);
101
+ // add code element with loading message
102
+ var code = pre.appendChild(document.createElement('CODE'));
103
+ code.textContent = LOADING_MESSAGE;
56
104
 
57
- var xhr = new XMLHttpRequest();
105
+ var src = pre.getAttribute('data-src');
58
106
 
59
- xhr.open('GET', src, true);
107
+ var language = env.language;
108
+ if (language === 'none') {
109
+ // the language might be 'none' because there is no language set;
110
+ // in this case, we want to use the extension as the language
111
+ var extension = (/\.(\w+)$/.exec(src) || [, 'none'])[1];
112
+ language = EXTENSIONS[extension] || extension;
113
+ }
60
114
 
61
- xhr.onreadystatechange = function () {
62
- if (xhr.readyState == 4) {
115
+ // set language classes
116
+ Prism.util.setLanguage(code, language);
117
+ Prism.util.setLanguage(pre, language);
63
118
 
64
- if (xhr.status < 400 && xhr.responseText) {
65
- code.textContent = xhr.responseText;
119
+ // preload the language
120
+ var autoloader = Prism.plugins.autoloader;
121
+ if (autoloader) {
122
+ autoloader.loadLanguages(language);
123
+ }
66
124
 
67
- Prism.highlightElement(code);
68
- // mark as loaded
69
- pre.setAttribute('data-src-loaded', '');
70
- }
71
- else if (xhr.status >= 400) {
72
- code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
73
- }
74
- else {
75
- code.textContent = '✖ Error: File does not exist or is empty';
125
+ // load file
126
+ loadFile(
127
+ src,
128
+ function (text) {
129
+ // mark as loaded
130
+ pre.setAttribute(STATUS_ATTR, STATUS_LOADED);
131
+
132
+ // handle data-range
133
+ var range = parseRange(pre.getAttribute('data-range'));
134
+ if (range) {
135
+ var lines = text.split(/\r\n?|\n/g);
136
+
137
+ // the range is one-based and inclusive on both ends
138
+ var start = range[0];
139
+ var end = range[1] == null ? lines.length : range[1];
140
+
141
+ if (start < 0) { start += lines.length; }
142
+ start = Math.max(0, Math.min(start - 1, lines.length));
143
+ if (end < 0) { end += lines.length; }
144
+ end = Math.max(0, Math.min(end, lines.length));
145
+
146
+ text = lines.slice(start, end).join('\n');
147
+
148
+ // add data-start for line numbers
149
+ if (!pre.hasAttribute('data-start')) {
150
+ pre.setAttribute('data-start', String(start + 1));
151
+ }
76
152
  }
153
+
154
+ // highlight code
155
+ code.textContent = text;
156
+ Prism.highlightElement(code);
157
+ },
158
+ function (error) {
159
+ // mark as failed
160
+ pre.setAttribute(STATUS_ATTR, STATUS_FAILED);
161
+
162
+ code.textContent = error;
77
163
  }
78
- };
164
+ );
165
+ }
166
+ });
79
167
 
80
- xhr.send(null);
81
- });
168
+ Prism.plugins.fileHighlight = {
169
+ /**
170
+ * Executes the File Highlight plugin for all matching `pre` elements under the given container.
171
+ *
172
+ * Note: Elements which are already loaded or currently loading will not be touched by this method.
173
+ *
174
+ * @param {ParentNode} [container=document]
175
+ */
176
+ highlight: function highlight(container) {
177
+ var elements = (container || document).querySelectorAll(SELECTOR);
178
+
179
+ for (var i = 0, element; (element = elements[i++]);) {
180
+ Prism.highlightElement(element);
181
+ }
182
+ }
82
183
  };
83
184
 
84
- document.addEventListener('DOMContentLoaded', function () {
85
- // execute inside handler, for dropping Event as argument
86
- self.Prism.fileHighlight();
87
- });
185
+ var logged = false;
186
+ /** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */
187
+ Prism.fileHighlight = function () {
188
+ if (!logged) {
189
+ console.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');
190
+ logged = true;
191
+ }
192
+ Prism.plugins.fileHighlight.highlight.apply(this, arguments);
193
+ };
88
194
 
89
- })();
195
+ }());
@@ -1,6 +1,6 @@
1
1
  (function () {
2
2
 
3
- if (typeof self !== 'undefined' && !self.Prism) {
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined') {
4
4
  return;
5
5
  }
6
6
 
@@ -94,10 +94,12 @@
94
94
 
95
95
  if (script) {
96
96
  var attr;
97
- if (attr = script.getAttribute('data-filter-selector')) {
97
+ attr = script.getAttribute('data-filter-selector');
98
+ if (attr) {
98
99
  config.addSelector(attr);
99
100
  }
100
- if (attr = script.getAttribute('data-reject-selector')) {
101
+ attr = script.getAttribute('data-reject-selector');
102
+ if (attr) {
101
103
  config.reject.addSelector(attr);
102
104
  }
103
105
  }
@@ -1,17 +1,14 @@
1
- (function(){
1
+ (function () {
2
2
 
3
- if (
4
- typeof self !== 'undefined' && !self.Prism ||
5
- typeof global !== 'undefined' && !global.Prism
6
- ) {
7
- return;
8
- }
9
-
10
- Prism.hooks.add('wrap', function(env) {
11
- if (env.type !== "keyword") {
3
+ if (typeof Prism === 'undefined') {
12
4
  return;
13
5
  }
14
- env.classes.push('keyword-' + env.content);
15
- });
16
6
 
17
- })();
7
+ Prism.hooks.add('wrap', function (env) {
8
+ if (env.type !== 'keyword') {
9
+ return;
10
+ }
11
+ env.classes.push('keyword-' + env.content);
12
+ });
13
+
14
+ }());
@@ -1,15 +1,14 @@
1
1
  (function () {
2
2
 
3
- if (typeof self === 'undefined' || typeof Prism === 'undefined' || typeof document === 'undefined') {
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined') {
4
4
  return;
5
5
  }
6
6
 
7
7
  // Copied from the markup language definition
8
8
  var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g;
9
9
 
10
- // the regex explained: In first lookahead we check whether the string is valid and then we use the
11
- // capturing groups to split the string into its components.
12
- var HEX_COLOR = /^#?(?=(?:[\da-f]{1,2}){3,4}$)([\da-f][\da-f]?)([\da-f][\da-f]?)([\da-f][\da-f]?)([\da-f][\da-f]?)?$/i;
10
+ // a regex to validate hexadecimal colors
11
+ var HEX_COLOR = /^#?((?:[\da-f]){3,4}|(?:[\da-f]{2}){3,4})$/i;
13
12
 
14
13
  /**
15
14
  * Parses the given hexadecimal representation and returns the parsed RGBA color.
@@ -17,6 +16,9 @@
17
16
  * If the format of the given string is invalid, `undefined` will be returned.
18
17
  * Valid formats are: `RGB`, `RGBA`, `RRGGBB`, and `RRGGBBAA`.
19
18
  *
19
+ * Hexadecimal colors are parsed because they are not fully supported by older browsers, so converting them to
20
+ * `rgba` functions improves browser compatibility.
21
+ *
20
22
  * @param {string} hex
21
23
  * @returns {string | undefined}
22
24
  */
@@ -25,15 +27,30 @@
25
27
  if (!match) {
26
28
  return undefined;
27
29
  }
30
+ hex = match[1]; // removes the leading "#"
28
31
 
29
- // This is used to scale normalize 4bit and 8bit values
30
- var scale = hex.length <= 4 ? 1 / 15 : 1 / 255;
32
+ // the width and number of channels
33
+ var channelWidth = hex.length >= 6 ? 2 : 1;
34
+ var channelCount = hex.length / channelWidth;
31
35
 
32
- var rgb = match.slice(1, 4).map(function (c) {
33
- return String(Math.round(parseInt(c, 16) * scale * 255));
34
- }).join(',');
36
+ // the scale used to normalize 4bit and 8bit values
37
+ var scale = channelWidth == 1 ? 1 / 15 : 1 / 255;
38
+
39
+ // normalized RGBA channels
40
+ var channels = [];
41
+ for (var i = 0; i < channelCount; i++) {
42
+ var int = parseInt(hex.substr(i * channelWidth, channelWidth), 16);
43
+ channels.push(int * scale);
44
+ }
45
+ if (channelCount == 3) {
46
+ channels.push(1); // add alpha of 100%
47
+ }
35
48
 
36
- var alpha = match[4] === undefined ? '1' : (parseInt(match[4], 16) * scale).toFixed(3);
49
+ // output
50
+ var rgb = channels.slice(0, 3).map(function (x) {
51
+ return String(Math.round(x * 255));
52
+ }).join(',');
53
+ var alpha = String(Number(channels[3].toFixed(3))); // easy way to round 3 decimal places
37
54
 
38
55
  return 'rgba(' + rgb + ',' + alpha + ')';
39
56
  }
@@ -65,7 +82,7 @@
65
82
 
66
83
 
67
84
  Prism.hooks.add('wrap', function (env) {
68
- if (env.type === 'color' || env.type === 'hexcode') {
85
+ if (env.type === 'color' || env.classes.indexOf('color') >= 0) {
69
86
  var content = env.content;
70
87
 
71
88
  // remove all HTML tags inside
@@ -80,7 +97,7 @@
80
97
  return;
81
98
  }
82
99
 
83
- var previewElement = '<span class="inline-color" style="background-color:' + color + ';"></span>';
100
+ var previewElement = '<span class="inline-color-wrapper"><span class="inline-color" style="background-color:' + color + ';"></span></span>';
84
101
  env.content = previewElement + content;
85
102
  }
86
103
  });