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,139 +1,239 @@
1
- (function() {
1
+ (function () {
2
2
 
3
- if (typeof self === 'undefined' || !self.Prism || !self.document) {
4
- return;
5
- }
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined') {
4
+ return;
5
+ }
6
6
 
7
- var clsReg = /(?:^|\s)command-line(?:\s|$)/;
7
+ var CLASS_PATTERN = /(?:^|\s)command-line(?:\s|$)/;
8
+ var PROMPT_CLASS = 'command-line-prompt';
8
9
 
9
- Prism.hooks.add('before-highlight', function (env) {
10
- var vars = env.vars = env.vars || {};
11
- var commandLine = vars['command-line'] = vars['command-line'] || {};
10
+ /** @type {(str: string, prefix: string) => boolean} */
11
+ var startsWith = ''.startsWith
12
+ ? function (s, p) { return s.startsWith(p); }
13
+ : function (s, p) { return s.indexOf(p) === 0; };
12
14
 
13
- if (commandLine.complete || !env.code) {
14
- commandLine.complete = true;
15
- return;
15
+ // Support for IE11 that has no endsWith()
16
+ /** @type {(str: string, suffix: string) => boolean} */
17
+ var endsWith = ''.endsWith
18
+ ? function (str, suffix) {
19
+ return str.endsWith(suffix);
20
+ }
21
+ : function (str, suffix) {
22
+ var len = str.length;
23
+ return str.substring(len - suffix.length, len) === suffix;
24
+ };
25
+
26
+ /**
27
+ * Returns whether the given hook environment has a command line info object.
28
+ *
29
+ * @param {any} env
30
+ * @returns {boolean}
31
+ */
32
+ function hasCommandLineInfo(env) {
33
+ var vars = env.vars = env.vars || {};
34
+ return 'command-line' in vars;
16
35
  }
17
-
18
- // Works only for <code> wrapped inside <pre> (not inline).
19
- var pre = env.element.parentNode;
20
- if (!pre || !/pre/i.test(pre.nodeName) || // Abort only if neither the <pre> nor the <code> have the class
21
- (!clsReg.test(pre.className) && !clsReg.test(env.element.className))) {
22
- commandLine.complete = true;
23
- return;
36
+ /**
37
+ * Returns the command line info object from the given hook environment.
38
+ *
39
+ * @param {any} env
40
+ * @returns {CommandLineInfo}
41
+ *
42
+ * @typedef CommandLineInfo
43
+ * @property {boolean} [complete]
44
+ * @property {number} [numberOfLines]
45
+ * @property {string[]} [outputLines]
46
+ */
47
+ function getCommandLineInfo(env) {
48
+ var vars = env.vars = env.vars || {};
49
+ return vars['command-line'] = vars['command-line'] || {};
24
50
  }
25
51
 
26
- if (env.element.querySelector('.command-line-prompt')) { // Abort if prompt already exists.
27
- commandLine.complete = true;
28
- return;
29
- }
30
52
 
31
- var codeLines = env.code.split('\n');
32
- commandLine.numberOfLines = codeLines.length;
33
- var outputLines = commandLine.outputLines = [];
34
-
35
- var outputSections = pre.getAttribute('data-output');
36
- var outputFilter = pre.getAttribute('data-filter-output');
37
- if (outputSections || outputSections === '') { // The user specified the output lines. -- cwells
38
- outputSections = outputSections.split(',');
39
- for (var i = 0; i < outputSections.length; i++) { // Parse the output sections into start/end ranges. -- cwells
40
- var range = outputSections[i].split('-');
41
- var outputStart = parseInt(range[0], 10);
42
- var outputEnd = (range.length === 2 ? parseInt(range[1], 10) : outputStart);
43
-
44
- if (!isNaN(outputStart) && !isNaN(outputEnd)) {
45
- if (outputStart < 1) {
46
- outputStart = 1;
47
- }
48
- if (outputEnd > codeLines.length) {
49
- outputEnd = codeLines.length;
53
+ Prism.hooks.add('before-highlight', function (env) {
54
+ var commandLine = getCommandLineInfo(env);
55
+
56
+ if (commandLine.complete || !env.code) {
57
+ commandLine.complete = true;
58
+ return;
59
+ }
60
+
61
+ // Works only for <code> wrapped inside <pre> (not inline).
62
+ var pre = env.element.parentElement;
63
+ if (!pre || !/pre/i.test(pre.nodeName) || // Abort only if neither the <pre> nor the <code> have the class
64
+ (!CLASS_PATTERN.test(pre.className) && !CLASS_PATTERN.test(env.element.className))) {
65
+ commandLine.complete = true;
66
+ return;
67
+ }
68
+
69
+ // The element might be highlighted multiple times, so we just remove the previous prompt
70
+ var existingPrompt = env.element.querySelector('.' + PROMPT_CLASS);
71
+ if (existingPrompt) {
72
+ existingPrompt.remove();
73
+ }
74
+
75
+ var codeLines = env.code.split('\n');
76
+
77
+ commandLine.numberOfLines = codeLines.length;
78
+ /** @type {string[]} */
79
+ var outputLines = commandLine.outputLines = [];
80
+
81
+ var outputSections = pre.getAttribute('data-output');
82
+ var outputFilter = pre.getAttribute('data-filter-output');
83
+ if (outputSections !== null) { // The user specified the output lines. -- cwells
84
+ outputSections.split(',').forEach(function (section) {
85
+ var range = section.split('-');
86
+ var outputStart = parseInt(range[0], 10);
87
+ var outputEnd = range.length === 2 ? parseInt(range[1], 10) : outputStart;
88
+
89
+ if (!isNaN(outputStart) && !isNaN(outputEnd)) {
90
+ if (outputStart < 1) {
91
+ outputStart = 1;
92
+ }
93
+ if (outputEnd > codeLines.length) {
94
+ outputEnd = codeLines.length;
95
+ }
96
+ // Convert start and end to 0-based to simplify the arrays. -- cwells
97
+ outputStart--;
98
+ outputEnd--;
99
+ // Save the output line in an array and clear it in the code so it's not highlighted. -- cwells
100
+ for (var j = outputStart; j <= outputEnd; j++) {
101
+ outputLines[j] = codeLines[j];
102
+ codeLines[j] = '';
103
+ }
50
104
  }
51
- // Convert start and end to 0-based to simplify the arrays. -- cwells
52
- outputStart--;
53
- outputEnd--;
54
- // Save the output line in an array and clear it in the code so it's not highlighted. -- cwells
55
- for (var j = outputStart; j <= outputEnd; j++) {
56
- outputLines[j] = codeLines[j];
57
- codeLines[j] = '';
105
+ });
106
+ } else if (outputFilter) { // Treat lines beginning with this string as output. -- cwells
107
+ for (var i = 0; i < codeLines.length; i++) {
108
+ if (startsWith(codeLines[i], outputFilter)) { // This line is output. -- cwells
109
+ outputLines[i] = codeLines[i].slice(outputFilter.length);
110
+ codeLines[i] = '';
58
111
  }
59
112
  }
60
113
  }
61
- } else if (outputFilter) { // Treat lines beginning with this string as output. -- cwells
62
- for (var i = 0; i < codeLines.length; i++) {
63
- if (codeLines[i].indexOf(outputFilter) === 0) { // This line is output. -- cwells
64
- outputLines[i] = codeLines[i].slice(outputFilter.length);
65
- codeLines[i] = '';
114
+
115
+ var continuationLineIndicies = commandLine.continuationLineIndicies = new Set();
116
+ var lineContinuationStr = pre.getAttribute('data-continuation-str');
117
+ var continuationFilter = pre.getAttribute('data-filter-continuation');
118
+
119
+ // Identify code lines where the command has continued onto subsequent
120
+ // lines and thus need a different prompt. Need to do this after the output
121
+ // lines have been removed to ensure we don't pick up a continuation string
122
+ // in an output line.
123
+ for (var j = 0; j < codeLines.length; j++) {
124
+ var line = codeLines[j];
125
+ if (!line) {
126
+ continue;
127
+ }
128
+
129
+ // Record the next line as a continuation if this one ends in a continuation str.
130
+ if (lineContinuationStr && endsWith(line, lineContinuationStr)) {
131
+ continuationLineIndicies.add(j + 1);
132
+ }
133
+ // Record this line as a continuation if marked with a continuation prefix
134
+ // (that we will remove).
135
+ if (j > 0 && continuationFilter && startsWith(line, continuationFilter)) {
136
+ codeLines[j] = line.slice(continuationFilter.length);
137
+ continuationLineIndicies.add(j);
66
138
  }
67
139
  }
68
- }
69
140
 
70
- env.code = codeLines.join('\n');
71
- });
141
+ env.code = codeLines.join('\n');
142
+ });
72
143
 
73
- Prism.hooks.add('before-insert', function (env) {
74
- var vars = env.vars = env.vars || {};
75
- var commandLine = vars['command-line'] = vars['command-line'] || {};
76
- if (commandLine.complete) {
77
- return;
78
- }
144
+ Prism.hooks.add('before-insert', function (env) {
145
+ var commandLine = getCommandLineInfo(env);
79
146
 
80
- // Reinsert the output lines into the highlighted code. -- cwells
81
- var codeLines = env.highlightedCode.split('\n');
82
- for (var i = 0, l = (commandLine.outputLines || []).length; i < l; i++) {
83
- if (commandLine.outputLines.hasOwnProperty(i)) {
84
- codeLines[i] = commandLine.outputLines[i];
147
+ if (commandLine.complete) {
148
+ return;
85
149
  }
86
- }
87
- env.highlightedCode = codeLines.join('\n');
88
- });
89
150
 
90
- Prism.hooks.add('complete', function (env) {
91
- var vars = env.vars = env.vars || {};
92
- var commandLine = vars['command-line'] = vars['command-line'] || {};
93
- if (commandLine.complete) {
94
- return;
95
- }
151
+ // Reinsert the output lines into the highlighted code. -- cwells
152
+ var codeLines = env.highlightedCode.split('\n');
153
+ var outputLines = commandLine.outputLines || [];
154
+ for (var i = 0, l = codeLines.length; i < l; i++) {
155
+ // Add spans to allow distinction of input/output text for styling
156
+ if (outputLines.hasOwnProperty(i)) {
157
+ // outputLines were removed from codeLines so missed out on escaping
158
+ // of markup so do it here.
159
+ codeLines[i] = '<span class="token output">'
160
+ + Prism.util.encode(outputLines[i]) + '</span>';
161
+ } else {
162
+ codeLines[i] = '<span class="token command">'
163
+ + codeLines[i] + '</span>';
164
+ }
165
+ }
166
+ env.highlightedCode = codeLines.join('\n');
167
+ });
96
168
 
97
- var pre = env.element.parentNode;
98
- if (clsReg.test(env.element.className)) { // Remove the class "command-line" from the <code>
99
- env.element.className = env.element.className.replace(clsReg, ' ');
100
- }
101
- if (!clsReg.test(pre.className)) { // Add the class "command-line" to the <pre>
102
- pre.className += ' command-line';
103
- }
169
+ Prism.hooks.add('complete', function (env) {
170
+ if (!hasCommandLineInfo(env)) {
171
+ // the previous hooks never ran
172
+ return;
173
+ }
104
174
 
105
- var getAttribute = function(key, defaultValue) {
106
- return (pre.getAttribute(key) || defaultValue).replace(/"/g, '&quot');
107
- };
108
-
109
- // Create the "rows" that will become the command-line prompts. -- cwells
110
- var promptLines = new Array((commandLine.numberOfLines || 0) + 1);
111
- var promptText = getAttribute('data-prompt', '');
112
- if (promptText !== '') {
113
- promptLines = promptLines.join('<span data-prompt="' + promptText + '"></span>');
114
- } else {
115
- var user = getAttribute('data-user', 'user');
116
- var host = getAttribute('data-host', 'localhost');
117
- promptLines = promptLines.join('<span data-user="' + user + '" data-host="' + host + '"></span>');
118
- }
175
+ var commandLine = getCommandLineInfo(env);
119
176
 
120
- // Create the wrapper element. -- cwells
121
- var prompt = document.createElement('span');
122
- prompt.className = 'command-line-prompt';
123
- prompt.innerHTML = promptLines;
177
+ if (commandLine.complete) {
178
+ return;
179
+ }
124
180
 
125
- // Remove the prompt from the output lines. -- cwells
126
- for (var i = 0, l = (commandLine.outputLines || []).length; i < l; i++) {
127
- if (commandLine.outputLines.hasOwnProperty(i)) {
128
- var node = prompt.children[i];
129
- node.removeAttribute('data-user');
130
- node.removeAttribute('data-host');
131
- node.removeAttribute('data-prompt');
181
+ var pre = env.element.parentElement;
182
+ if (CLASS_PATTERN.test(env.element.className)) { // Remove the class "command-line" from the <code>
183
+ env.element.className = env.element.className.replace(CLASS_PATTERN, ' ');
184
+ }
185
+ if (!CLASS_PATTERN.test(pre.className)) { // Add the class "command-line" to the <pre>
186
+ pre.className += ' command-line';
132
187
  }
133
- }
134
188
 
135
- env.element.insertBefore(prompt, env.element.firstChild);
136
- commandLine.complete = true;
137
- });
189
+ function getAttribute(key, defaultValue) {
190
+ return (pre.getAttribute(key) || defaultValue).replace(/"/g, '&quot');
191
+ }
192
+
193
+ // Create the "rows" that will become the command-line prompts. -- cwells
194
+ var promptLines = '';
195
+ var rowCount = commandLine.numberOfLines || 0;
196
+ var promptText = getAttribute('data-prompt', '');
197
+ var promptLine;
198
+ if (promptText !== '') {
199
+ promptLine = '<span data-prompt="' + promptText + '"></span>';
200
+ } else {
201
+ var user = getAttribute('data-user', 'user');
202
+ var host = getAttribute('data-host', 'localhost');
203
+ promptLine = '<span data-user="' + user + '" data-host="' + host + '"></span>';
204
+ }
205
+
206
+ var continuationLineIndicies = commandLine.continuationLineIndicies || new Set();
207
+ var continuationPromptText = getAttribute('data-continuation-prompt', '>');
208
+ var continuationPromptLine = '<span data-continuation-prompt="' + continuationPromptText + '"></span>';
209
+
210
+ // Assemble all the appropriate prompt/continuation lines
211
+ for (var j = 0; j < rowCount; j++) {
212
+ if (continuationLineIndicies.has(j)) {
213
+ promptLines += continuationPromptLine;
214
+ } else {
215
+ promptLines += promptLine;
216
+ }
217
+ }
218
+
219
+ // Create the wrapper element. -- cwells
220
+ var prompt = document.createElement('span');
221
+ prompt.className = PROMPT_CLASS;
222
+ prompt.innerHTML = promptLines;
223
+
224
+ // Remove the prompt from the output lines. -- cwells
225
+ var outputLines = commandLine.outputLines || [];
226
+ for (var i = 0, l = outputLines.length; i < l; i++) {
227
+ if (outputLines.hasOwnProperty(i)) {
228
+ var node = prompt.children[i];
229
+ node.removeAttribute('data-user');
230
+ node.removeAttribute('data-host');
231
+ node.removeAttribute('data-prompt');
232
+ }
233
+ }
234
+
235
+ env.element.insertBefore(prompt, env.element.firstChild);
236
+ commandLine.complete = true;
237
+ });
138
238
 
139
239
  }());
@@ -1,5 +1,6 @@
1
- (function(){
2
- if (typeof self === 'undefined' || !self.Prism || !self.document) {
1
+ (function () {
2
+
3
+ if (typeof Prism === 'undefined' || typeof document === 'undefined') {
3
4
  return;
4
5
  }
5
6
 
@@ -9,67 +10,151 @@
9
10
  return;
10
11
  }
11
12
 
12
- var ClipboardJS = window.ClipboardJS || undefined;
13
-
14
- if (!ClipboardJS && typeof require === 'function') {
15
- ClipboardJS = require('clipboard');
13
+ /**
14
+ * When the given elements is clicked by the user, the given text will be copied to clipboard.
15
+ *
16
+ * @param {HTMLElement} element
17
+ * @param {CopyInfo} copyInfo
18
+ *
19
+ * @typedef CopyInfo
20
+ * @property {() => string} getText
21
+ * @property {() => void} success
22
+ * @property {(reason: unknown) => void} error
23
+ */
24
+ function registerClipboard(element, copyInfo) {
25
+ element.addEventListener('click', function () {
26
+ copyTextToClipboard(copyInfo);
27
+ });
16
28
  }
17
29
 
18
- var callbacks = [];
30
+ // https://stackoverflow.com/a/30810322/7595472
31
+
32
+ /** @param {CopyInfo} copyInfo */
33
+ function fallbackCopyTextToClipboard(copyInfo) {
34
+ var textArea = document.createElement('textarea');
35
+ textArea.value = copyInfo.getText();
19
36
 
20
- if (!ClipboardJS) {
21
- var script = document.createElement('script');
22
- var head = document.querySelector('head');
37
+ // Avoid scrolling to bottom
38
+ textArea.style.top = '0';
39
+ textArea.style.left = '0';
40
+ textArea.style.position = 'fixed';
23
41
 
24
- script.onload = function() {
25
- ClipboardJS = window.ClipboardJS;
42
+ document.body.appendChild(textArea);
43
+ textArea.focus();
44
+ textArea.select();
26
45
 
27
- if (ClipboardJS) {
28
- while (callbacks.length) {
29
- callbacks.pop()();
46
+ try {
47
+ var successful = document.execCommand('copy');
48
+ setTimeout(function () {
49
+ if (successful) {
50
+ copyInfo.success();
51
+ } else {
52
+ copyInfo.error();
30
53
  }
31
- }
54
+ }, 1);
55
+ } catch (err) {
56
+ setTimeout(function () {
57
+ copyInfo.error(err);
58
+ }, 1);
59
+ }
60
+
61
+ document.body.removeChild(textArea);
62
+ }
63
+ /** @param {CopyInfo} copyInfo */
64
+ function copyTextToClipboard(copyInfo) {
65
+ if (navigator.clipboard) {
66
+ navigator.clipboard.writeText(copyInfo.getText()).then(copyInfo.success, function () {
67
+ // try the fallback in case `writeText` didn't work
68
+ fallbackCopyTextToClipboard(copyInfo);
69
+ });
70
+ } else {
71
+ fallbackCopyTextToClipboard(copyInfo);
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Selects the text content of the given element.
77
+ *
78
+ * @param {Element} element
79
+ */
80
+ function selectElementText(element) {
81
+ // https://stackoverflow.com/a/20079910/7595472
82
+ window.getSelection().selectAllChildren(element);
83
+ }
84
+
85
+ /**
86
+ * Traverses up the DOM tree to find data attributes that override the default plugin settings.
87
+ *
88
+ * @param {Element} startElement An element to start from.
89
+ * @returns {Settings} The plugin settings.
90
+ * @typedef {Record<"copy" | "copy-error" | "copy-success" | "copy-timeout", string | number>} Settings
91
+ */
92
+ function getSettings(startElement) {
93
+ /** @type {Settings} */
94
+ var settings = {
95
+ 'copy': 'Copy',
96
+ 'copy-error': 'Press Ctrl+C to copy',
97
+ 'copy-success': 'Copied!',
98
+ 'copy-timeout': 5000
32
99
  };
33
100
 
34
- script.src = 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js';
35
- head.appendChild(script);
101
+ var prefix = 'data-prismjs-';
102
+ for (var key in settings) {
103
+ var attr = prefix + key;
104
+ var element = startElement;
105
+ while (element && !element.hasAttribute(attr)) {
106
+ element = element.parentElement;
107
+ }
108
+ if (element) {
109
+ settings[key] = element.getAttribute(attr);
110
+ }
111
+ }
112
+ return settings;
36
113
  }
37
114
 
38
115
  Prism.plugins.toolbar.registerButton('copy-to-clipboard', function (env) {
39
- var linkCopy = document.createElement('button');
40
- linkCopy.textContent = 'Copy';
116
+ var element = env.element;
41
117
 
42
- if (!ClipboardJS) {
43
- callbacks.push(registerClipboard);
44
- } else {
45
- registerClipboard();
46
- }
118
+ var settings = getSettings(element);
47
119
 
48
- return linkCopy;
120
+ var linkCopy = document.createElement('button');
121
+ linkCopy.className = 'copy-to-clipboard-button';
122
+ linkCopy.setAttribute('type', 'button');
123
+ var linkSpan = document.createElement('span');
124
+ linkCopy.appendChild(linkSpan);
49
125
 
50
- function registerClipboard() {
51
- var clip = new ClipboardJS(linkCopy, {
52
- 'text': function () {
53
- return env.code;
54
- }
55
- });
126
+ setState('copy');
56
127
 
57
- clip.on('success', function() {
58
- linkCopy.textContent = 'Copied!';
128
+ registerClipboard(linkCopy, {
129
+ getText: function () {
130
+ return element.textContent;
131
+ },
132
+ success: function () {
133
+ setState('copy-success');
59
134
 
60
135
  resetText();
61
- });
62
- clip.on('error', function () {
63
- linkCopy.textContent = 'Press Ctrl+C to copy';
136
+ },
137
+ error: function () {
138
+ setState('copy-error');
139
+
140
+ setTimeout(function () {
141
+ selectElementText(element);
142
+ }, 1);
64
143
 
65
144
  resetText();
66
- });
67
- }
145
+ }
146
+ });
147
+
148
+ return linkCopy;
68
149
 
69
150
  function resetText() {
70
- setTimeout(function () {
71
- linkCopy.textContent = 'Copy';
72
- }, 5000);
151
+ setTimeout(function () { setState('copy'); }, settings['copy-timeout']);
152
+ }
153
+
154
+ /** @param {"copy" | "copy-error" | "copy-success"} state */
155
+ function setState(state) {
156
+ linkSpan.textContent = settings[state];
157
+ linkCopy.setAttribute('data-copy-state', state);
73
158
  }
74
159
  });
75
- })();
160
+ }());
@@ -1,9 +1,6 @@
1
1
  (function () {
2
2
 
3
- if (
4
- (typeof self === 'undefined' || !self.Prism) &&
5
- (typeof global === 'undefined' || !global.Prism)
6
- ) {
3
+ if (typeof Prism === 'undefined') {
7
4
  return;
8
5
  }
9
6
 
@@ -33,6 +30,15 @@
33
30
  var prefixString = '';
34
31
 
35
32
 
33
+ /**
34
+ * @param {string} className
35
+ * @param {string} language
36
+ */
37
+ function apply(className, language) {
38
+ return prefixString + (mapper ? mapper(className, language) : className);
39
+ }
40
+
41
+
36
42
  Prism.plugins.customClass = {
37
43
  /**
38
44
  * Sets the function which can be used to add custom aliases to any token.
@@ -65,8 +71,17 @@
65
71
  */
66
72
  prefix: function prefix(string) {
67
73
  prefixString = string || '';
68
- }
69
- }
74
+ },
75
+ /**
76
+ * Applies the current mapping and prefix to the given class name.
77
+ *
78
+ * @param {string} className A single class name.
79
+ * @param {string} language The language of the code that contains this class name.
80
+ *
81
+ * If the language is unknown, pass `"none"`.
82
+ */
83
+ apply: apply
84
+ };
70
85
 
71
86
  Prism.hooks.add('wrap', function (env) {
72
87
  if (adder) {
@@ -88,8 +103,8 @@
88
103
  }
89
104
 
90
105
  env.classes = env.classes.map(function (c) {
91
- return prefixString + (mapper ? mapper(c, env.language) : c);
106
+ return apply(c, env.language);
92
107
  });
93
108
  });
94
109
 
95
- })();
110
+ }());
@@ -1,9 +1,6 @@
1
1
  (function () {
2
2
 
3
- if (
4
- typeof self !== 'undefined' && !self.Prism ||
5
- typeof global !== 'undefined' && !global.Prism
6
- ) {
3
+ if (typeof Prism === 'undefined') {
7
4
  return;
8
5
  }
9
6
 
@@ -60,8 +57,7 @@
60
57
  Prism.languages.insertBefore('inside', def.inside['url-link'] ? 'url-link' : 'punctuation', {
61
58
  'data-uri': dataURI
62
59
  }, def);
63
- }
64
- else {
60
+ } else {
65
61
  if (def.inside['url-link']) {
66
62
  Prism.languages.insertBefore('inside', 'url-link', {
67
63
  'data-uri': dataURI