prism-rails 1.6.0.3 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (341) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +88 -44
  4. data/lib/prism-rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/languages/index.js +82 -0
  6. data/vendor/assets/javascripts/{prism → languages}/prism-abap.js +2 -2
  7. data/vendor/assets/javascripts/languages/prism-abnf.js +54 -0
  8. data/vendor/assets/javascripts/{prism → languages}/prism-actionscript.js +3 -5
  9. data/vendor/assets/javascripts/{prism → languages}/prism-ada.js +2 -2
  10. data/vendor/assets/javascripts/languages/prism-antlr4.js +65 -0
  11. data/vendor/assets/javascripts/languages/prism-apacheconf.js +47 -0
  12. data/vendor/assets/javascripts/{prism → languages}/prism-apl.js +8 -5
  13. data/vendor/assets/javascripts/{prism → languages}/prism-applescript.js +3 -3
  14. data/vendor/assets/javascripts/languages/prism-aql.js +41 -0
  15. data/vendor/assets/javascripts/languages/prism-arduino.js +5 -0
  16. data/vendor/assets/javascripts/languages/prism-arff.js +10 -0
  17. data/vendor/assets/javascripts/{prism → languages}/prism-asciidoc.js +23 -60
  18. data/vendor/assets/javascripts/languages/prism-asm6502.js +28 -0
  19. data/vendor/assets/javascripts/{prism → languages}/prism-aspnet.js +22 -10
  20. data/vendor/assets/javascripts/languages/prism-autohotkey.js +27 -0
  21. data/vendor/assets/javascripts/{prism → languages}/prism-autoit.js +1 -0
  22. data/vendor/assets/javascripts/languages/prism-bash.js +197 -0
  23. data/vendor/assets/javascripts/{prism → languages}/prism-basic.js +5 -2
  24. data/vendor/assets/javascripts/{prism → languages}/prism-batch.js +0 -0
  25. data/vendor/assets/javascripts/languages/prism-bbcode.js +27 -0
  26. data/vendor/assets/javascripts/{prism → languages}/prism-bison.js +0 -0
  27. data/vendor/assets/javascripts/languages/prism-bnf.js +21 -0
  28. data/vendor/assets/javascripts/{prism → languages}/prism-brainfuck.js +0 -0
  29. data/vendor/assets/javascripts/languages/prism-brightscript.js +44 -0
  30. data/vendor/assets/javascripts/languages/prism-bro.js +48 -0
  31. data/vendor/assets/javascripts/languages/prism-c.js +41 -0
  32. data/vendor/assets/javascripts/languages/prism-cil.js +27 -0
  33. data/vendor/assets/javascripts/languages/prism-clike.js +30 -0
  34. data/vendor/assets/javascripts/languages/prism-clojure.js +16 -0
  35. data/vendor/assets/javascripts/languages/prism-cmake.js +29 -0
  36. data/vendor/assets/javascripts/{prism → languages}/prism-coffeescript.js +6 -5
  37. data/vendor/assets/javascripts/languages/prism-concurnas.js +48 -0
  38. data/vendor/assets/javascripts/languages/prism-core.js +627 -0
  39. data/vendor/assets/javascripts/languages/prism-cpp.js +21 -0
  40. data/vendor/assets/javascripts/{prism → languages}/prism-crystal.js +5 -7
  41. data/vendor/assets/javascripts/languages/prism-csharp.js +81 -0
  42. data/vendor/assets/javascripts/languages/prism-csp.js +25 -0
  43. data/vendor/assets/javascripts/languages/prism-css-extras.js +109 -0
  44. data/vendor/assets/javascripts/languages/prism-css.js +62 -0
  45. data/vendor/assets/javascripts/{prism → languages}/prism-d.js +49 -34
  46. data/vendor/assets/javascripts/{prism → languages}/prism-dart.js +8 -2
  47. data/vendor/assets/javascripts/languages/prism-diff.js +54 -0
  48. data/vendor/assets/javascripts/languages/prism-django.js +60 -0
  49. data/vendor/assets/javascripts/languages/prism-dns-zone-file.js +33 -0
  50. data/vendor/assets/javascripts/languages/prism-docker.js +11 -0
  51. data/vendor/assets/javascripts/languages/prism-ebnf.js +22 -0
  52. data/vendor/assets/javascripts/{prism → languages}/prism-eiffel.js +20 -7
  53. data/vendor/assets/javascripts/languages/prism-ejs.js +24 -0
  54. data/vendor/assets/javascripts/{prism → languages}/prism-elixir.js +14 -15
  55. data/vendor/assets/javascripts/languages/prism-elm.js +44 -0
  56. data/vendor/assets/javascripts/languages/prism-erb.js +20 -0
  57. data/vendor/assets/javascripts/{prism → languages}/prism-erlang.js +7 -4
  58. data/vendor/assets/javascripts/languages/prism-etlua.js +23 -0
  59. data/vendor/assets/javascripts/languages/prism-factor.js +403 -0
  60. data/vendor/assets/javascripts/languages/prism-firestore-security-rules.js +35 -0
  61. data/vendor/assets/javascripts/languages/prism-flow.js +35 -0
  62. data/vendor/assets/javascripts/{prism → languages}/prism-fortran.js +5 -2
  63. data/vendor/assets/javascripts/languages/prism-fsharp.js +67 -0
  64. data/vendor/assets/javascripts/languages/prism-ftl.js +97 -0
  65. data/vendor/assets/javascripts/languages/prism-gcode.js +15 -0
  66. data/vendor/assets/javascripts/languages/prism-gdscript.js +27 -0
  67. data/vendor/assets/javascripts/languages/prism-gedcom.js +28 -0
  68. data/vendor/assets/javascripts/languages/prism-gherkin.js +85 -0
  69. data/vendor/assets/javascripts/{prism → languages}/prism-git.js +2 -2
  70. data/vendor/assets/javascripts/{prism → languages}/prism-glsl.js +3 -3
  71. data/vendor/assets/javascripts/languages/prism-gml.js +7 -0
  72. data/vendor/assets/javascripts/languages/prism-go.js +12 -0
  73. data/vendor/assets/javascripts/languages/prism-graphql.js +31 -0
  74. data/vendor/assets/javascripts/{prism → languages}/prism-groovy.js +12 -10
  75. data/vendor/assets/javascripts/{prism → languages}/prism-haml.js +14 -26
  76. data/vendor/assets/javascripts/languages/prism-handlebars.js +37 -0
  77. data/vendor/assets/javascripts/languages/prism-haskell.js +38 -0
  78. data/vendor/assets/javascripts/{prism → languages}/prism-haxe.js +4 -2
  79. data/vendor/assets/javascripts/languages/prism-hcl.js +65 -0
  80. data/vendor/assets/javascripts/languages/prism-hpkp.js +20 -0
  81. data/vendor/assets/javascripts/languages/prism-hsts.js +20 -0
  82. data/vendor/assets/javascripts/languages/prism-http.js +77 -0
  83. data/vendor/assets/javascripts/languages/prism-ichigojam.js +15 -0
  84. data/vendor/assets/javascripts/{prism → languages}/prism-icon.js +4 -1
  85. data/vendor/assets/javascripts/{prism → languages}/prism-inform7.js +6 -3
  86. data/vendor/assets/javascripts/{prism → languages}/prism-ini.js +2 -2
  87. data/vendor/assets/javascripts/languages/prism-io.js +31 -0
  88. data/vendor/assets/javascripts/{prism → languages}/prism-j.js +5 -2
  89. data/vendor/assets/javascripts/{prism → languages}/prism-jade.js +0 -0
  90. data/vendor/assets/javascripts/languages/prism-java.js +63 -0
  91. data/vendor/assets/javascripts/languages/prism-javadoc.js +54 -0
  92. data/vendor/assets/javascripts/languages/prism-javadoclike.js +87 -0
  93. data/vendor/assets/javascripts/languages/prism-javascript.js +91 -0
  94. data/vendor/assets/javascripts/languages/prism-javastacktrace.js +93 -0
  95. data/vendor/assets/javascripts/{prism → languages}/prism-jolie.js +9 -10
  96. data/vendor/assets/javascripts/languages/prism-jq.js +67 -0
  97. data/vendor/assets/javascripts/languages/prism-js-extras.js +104 -0
  98. data/vendor/assets/javascripts/languages/prism-js-templates.js +346 -0
  99. data/vendor/assets/javascripts/languages/prism-jsdoc.js +73 -0
  100. data/vendor/assets/javascripts/languages/prism-json.js +19 -0
  101. data/vendor/assets/javascripts/languages/prism-json5.js +23 -0
  102. data/vendor/assets/javascripts/languages/prism-jsonp.js +7 -0
  103. data/vendor/assets/javascripts/languages/prism-jsx.js +126 -0
  104. data/vendor/assets/javascripts/languages/prism-julia.js +13 -0
  105. data/vendor/assets/javascripts/languages/prism-keyman.js +14 -0
  106. data/vendor/assets/javascripts/{prism → languages}/prism-kotlin.js +6 -6
  107. data/vendor/assets/javascripts/{prism → languages}/prism-latex.js +16 -13
  108. data/vendor/assets/javascripts/languages/prism-latte.js +69 -0
  109. data/vendor/assets/javascripts/{prism → languages}/prism-less.js +3 -9
  110. data/vendor/assets/javascripts/languages/prism-lilypond.js +69 -0
  111. data/vendor/assets/javascripts/languages/prism-liquid.js +12 -0
  112. data/vendor/assets/javascripts/languages/prism-lisp.js +197 -0
  113. data/vendor/assets/javascripts/{prism → languages}/prism-livescript.js +19 -18
  114. data/vendor/assets/javascripts/{prism → languages}/prism-lolcode.js +3 -2
  115. data/vendor/assets/javascripts/{prism → languages}/prism-lua.js +0 -0
  116. data/vendor/assets/javascripts/{prism → languages}/prism-makefile.js +5 -2
  117. data/vendor/assets/javascripts/languages/prism-markdown.js +344 -0
  118. data/vendor/assets/javascripts/languages/prism-markup-templating.js +123 -0
  119. data/vendor/assets/javascripts/languages/prism-markup.js +103 -0
  120. data/vendor/assets/javascripts/{prism → languages}/prism-matlab.js +5 -3
  121. data/vendor/assets/javascripts/{prism → languages}/prism-mel.js +7 -3
  122. data/vendor/assets/javascripts/{prism → languages}/prism-mizar.js +0 -0
  123. data/vendor/assets/javascripts/{prism → languages}/prism-monkey.js +9 -3
  124. data/vendor/assets/javascripts/languages/prism-moonscript.js +57 -0
  125. data/vendor/assets/javascripts/languages/prism-n1ql.js +18 -0
  126. data/vendor/assets/javascripts/languages/prism-n4js.js +14 -0
  127. data/vendor/assets/javascripts/languages/prism-nand2tetris-hdl.js +9 -0
  128. data/vendor/assets/javascripts/languages/prism-nasm.js +24 -0
  129. data/vendor/assets/javascripts/languages/prism-neon.js +41 -0
  130. data/vendor/assets/javascripts/languages/prism-nginx.js +11 -0
  131. data/vendor/assets/javascripts/{prism → languages}/prism-nim.js +4 -1
  132. data/vendor/assets/javascripts/{prism → languages}/prism-nix.js +2 -1
  133. data/vendor/assets/javascripts/languages/prism-nsis.js +29 -0
  134. data/vendor/assets/javascripts/languages/prism-objectivec.js +7 -0
  135. data/vendor/assets/javascripts/languages/prism-ocaml.js +41 -0
  136. data/vendor/assets/javascripts/languages/prism-opencl.js +54 -0
  137. data/vendor/assets/javascripts/{prism → languages}/prism-oz.js +6 -2
  138. data/vendor/assets/javascripts/{prism → languages}/prism-parigp.js +4 -1
  139. data/vendor/assets/javascripts/languages/prism-parser.js +73 -0
  140. data/vendor/assets/javascripts/{prism → languages}/prism-pascal.js +9 -4
  141. data/vendor/assets/javascripts/languages/prism-pascaligo.js +62 -0
  142. data/vendor/assets/javascripts/languages/prism-pcaxis.js +53 -0
  143. data/vendor/assets/javascripts/languages/prism-perl.js +191 -0
  144. data/vendor/assets/javascripts/{prism → languages}/prism-php-extras.js +3 -3
  145. data/vendor/assets/javascripts/languages/prism-php.js +130 -0
  146. data/vendor/assets/javascripts/languages/prism-phpdoc.js +27 -0
  147. data/vendor/assets/javascripts/languages/prism-plsql.js +26 -0
  148. data/vendor/assets/javascripts/languages/prism-powershell.js +60 -0
  149. data/vendor/assets/javascripts/{prism → languages}/prism-processing.js +2 -2
  150. data/vendor/assets/javascripts/{prism → languages}/prism-prolog.js +4 -1
  151. data/vendor/assets/javascripts/{prism → languages}/prism-properties.js +2 -2
  152. data/vendor/assets/javascripts/languages/prism-protobuf.js +36 -0
  153. data/vendor/assets/javascripts/languages/prism-pug.js +181 -0
  154. data/vendor/assets/javascripts/{prism → languages}/prism-puppet.js +7 -2
  155. data/vendor/assets/javascripts/{prism → languages}/prism-pure.js +19 -17
  156. data/vendor/assets/javascripts/languages/prism-python.js +64 -0
  157. data/vendor/assets/javascripts/{prism → languages}/prism-q.js +13 -6
  158. data/vendor/assets/javascripts/languages/prism-qml.js +58 -0
  159. data/vendor/assets/javascripts/{prism → languages}/prism-qore.js +7 -4
  160. data/vendor/assets/javascripts/{prism → languages}/prism-r.js +5 -2
  161. data/vendor/assets/javascripts/{prism → languages}/prism-reason.js +4 -8
  162. data/vendor/assets/javascripts/languages/prism-regex.js +97 -0
  163. data/vendor/assets/javascripts/languages/prism-renpy.js +29 -0
  164. data/vendor/assets/javascripts/{prism → languages}/prism-rest.js +4 -4
  165. data/vendor/assets/javascripts/{prism → languages}/prism-rip.js +7 -3
  166. data/vendor/assets/javascripts/{prism → languages}/prism-roboconf.js +0 -0
  167. data/vendor/assets/javascripts/languages/prism-robotframework.js +104 -0
  168. data/vendor/assets/javascripts/{prism → languages}/prism-ruby.js +49 -15
  169. data/vendor/assets/javascripts/languages/prism-rust.js +68 -0
  170. data/vendor/assets/javascripts/languages/prism-sas.js +302 -0
  171. data/vendor/assets/javascripts/{prism → languages}/prism-sass.js +1 -2
  172. data/vendor/assets/javascripts/{prism → languages}/prism-scala.js +10 -11
  173. data/vendor/assets/javascripts/languages/prism-scheme.js +33 -0
  174. data/vendor/assets/javascripts/{prism → languages}/prism-scss.js +18 -16
  175. data/vendor/assets/javascripts/languages/prism-shell-session.js +54 -0
  176. data/vendor/assets/javascripts/{prism → languages}/prism-smalltalk.js +9 -9
  177. data/vendor/assets/javascripts/languages/prism-smarty.js +87 -0
  178. data/vendor/assets/javascripts/languages/prism-solidity.js +20 -0
  179. data/vendor/assets/javascripts/languages/prism-solution-file.js +51 -0
  180. data/vendor/assets/javascripts/languages/prism-soy.js +96 -0
  181. data/vendor/assets/javascripts/languages/prism-sparql.js +18 -0
  182. data/vendor/assets/javascripts/languages/prism-splunk-spl.js +24 -0
  183. data/vendor/assets/javascripts/languages/prism-sqf.js +34 -0
  184. data/vendor/assets/javascripts/languages/prism-sql.js +24 -0
  185. data/vendor/assets/javascripts/{prism → languages}/prism-stylus.js +16 -7
  186. data/vendor/assets/javascripts/languages/prism-swift.js +25 -0
  187. data/vendor/assets/javascripts/languages/prism-t4-cs.js +1 -0
  188. data/vendor/assets/javascripts/languages/prism-t4-templating.js +49 -0
  189. data/vendor/assets/javascripts/languages/prism-t4-vb.js +1 -0
  190. data/vendor/assets/javascripts/languages/prism-tap.js +20 -0
  191. data/vendor/assets/javascripts/languages/prism-tcl.js +46 -0
  192. data/vendor/assets/javascripts/{prism → languages}/prism-textile.js +35 -32
  193. data/vendor/assets/javascripts/languages/prism-toml.js +43 -0
  194. data/vendor/assets/javascripts/languages/prism-tsx.js +2 -0
  195. data/vendor/assets/javascripts/languages/prism-tt2.js +53 -0
  196. data/vendor/assets/javascripts/languages/prism-turtle.js +54 -0
  197. data/vendor/assets/javascripts/{prism → languages}/prism-twig.js +8 -8
  198. data/vendor/assets/javascripts/languages/prism-typescript.js +7 -0
  199. data/vendor/assets/javascripts/languages/prism-vala.js +74 -0
  200. data/vendor/assets/javascripts/languages/prism-vbnet.js +15 -0
  201. data/vendor/assets/javascripts/languages/prism-velocity.js +72 -0
  202. data/vendor/assets/javascripts/languages/prism-verilog.js +20 -0
  203. data/vendor/assets/javascripts/{prism → languages}/prism-vhdl.js +2 -2
  204. data/vendor/assets/javascripts/{prism → languages}/prism-vim.js +1 -1
  205. data/vendor/assets/javascripts/languages/prism-visual-basic.js +34 -0
  206. data/vendor/assets/javascripts/languages/prism-wasm.js +31 -0
  207. data/vendor/assets/javascripts/{prism → languages}/prism-wiki.js +7 -6
  208. data/vendor/assets/javascripts/languages/prism-xeora.js +114 -0
  209. data/vendor/assets/javascripts/{prism → languages}/prism-xojo.js +1 -1
  210. data/vendor/assets/javascripts/languages/prism-xquery.js +162 -0
  211. data/vendor/assets/javascripts/languages/prism-yaml.js +76 -0
  212. data/vendor/assets/javascripts/languages/prism-zig.js +97 -0
  213. data/vendor/assets/javascripts/prism-plugin/prism-autolinker.js +13 -8
  214. data/vendor/assets/javascripts/prism-plugin/prism-autoloader.js +306 -95
  215. data/vendor/assets/javascripts/prism-plugin/prism-command-line.js +96 -38
  216. data/vendor/assets/javascripts/prism-plugin/prism-copy-to-clipboard.js +10 -10
  217. data/vendor/assets/javascripts/prism-plugin/prism-custom-class.js +89 -23
  218. data/vendor/assets/javascripts/prism-plugin/prism-data-uri-highlight.js +2 -2
  219. data/vendor/assets/javascripts/prism-plugin/prism-diff-highlight.js +83 -0
  220. data/vendor/assets/javascripts/prism-plugin/prism-download-button.js +19 -0
  221. data/vendor/assets/javascripts/prism-plugin/prism-file-highlight.js +53 -41
  222. data/vendor/assets/javascripts/prism-plugin/prism-filter-highlight-all.js +125 -0
  223. data/vendor/assets/javascripts/prism-plugin/prism-inline-color.js +88 -0
  224. data/vendor/assets/javascripts/prism-plugin/prism-jsonp-highlight.js +124 -69
  225. data/vendor/assets/javascripts/prism-plugin/prism-keep-markup.js +4 -2
  226. data/vendor/assets/javascripts/prism-plugin/prism-line-highlight.js +195 -115
  227. data/vendor/assets/javascripts/prism-plugin/prism-line-numbers.js +154 -43
  228. data/vendor/assets/javascripts/prism-plugin/prism-match-braces.js +184 -0
  229. data/vendor/assets/javascripts/prism-plugin/prism-normalize-whitespace.js +29 -11
  230. data/vendor/assets/javascripts/prism-plugin/prism-previewers.js +703 -0
  231. data/vendor/assets/javascripts/prism-plugin/prism-remove-initial-line-feed.js +2 -2
  232. data/vendor/assets/javascripts/prism-plugin/prism-show-invisibles.js +83 -18
  233. data/vendor/assets/javascripts/prism-plugin/prism-show-language.js +190 -19
  234. data/vendor/assets/javascripts/prism-plugin/prism-toolbar.js +53 -8
  235. data/vendor/assets/javascripts/prism-plugin/prism-unescaped-markup.js +11 -7
  236. data/vendor/assets/javascripts/prism-plugin/prism-wpd.js +12 -12
  237. data/vendor/assets/javascripts/prism.js +210 -127
  238. data/vendor/assets/stylesheets/prism-plugin/prism-diff-highlight.css +13 -0
  239. data/vendor/assets/stylesheets/prism-plugin/prism-inline-color.css +9 -0
  240. data/vendor/assets/stylesheets/prism-plugin/prism-line-highlight.css +5 -0
  241. data/vendor/assets/stylesheets/prism-plugin/prism-line-numbers.css +4 -3
  242. data/vendor/assets/stylesheets/prism-plugin/prism-match-braces.css +29 -0
  243. data/vendor/assets/stylesheets/prism-plugin/prism-previewers.css +242 -0
  244. data/vendor/assets/stylesheets/prism-plugin/prism-show-invisibles.css +7 -6
  245. data/vendor/assets/stylesheets/prism-plugin/prism-toolbar.css +21 -15
  246. data/vendor/assets/stylesheets/prism-plugin/prism-unescaped-markup.css +4 -4
  247. data/vendor/assets/stylesheets/prism-theme/prism-a11y-dark.css +161 -0
  248. data/vendor/assets/stylesheets/{prism-atom-dark.css → prism-theme/prism-atom-dark.css} +10 -13
  249. data/vendor/assets/stylesheets/prism-theme/prism-autolinker.css +3 -0
  250. data/vendor/assets/stylesheets/{prism-base16-ateliersulphurpool.light.css → prism-theme/prism-base16-ateliersulphurpool.light.css} +57 -53
  251. data/vendor/assets/stylesheets/{prism-cb.css → prism-theme/prism-cb.css} +27 -27
  252. data/vendor/assets/stylesheets/prism-theme/prism-command-line.css +33 -0
  253. data/vendor/assets/stylesheets/{prism-coy.css → prism-theme/prism-coy.css} +14 -9
  254. data/vendor/assets/stylesheets/prism-theme/prism-darcula.css +159 -0
  255. data/vendor/assets/stylesheets/{prism-dark.css → prism-theme/prism-dark.css} +2 -1
  256. data/vendor/assets/stylesheets/prism-theme/prism-dracula.css +122 -0
  257. data/vendor/assets/stylesheets/{prism-duotone-dark.css → prism-theme/prism-duotone-dark.css} +55 -51
  258. data/vendor/assets/stylesheets/{prism-duotone-earth.css → prism-theme/prism-duotone-earth.css} +55 -51
  259. data/vendor/assets/stylesheets/{prism-duotone-forest.css → prism-theme/prism-duotone-forest.css} +55 -51
  260. data/vendor/assets/stylesheets/{prism-duotone-light.css → prism-theme/prism-duotone-light.css} +55 -51
  261. data/vendor/assets/stylesheets/{prism-duotone-sea.css → prism-theme/prism-duotone-sea.css} +55 -51
  262. data/vendor/assets/stylesheets/{prism-duotone-space.css → prism-theme/prism-duotone-space.css} +55 -51
  263. data/vendor/assets/stylesheets/{prism-funky.css → prism-theme/prism-funky.css} +16 -2
  264. data/vendor/assets/stylesheets/{prism-ghcolors.css → prism-theme/prism-ghcolors.css} +47 -44
  265. data/vendor/assets/stylesheets/prism-theme/prism-hopscotch.css +132 -0
  266. data/vendor/assets/stylesheets/prism-theme/prism-line-highlight.css +49 -0
  267. data/vendor/assets/stylesheets/prism-theme/prism-line-numbers.css +41 -0
  268. data/vendor/assets/stylesheets/prism-theme/prism-material-dark.css +205 -0
  269. data/vendor/assets/stylesheets/prism-theme/prism-material-light.css +207 -0
  270. data/vendor/assets/stylesheets/prism-theme/prism-material-oceanic.css +210 -0
  271. data/vendor/assets/stylesheets/prism-theme/prism-nord.css +124 -0
  272. data/vendor/assets/stylesheets/{prism-okaidia.css → prism-theme/prism-okaidia.css} +4 -2
  273. data/vendor/assets/stylesheets/prism-theme/prism-pojoaque.css +151 -0
  274. data/vendor/assets/stylesheets/prism-theme/prism-previewers.css +242 -0
  275. data/vendor/assets/stylesheets/prism-theme/prism-shades-of-purple.css +200 -0
  276. data/vendor/assets/stylesheets/prism-theme/prism-show-invisibles.css +34 -0
  277. data/vendor/assets/stylesheets/{prism-show-language.css → prism-theme/prism-show-language.css} +0 -0
  278. data/vendor/assets/stylesheets/{prism-solarizedlight.css → prism-theme/prism-solarizedlight.css} +5 -3
  279. data/vendor/assets/stylesheets/prism-theme/prism-synthwave84.css +140 -0
  280. data/vendor/assets/stylesheets/{prism-tomorrow.css → prism-theme/prism-tomorrow.css} +1 -0
  281. data/vendor/assets/stylesheets/{prism-toolbar.css → prism-theme/prism-toolbar.css} +15 -15
  282. data/vendor/assets/stylesheets/{prism-twilight.css → prism-theme/prism-twilight.css} +2 -1
  283. data/vendor/assets/stylesheets/prism-theme/prism-unescaped-markup.css +10 -0
  284. data/vendor/assets/stylesheets/{prism-vs.css → prism-theme/prism-vs.css} +62 -55
  285. data/vendor/assets/stylesheets/prism-theme/prism-vsc-dark-plus.css +216 -0
  286. data/vendor/assets/stylesheets/prism-theme/prism-wpd.css +11 -0
  287. data/vendor/assets/stylesheets/prism-theme/prism-xonokai.css +189 -0
  288. data/vendor/assets/stylesheets/prism.css +5 -3
  289. metadata +262 -148
  290. data/vendor/assets/javascripts/prism/prism-apacheconf.js +0 -47
  291. data/vendor/assets/javascripts/prism/prism-autohotkey.js +0 -27
  292. data/vendor/assets/javascripts/prism/prism-bash.js +0 -80
  293. data/vendor/assets/javascripts/prism/prism-bro.js +0 -50
  294. data/vendor/assets/javascripts/prism/prism-c.js +0 -33
  295. data/vendor/assets/javascripts/prism/prism-clike.js +0 -29
  296. data/vendor/assets/javascripts/prism/prism-core.js +0 -511
  297. data/vendor/assets/javascripts/prism/prism-cpp.js +0 -12
  298. data/vendor/assets/javascripts/prism/prism-csharp.js +0 -32
  299. data/vendor/assets/javascripts/prism/prism-css-extras.js +0 -16
  300. data/vendor/assets/javascripts/prism/prism-css.js +0 -51
  301. data/vendor/assets/javascripts/prism/prism-diff.js +0 -20
  302. data/vendor/assets/javascripts/prism/prism-docker.js +0 -9
  303. data/vendor/assets/javascripts/prism/prism-fsharp.js +0 -33
  304. data/vendor/assets/javascripts/prism/prism-gherkin.js +0 -78
  305. data/vendor/assets/javascripts/prism/prism-go.js +0 -9
  306. data/vendor/assets/javascripts/prism/prism-graphql.js +0 -24
  307. data/vendor/assets/javascripts/prism/prism-handlebars.js +0 -83
  308. data/vendor/assets/javascripts/prism/prism-haskell.js +0 -35
  309. data/vendor/assets/javascripts/prism/prism-http.js +0 -50
  310. data/vendor/assets/javascripts/prism/prism-java.js +0 -16
  311. data/vendor/assets/javascripts/prism/prism-javascript.js +0 -48
  312. data/vendor/assets/javascripts/prism/prism-json.js +0 -11
  313. data/vendor/assets/javascripts/prism/prism-jsx.js +0 -27
  314. data/vendor/assets/javascripts/prism/prism-julia.js +0 -12
  315. data/vendor/assets/javascripts/prism/prism-keyman.js +0 -14
  316. data/vendor/assets/javascripts/prism/prism-markdown.js +0 -120
  317. data/vendor/assets/javascripts/prism/prism-markup.js +0 -46
  318. data/vendor/assets/javascripts/prism/prism-nasm.js +0 -24
  319. data/vendor/assets/javascripts/prism/prism-nginx.js +0 -11
  320. data/vendor/assets/javascripts/prism/prism-nsis.js +0 -26
  321. data/vendor/assets/javascripts/prism/prism-objectivec.js +0 -5
  322. data/vendor/assets/javascripts/prism/prism-ocaml.js +0 -21
  323. data/vendor/assets/javascripts/prism/prism-parser.js +0 -66
  324. data/vendor/assets/javascripts/prism/prism-perl.js +0 -140
  325. data/vendor/assets/javascripts/prism/prism-php.js +0 -111
  326. data/vendor/assets/javascripts/prism/prism-powershell.js +0 -52
  327. data/vendor/assets/javascripts/prism/prism-protobuf.js +0 -8
  328. data/vendor/assets/javascripts/prism/prism-python.js +0 -27
  329. data/vendor/assets/javascripts/prism/prism-rust.js +0 -53
  330. data/vendor/assets/javascripts/prism/prism-sas.js +0 -31
  331. data/vendor/assets/javascripts/prism/prism-scheme.js +0 -26
  332. data/vendor/assets/javascripts/prism/prism-smarty.js +0 -127
  333. data/vendor/assets/javascripts/prism/prism-sql.js +0 -17
  334. data/vendor/assets/javascripts/prism/prism-swift.js +0 -25
  335. data/vendor/assets/javascripts/prism/prism-tcl.js +0 -43
  336. data/vendor/assets/javascripts/prism/prism-typescript.js +0 -5
  337. data/vendor/assets/javascripts/prism/prism-verilog.js +0 -17
  338. data/vendor/assets/javascripts/prism/prism-yaml.js +0 -44
  339. data/vendor/assets/stylesheets/prism-hopscotch.css +0 -124
  340. data/vendor/assets/stylesheets/prism-pojoaque.css +0 -134
  341. data/vendor/assets/stylesheets/prism-xonokai.css +0 -164
@@ -1,4 +1,4 @@
1
- (function () {
1
+ (function (self, document) {
2
2
 
3
3
  if (typeof self === 'undefined' || !self.Prism || !self.document || !document.createRange) {
4
4
  return;
@@ -92,6 +92,8 @@
92
92
  pos: 0
93
93
  });
94
94
  });
95
+ // Store new highlightedCode for later hooks calls
96
+ env.highlightedCode = env.element.innerHTML;
95
97
  }
96
98
  });
97
- }());
99
+ }(self, document));
@@ -1,133 +1,213 @@
1
- (function(){
2
-
3
- if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
4
- return;
5
- }
6
-
7
- function $$(expr, con) {
8
- return Array.prototype.slice.call((con || document).querySelectorAll(expr));
9
- }
10
-
11
- function hasClass(element, className) {
12
- className = " " + className + " ";
13
- return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1
14
- }
15
-
16
- // Some browsers round the line-height, others don't.
17
- // We need to test for it to position the elements properly.
18
- var isLineHeightRounded = (function() {
19
- var res;
20
- return function() {
21
- if(typeof res === 'undefined') {
22
- var d = document.createElement('div');
23
- d.style.fontSize = '13px';
24
- d.style.lineHeight = '1.5';
25
- d.style.padding = 0;
26
- d.style.border = 0;
27
- d.innerHTML = '&nbsp;<br />&nbsp;';
28
- document.body.appendChild(d);
29
- // Browsers that round the line-height should have offsetHeight === 38
30
- // The others should have 39.
31
- res = d.offsetHeight === 38;
32
- document.body.removeChild(d);
33
- }
34
- return res;
1
+ (function () {
2
+
3
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
4
+ return;
35
5
  }
36
- }());
37
-
38
- function highlightLines(pre, lines, classes) {
39
- var ranges = lines.replace(/\s+/g, '').split(','),
40
- offset = +pre.getAttribute('data-line-offset') || 0;
41
-
42
- var parseMethod = isLineHeightRounded() ? parseInt : parseFloat;
43
- var lineHeight = parseMethod(getComputedStyle(pre).lineHeight);
44
-
45
- for (var i=0, range; range = ranges[i++];) {
46
- range = range.split('-');
47
-
48
- var start = +range[0],
49
- end = +range[1] || start;
50
-
51
- var line = document.createElement('div');
52
-
53
- line.textContent = Array(end - start + 2).join(' \n');
54
- line.setAttribute('aria-hidden', 'true');
55
- line.className = (classes || '') + ' line-highlight';
56
-
57
- //if the line-numbers plugin is enabled, then there is no reason for this plugin to display the line numbers
58
- if(!hasClass(pre, 'line-numbers')) {
59
- line.setAttribute('data-start', start);
60
-
61
- if(end > start) {
62
- line.setAttribute('data-end', end);
6
+
7
+ function $$(expr, con) {
8
+ return Array.prototype.slice.call((con || document).querySelectorAll(expr));
9
+ }
10
+
11
+ function hasClass(element, className) {
12
+ className = " " + className + " ";
13
+ return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1
14
+ }
15
+
16
+ function callFunction(func) {
17
+ func();
18
+ }
19
+
20
+ // Some browsers round the line-height, others don't.
21
+ // We need to test for it to position the elements properly.
22
+ var isLineHeightRounded = (function () {
23
+ var res;
24
+ return function () {
25
+ if (typeof res === 'undefined') {
26
+ var d = document.createElement('div');
27
+ d.style.fontSize = '13px';
28
+ d.style.lineHeight = '1.5';
29
+ d.style.padding = 0;
30
+ d.style.border = 0;
31
+ d.innerHTML = '&nbsp;<br />&nbsp;';
32
+ document.body.appendChild(d);
33
+ // Browsers that round the line-height should have offsetHeight === 38
34
+ // The others should have 39.
35
+ res = d.offsetHeight === 38;
36
+ document.body.removeChild(d);
63
37
  }
38
+ return res;
64
39
  }
40
+ }());
41
+
42
+ /**
43
+ * Highlights the lines of the given pre.
44
+ *
45
+ * This function is split into a DOM measuring and mutate phase to improve performance.
46
+ * The returned function mutates the DOM when called.
47
+ *
48
+ * @param {HTMLElement} pre
49
+ * @param {string} [lines]
50
+ * @param {string} [classes='']
51
+ * @returns {() => void}
52
+ */
53
+ function highlightLines(pre, lines, classes) {
54
+ lines = typeof lines === 'string' ? lines : pre.getAttribute('data-line');
55
+
56
+ var ranges = lines.replace(/\s+/g, '').split(',');
57
+ var offset = +pre.getAttribute('data-line-offset') || 0;
58
+
59
+ var parseMethod = isLineHeightRounded() ? parseInt : parseFloat;
60
+ var lineHeight = parseMethod(getComputedStyle(pre).lineHeight);
61
+ var hasLineNumbers = hasClass(pre, 'line-numbers');
62
+ var parentElement = hasLineNumbers ? pre : pre.querySelector('code') || pre;
63
+ var mutateActions = /** @type {(() => void)[]} */ ([]);
64
+
65
+ ranges.forEach(function (currentRange) {
66
+ var range = currentRange.split('-');
67
+
68
+ var start = +range[0];
69
+ var end = +range[1] || start;
70
+
71
+ var line = pre.querySelector('.line-highlight[data-range="' + currentRange + '"]') || document.createElement('div');
72
+
73
+ mutateActions.push(function () {
74
+ line.setAttribute('aria-hidden', 'true');
75
+ line.setAttribute('data-range', currentRange);
76
+ line.className = (classes || '') + ' line-highlight';
77
+ });
78
+
79
+ // if the line-numbers plugin is enabled, then there is no reason for this plugin to display the line numbers
80
+ if (hasLineNumbers && Prism.plugins.lineNumbers) {
81
+ var startNode = Prism.plugins.lineNumbers.getLine(pre, start);
82
+ var endNode = Prism.plugins.lineNumbers.getLine(pre, end);
83
+
84
+ if (startNode) {
85
+ var top = startNode.offsetTop + 'px';
86
+ mutateActions.push(function () {
87
+ line.style.top = top;
88
+ });
89
+ }
90
+
91
+ if (endNode) {
92
+ var height = (endNode.offsetTop - startNode.offsetTop) + endNode.offsetHeight + 'px';
93
+ mutateActions.push(function () {
94
+ line.style.height = height;
95
+ });
96
+ }
97
+ } else {
98
+ mutateActions.push(function () {
99
+ line.setAttribute('data-start', start);
100
+
101
+ if (end > start) {
102
+ line.setAttribute('data-end', end);
103
+ }
104
+
105
+ line.style.top = (start - offset - 1) * lineHeight + 'px';
106
+
107
+ line.textContent = new Array(end - start + 2).join(' \n');
108
+ });
109
+ }
65
110
 
66
- line.style.top = (start - offset - 1) * lineHeight + 'px';
111
+ mutateActions.push(function () {
112
+ // allow this to play nicely with the line-numbers plugin
113
+ // need to attack to pre as when line-numbers is enabled, the code tag is relatively which screws up the positioning
114
+ parentElement.appendChild(line);
115
+ });
116
+ });
67
117
 
68
- //allow this to play nicely with the line-numbers plugin
69
- if(hasClass(pre, 'line-numbers')) {
70
- //need to attack to pre as when line-numbers is enabled, the code tag is relatively which screws up the positioning
71
- pre.appendChild(line);
72
- } else {
73
- (pre.querySelector('code') || pre).appendChild(line);
118
+ return function () {
119
+ mutateActions.forEach(callFunction);
120
+ };
121
+ }
122
+
123
+ function applyHash() {
124
+ var hash = location.hash.slice(1);
125
+
126
+ // Remove pre-existing temporary lines
127
+ $$('.temporary.line-highlight').forEach(function (line) {
128
+ line.parentNode.removeChild(line);
129
+ });
130
+
131
+ var range = (hash.match(/\.([\d,-]+)$/) || [, ''])[1];
132
+
133
+ if (!range || document.getElementById(hash)) {
134
+ return;
74
135
  }
136
+
137
+ var id = hash.slice(0, hash.lastIndexOf('.')),
138
+ pre = document.getElementById(id);
139
+
140
+ if (!pre) {
141
+ return;
142
+ }
143
+
144
+ if (!pre.hasAttribute('data-line')) {
145
+ pre.setAttribute('data-line', '');
146
+ }
147
+
148
+ var mutateDom = highlightLines(pre, range, 'temporary ');
149
+ mutateDom();
150
+
151
+ document.querySelector('.temporary.line-highlight').scrollIntoView();
75
152
  }
76
- }
77
-
78
- function applyHash() {
79
- var hash = location.hash.slice(1);
80
-
81
- // Remove pre-existing temporary lines
82
- $$('.temporary.line-highlight').forEach(function (line) {
83
- line.parentNode.removeChild(line);
153
+
154
+ var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
155
+
156
+ Prism.hooks.add('before-sanity-check', function (env) {
157
+ var pre = env.element.parentNode;
158
+ var lines = pre && pre.getAttribute('data-line');
159
+
160
+ if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
161
+ return;
162
+ }
163
+
164
+ /*
165
+ * Cleanup for other plugins (e.g. autoloader).
166
+ *
167
+ * Sometimes <code> blocks are highlighted multiple times. It is necessary
168
+ * to cleanup any left-over tags, because the whitespace inside of the <div>
169
+ * tags change the content of the <code> tag.
170
+ */
171
+ var num = 0;
172
+ $$('.line-highlight', pre).forEach(function (line) {
173
+ num += line.textContent.length;
174
+ line.parentNode.removeChild(line);
175
+ });
176
+ // Remove extra whitespace
177
+ if (num && /^( \n)+$/.test(env.code.slice(-num))) {
178
+ env.code = env.code.slice(0, -num);
179
+ }
84
180
  });
85
-
86
- var range = (hash.match(/\.([\d,-]+)$/) || [,''])[1];
87
-
88
- if (!range || document.getElementById(hash)) {
89
- return;
90
- }
91
-
92
- var id = hash.slice(0, hash.lastIndexOf('.')),
93
- pre = document.getElementById(id);
94
181
 
95
- if (!pre) {
96
- return;
97
- }
98
-
99
- if (!pre.hasAttribute('data-line')) {
100
- pre.setAttribute('data-line', '');
101
- }
182
+ Prism.hooks.add('complete', function completeHook(env) {
183
+ var pre = env.element.parentNode;
184
+ var lines = pre && pre.getAttribute('data-line');
102
185
 
103
- highlightLines(pre, range, 'temporary ');
186
+ if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
187
+ return;
188
+ }
104
189
 
105
- document.querySelector('.temporary.line-highlight').scrollIntoView();
106
- }
190
+ clearTimeout(fakeTimer);
107
191
 
108
- var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
192
+ var hasLineNumbers = Prism.plugins.lineNumbers;
193
+ var isLineNumbersLoaded = env.plugins && env.plugins.lineNumbers;
109
194
 
110
- Prism.hooks.add('complete', function(env) {
111
- var pre = env.element.parentNode;
112
- var lines = pre && pre.getAttribute('data-line');
113
-
114
- if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
115
- return;
116
- }
117
-
118
- clearTimeout(fakeTimer);
119
-
120
- $$('.line-highlight', pre).forEach(function (line) {
121
- line.parentNode.removeChild(line);
195
+ if (hasClass(pre, 'line-numbers') && hasLineNumbers && !isLineNumbersLoaded) {
196
+ Prism.hooks.add('line-numbers', completeHook);
197
+ } else {
198
+ var mutateDom = highlightLines(pre, lines);
199
+ mutateDom();
200
+ fakeTimer = setTimeout(applyHash, 1);
201
+ }
122
202
  });
123
-
124
- highlightLines(pre, lines);
125
-
126
- fakeTimer = setTimeout(applyHash, 1);
127
- });
128
203
 
129
- if(window.addEventListener) {
130
204
  window.addEventListener('hashchange', applyHash);
131
- }
205
+ window.addEventListener('resize', function () {
206
+ var actions = [];
207
+ $$('pre[data-line]').forEach(function (pre) {
208
+ actions.push(highlightLines(pre));
209
+ });
210
+ actions.forEach(callFunction);
211
+ });
132
212
 
133
213
  })();
@@ -1,57 +1,168 @@
1
- (function() {
1
+ (function () {
2
2
 
3
- if (typeof self === 'undefined' || !self.Prism || !self.document) {
4
- return;
5
- }
6
-
7
- Prism.hooks.add('complete', function (env) {
8
- if (!env.code) {
3
+ if (typeof self === 'undefined' || !self.Prism || !self.document) {
9
4
  return;
10
5
  }
11
6
 
12
- // works only for <code> wrapped inside <pre> (not inline)
13
- var pre = env.element.parentNode;
14
- var clsReg = /\s*\bline-numbers\b\s*/;
15
- if (
16
- !pre || !/pre/i.test(pre.nodeName) ||
17
- // Abort only if nor the <pre> nor the <code> have the class
18
- (!clsReg.test(pre.className) && !clsReg.test(env.element.className))
19
- ) {
20
- return;
21
- }
7
+ /**
8
+ * Plugin name which is used as a class name for <pre> which is activating the plugin
9
+ * @type {String}
10
+ */
11
+ var PLUGIN_NAME = 'line-numbers';
12
+
13
+ /**
14
+ * Regular expression used for determining line breaks
15
+ * @type {RegExp}
16
+ */
17
+ var NEW_LINE_EXP = /\n(?!$)/g;
18
+
19
+ /**
20
+ * Resizes line numbers spans according to height of line of code
21
+ * @param {Element} element <pre> element
22
+ */
23
+ var _resizeElement = function (element) {
24
+ var codeStyles = getStyles(element);
25
+ var whiteSpace = codeStyles['white-space'];
26
+
27
+ if (whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line') {
28
+ var codeElement = element.querySelector('code');
29
+ var lineNumbersWrapper = element.querySelector('.line-numbers-rows');
30
+ var lineNumberSizer = element.querySelector('.line-numbers-sizer');
31
+ var codeLines = codeElement.textContent.split(NEW_LINE_EXP);
32
+
33
+ if (!lineNumberSizer) {
34
+ lineNumberSizer = document.createElement('span');
35
+ lineNumberSizer.className = 'line-numbers-sizer';
36
+
37
+ codeElement.appendChild(lineNumberSizer);
38
+ }
39
+
40
+ lineNumberSizer.style.display = 'block';
41
+
42
+ codeLines.forEach(function (line, lineNumber) {
43
+ lineNumberSizer.textContent = line || '\n';
44
+ var lineSize = lineNumberSizer.getBoundingClientRect().height;
45
+ lineNumbersWrapper.children[lineNumber].style.height = lineSize + 'px';
46
+ });
47
+
48
+ lineNumberSizer.textContent = '';
49
+ lineNumberSizer.style.display = 'none';
50
+ }
51
+ };
52
+
53
+ /**
54
+ * Returns style declarations for the element
55
+ * @param {Element} element
56
+ */
57
+ var getStyles = function (element) {
58
+ if (!element) {
59
+ return null;
60
+ }
61
+
62
+ return window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);
63
+ };
64
+
65
+ window.addEventListener('resize', function () {
66
+ Array.prototype.forEach.call(document.querySelectorAll('pre.' + PLUGIN_NAME), _resizeElement);
67
+ });
68
+
69
+ Prism.hooks.add('complete', function (env) {
70
+ if (!env.code) {
71
+ return;
72
+ }
73
+
74
+ var code = env.element;
75
+ var pre = code.parentNode;
76
+
77
+ // works only for <code> wrapped inside <pre> (not inline)
78
+ if (!pre || !/pre/i.test(pre.nodeName)) {
79
+ return;
80
+ }
22
81
 
23
- if (env.element.querySelector(".line-numbers-rows")) {
24
82
  // Abort if line numbers already exists
25
- return;
26
- }
83
+ if (code.querySelector('.line-numbers-rows')) {
84
+ return;
85
+ }
27
86
 
28
- if (clsReg.test(env.element.className)) {
29
- // Remove the class "line-numbers" from the <code>
30
- env.element.className = env.element.className.replace(clsReg, '');
31
- }
32
- if (!clsReg.test(pre.className)) {
33
- // Add the class "line-numbers" to the <pre>
34
- pre.className += ' line-numbers';
35
- }
87
+ var addLineNumbers = false;
88
+ var lineNumbersRegex = /(?:^|\s)line-numbers(?:\s|$)/;
36
89
 
37
- var match = env.code.match(/\n(?!$)/g);
38
- var linesNum = match ? match.length + 1 : 1;
39
- var lineNumbersWrapper;
90
+ for (var element = code; element; element = element.parentNode) {
91
+ if (lineNumbersRegex.test(element.className)) {
92
+ addLineNumbers = true;
93
+ break;
94
+ }
95
+ }
40
96
 
41
- var lines = new Array(linesNum + 1);
42
- lines = lines.join('<span></span>');
97
+ // only add line numbers if <code> or one of its ancestors has the `line-numbers` class
98
+ if (!addLineNumbers) {
99
+ return;
100
+ }
43
101
 
44
- lineNumbersWrapper = document.createElement('span');
45
- lineNumbersWrapper.setAttribute('aria-hidden', 'true');
46
- lineNumbersWrapper.className = 'line-numbers-rows';
47
- lineNumbersWrapper.innerHTML = lines;
102
+ // Remove the class 'line-numbers' from the <code>
103
+ code.className = code.className.replace(lineNumbersRegex, ' ');
104
+ // Add the class 'line-numbers' to the <pre>
105
+ if (!lineNumbersRegex.test(pre.className)) {
106
+ pre.className += ' line-numbers';
107
+ }
48
108
 
49
- if (pre.hasAttribute('data-start')) {
50
- pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);
51
- }
109
+ var match = env.code.match(NEW_LINE_EXP);
110
+ var linesNum = match ? match.length + 1 : 1;
111
+ var lineNumbersWrapper;
112
+
113
+ var lines = new Array(linesNum + 1).join('<span></span>');
114
+
115
+ lineNumbersWrapper = document.createElement('span');
116
+ lineNumbersWrapper.setAttribute('aria-hidden', 'true');
117
+ lineNumbersWrapper.className = 'line-numbers-rows';
118
+ lineNumbersWrapper.innerHTML = lines;
119
+
120
+ if (pre.hasAttribute('data-start')) {
121
+ pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);
122
+ }
123
+
124
+ env.element.appendChild(lineNumbersWrapper);
125
+
126
+ _resizeElement(pre);
127
+
128
+ Prism.hooks.run('line-numbers', env);
129
+ });
130
+
131
+ Prism.hooks.add('line-numbers', function (env) {
132
+ env.plugins = env.plugins || {};
133
+ env.plugins.lineNumbers = true;
134
+ });
135
+
136
+ /**
137
+ * Global exports
138
+ */
139
+ Prism.plugins.lineNumbers = {
140
+ /**
141
+ * Get node for provided line number
142
+ * @param {Element} element pre element
143
+ * @param {Number} number line number
144
+ * @return {Element|undefined}
145
+ */
146
+ getLine: function (element, number) {
147
+ if (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {
148
+ return;
149
+ }
150
+
151
+ var lineNumberRows = element.querySelector('.line-numbers-rows');
152
+ var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;
153
+ var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);
154
+
155
+ if (number < lineNumberStart) {
156
+ number = lineNumberStart;
157
+ }
158
+ if (number > lineNumberEnd) {
159
+ number = lineNumberEnd;
160
+ }
52
161
 
53
- env.element.appendChild(lineNumbersWrapper);
162
+ var lineIndex = number - lineNumberStart;
54
163
 
55
- });
164
+ return lineNumberRows.children[lineIndex];
165
+ }
166
+ };
56
167
 
57
- }());
168
+ }());