highlighting 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +52 -0
  3. data/app/helpers/syntax_helper.rb +2 -0
  4. data/lib/highlighting.rb +6 -0
  5. data/lib/highlighting/version.rb +3 -0
  6. data/vendor/assets/javascripts/prism-abap.js +48 -0
  7. data/vendor/assets/javascripts/prism-abap.min.js +1 -0
  8. data/vendor/assets/javascripts/prism-actionscript.js +17 -0
  9. data/vendor/assets/javascripts/prism-actionscript.min.js +1 -0
  10. data/vendor/assets/javascripts/prism-apacheconf.js +47 -0
  11. data/vendor/assets/javascripts/prism-apacheconf.min.js +1 -0
  12. data/vendor/assets/javascripts/prism-apl.js +29 -0
  13. data/vendor/assets/javascripts/prism-apl.min.js +1 -0
  14. data/vendor/assets/javascripts/prism-applescript.js +20 -0
  15. data/vendor/assets/javascripts/prism-applescript.min.js +1 -0
  16. data/vendor/assets/javascripts/prism-asciidoc.js +271 -0
  17. data/vendor/assets/javascripts/prism-asciidoc.min.js +1 -0
  18. data/vendor/assets/javascripts/prism-aspnet.js +36 -0
  19. data/vendor/assets/javascripts/prism-aspnet.min.js +1 -0
  20. data/vendor/assets/javascripts/prism-autohotkey.js +27 -0
  21. data/vendor/assets/javascripts/prism-autohotkey.min.js +1 -0
  22. data/vendor/assets/javascripts/prism-autoit.js +33 -0
  23. data/vendor/assets/javascripts/prism-autoit.min.js +1 -0
  24. data/vendor/assets/javascripts/prism-bash.js +78 -0
  25. data/vendor/assets/javascripts/prism-bash.min.js +1 -0
  26. data/vendor/assets/javascripts/prism-basic.js +14 -0
  27. data/vendor/assets/javascripts/prism-basic.min.js +1 -0
  28. data/vendor/assets/javascripts/prism-batch.js +99 -0
  29. data/vendor/assets/javascripts/prism-batch.min.js +1 -0
  30. data/vendor/assets/javascripts/prism-bison.js +39 -0
  31. data/vendor/assets/javascripts/prism-bison.min.js +1 -0
  32. data/vendor/assets/javascripts/prism-brainfuck.js +20 -0
  33. data/vendor/assets/javascripts/prism-brainfuck.min.js +1 -0
  34. data/vendor/assets/javascripts/prism-c.js +33 -0
  35. data/vendor/assets/javascripts/prism-c.min.js +1 -0
  36. data/vendor/assets/javascripts/prism-clike.js +26 -0
  37. data/vendor/assets/javascripts/prism-clike.min.js +1 -0
  38. data/vendor/assets/javascripts/prism-coffeescript.js +83 -0
  39. data/vendor/assets/javascripts/prism-coffeescript.min.js +1 -0
  40. data/vendor/assets/javascripts/prism-core.js +434 -0
  41. data/vendor/assets/javascripts/prism-core.min.js +1 -0
  42. data/vendor/assets/javascripts/prism-cpp.js +12 -0
  43. data/vendor/assets/javascripts/prism-cpp.min.js +1 -0
  44. data/vendor/assets/javascripts/prism-crystal.js +53 -0
  45. data/vendor/assets/javascripts/prism-crystal.min.js +1 -0
  46. data/vendor/assets/javascripts/prism-csharp.js +24 -0
  47. data/vendor/assets/javascripts/prism-csharp.min.js +1 -0
  48. data/vendor/assets/javascripts/prism-css-extras.js +15 -0
  49. data/vendor/assets/javascripts/prism-css-extras.min.js +1 -0
  50. data/vendor/assets/javascripts/prism-css.js +48 -0
  51. data/vendor/assets/javascripts/prism-css.min.js +1 -0
  52. data/vendor/assets/javascripts/prism-d.js +64 -0
  53. data/vendor/assets/javascripts/prism-d.min.js +1 -0
  54. data/vendor/assets/javascripts/prism-dart.js +18 -0
  55. data/vendor/assets/javascripts/prism-dart.min.js +1 -0
  56. data/vendor/assets/javascripts/prism-diff.js +20 -0
  57. data/vendor/assets/javascripts/prism-diff.min.js +1 -0
  58. data/vendor/assets/javascripts/prism-docker.js +9 -0
  59. data/vendor/assets/javascripts/prism-docker.min.js +1 -0
  60. data/vendor/assets/javascripts/prism-eiffel.js +24 -0
  61. data/vendor/assets/javascripts/prism-eiffel.min.js +1 -0
  62. data/vendor/assets/javascripts/prism-elixir.js +90 -0
  63. data/vendor/assets/javascripts/prism-elixir.min.js +1 -0
  64. data/vendor/assets/javascripts/prism-erlang.js +41 -0
  65. data/vendor/assets/javascripts/prism-erlang.min.js +1 -0
  66. data/vendor/assets/javascripts/prism-fortran.js +37 -0
  67. data/vendor/assets/javascripts/prism-fortran.min.js +1 -0
  68. data/vendor/assets/javascripts/prism-fsharp.js +33 -0
  69. data/vendor/assets/javascripts/prism-fsharp.min.js +1 -0
  70. data/vendor/assets/javascripts/prism-gherkin.js +78 -0
  71. data/vendor/assets/javascripts/prism-gherkin.min.js +1 -0
  72. data/vendor/assets/javascripts/prism-git.js +68 -0
  73. data/vendor/assets/javascripts/prism-git.min.js +1 -0
  74. data/vendor/assets/javascripts/prism-glsl.js +16 -0
  75. data/vendor/assets/javascripts/prism-glsl.min.js +1 -0
  76. data/vendor/assets/javascripts/prism-go.js +9 -0
  77. data/vendor/assets/javascripts/prism-go.min.js +1 -0
  78. data/vendor/assets/javascripts/prism-groovy.js +51 -0
  79. data/vendor/assets/javascripts/prism-groovy.min.js +1 -0
  80. data/vendor/assets/javascripts/prism-haml.js +154 -0
  81. data/vendor/assets/javascripts/prism-haml.min.js +1 -0
  82. data/vendor/assets/javascripts/prism-handlebars.js +83 -0
  83. data/vendor/assets/javascripts/prism-handlebars.min.js +1 -0
  84. data/vendor/assets/javascripts/prism-haskell.js +32 -0
  85. data/vendor/assets/javascripts/prism-haskell.min.js +1 -0
  86. data/vendor/assets/javascripts/prism-haxe.js +43 -0
  87. data/vendor/assets/javascripts/prism-haxe.min.js +1 -0
  88. data/vendor/assets/javascripts/prism-http.js +50 -0
  89. data/vendor/assets/javascripts/prism-http.min.js +1 -0
  90. data/vendor/assets/javascripts/prism-icon.js +17 -0
  91. data/vendor/assets/javascripts/prism-icon.min.js +1 -0
  92. data/vendor/assets/javascripts/prism-inform7.js +58 -0
  93. data/vendor/assets/javascripts/prism-inform7.min.js +1 -0
  94. data/vendor/assets/javascripts/prism-ini.js +11 -0
  95. data/vendor/assets/javascripts/prism-ini.min.js +1 -0
  96. data/vendor/assets/javascripts/prism-j.js +22 -0
  97. data/vendor/assets/javascripts/prism-j.min.js +1 -0
  98. data/vendor/assets/javascripts/prism-jade.js +198 -0
  99. data/vendor/assets/javascripts/prism-jade.min.js +1 -0
  100. data/vendor/assets/javascripts/prism-java.js +8 -0
  101. data/vendor/assets/javascripts/prism-java.min.js +1 -0
  102. data/vendor/assets/javascripts/prism-javascript.js +45 -0
  103. data/vendor/assets/javascripts/prism-javascript.min.js +1 -0
  104. data/vendor/assets/javascripts/prism-jsx.js +24 -0
  105. data/vendor/assets/javascripts/prism-jsx.min.js +1 -0
  106. data/vendor/assets/javascripts/prism-julia.js +12 -0
  107. data/vendor/assets/javascripts/prism-julia.min.js +1 -0
  108. data/vendor/assets/javascripts/prism-keyman.js +14 -0
  109. data/vendor/assets/javascripts/prism-keyman.min.js +1 -0
  110. data/vendor/assets/javascripts/prism-kotlin.js +68 -0
  111. data/vendor/assets/javascripts/prism-kotlin.min.js +1 -0
  112. data/vendor/assets/javascripts/prism-latex.js +61 -0
  113. data/vendor/assets/javascripts/prism-latex.min.js +1 -0
  114. data/vendor/assets/javascripts/prism-less.js +60 -0
  115. data/vendor/assets/javascripts/prism-less.min.js +1 -0
  116. data/vendor/assets/javascripts/prism-lolcode.js +54 -0
  117. data/vendor/assets/javascripts/prism-lolcode.min.js +1 -0
  118. data/vendor/assets/javascripts/prism-lua.js +17 -0
  119. data/vendor/assets/javascripts/prism-lua.min.js +1 -0
  120. data/vendor/assets/javascripts/prism-makefile.js +31 -0
  121. data/vendor/assets/javascripts/prism-makefile.min.js +1 -0
  122. data/vendor/assets/javascripts/prism-markdown.js +120 -0
  123. data/vendor/assets/javascripts/prism-markdown.min.js +1 -0
  124. data/vendor/assets/javascripts/prism-markup.js +46 -0
  125. data/vendor/assets/javascripts/prism-markup.min.js +1 -0
  126. data/vendor/assets/javascripts/prism-matlab.js +14 -0
  127. data/vendor/assets/javascripts/prism-matlab.min.js +1 -0
  128. data/vendor/assets/javascripts/prism-mel.js +39 -0
  129. data/vendor/assets/javascripts/prism-mel.min.js +1 -0
  130. data/vendor/assets/javascripts/prism-mizar.js +12 -0
  131. data/vendor/assets/javascripts/prism-mizar.min.js +1 -0
  132. data/vendor/assets/javascripts/prism-monkey.js +25 -0
  133. data/vendor/assets/javascripts/prism-monkey.min.js +1 -0
  134. data/vendor/assets/javascripts/prism-nasm.js +24 -0
  135. data/vendor/assets/javascripts/prism-nasm.min.js +1 -0
  136. data/vendor/assets/javascripts/prism-nginx.js +11 -0
  137. data/vendor/assets/javascripts/prism-nginx.min.js +1 -0
  138. data/vendor/assets/javascripts/prism-nim.js +30 -0
  139. data/vendor/assets/javascripts/prism-nim.min.js +1 -0
  140. data/vendor/assets/javascripts/prism-nix.js +39 -0
  141. data/vendor/assets/javascripts/prism-nix.min.js +1 -0
  142. data/vendor/assets/javascripts/prism-nsis.js +19 -0
  143. data/vendor/assets/javascripts/prism-nsis.min.js +1 -0
  144. data/vendor/assets/javascripts/prism-objectivec.js +5 -0
  145. data/vendor/assets/javascripts/prism-objectivec.min.js +1 -0
  146. data/vendor/assets/javascripts/prism-ocaml.js +21 -0
  147. data/vendor/assets/javascripts/prism-ocaml.min.js +1 -0
  148. data/vendor/assets/javascripts/prism-oz.js +21 -0
  149. data/vendor/assets/javascripts/prism-oz.min.js +1 -0
  150. data/vendor/assets/javascripts/prism-parigp.js +27 -0
  151. data/vendor/assets/javascripts/prism-parigp.min.js +1 -0
  152. data/vendor/assets/javascripts/prism-parser.js +66 -0
  153. data/vendor/assets/javascripts/prism-parser.min.js +1 -0
  154. data/vendor/assets/javascripts/prism-pascal.js +50 -0
  155. data/vendor/assets/javascripts/prism-pascal.min.js +1 -0
  156. data/vendor/assets/javascripts/prism-perl.js +140 -0
  157. data/vendor/assets/javascripts/prism-perl.min.js +1 -0
  158. data/vendor/assets/javascripts/prism-php-extras.js +11 -0
  159. data/vendor/assets/javascripts/prism-php-extras.min.js +1 -0
  160. data/vendor/assets/javascripts/prism-php.js +110 -0
  161. data/vendor/assets/javascripts/prism-php.min.js +1 -0
  162. data/vendor/assets/javascripts/prism-powershell.js +48 -0
  163. data/vendor/assets/javascripts/prism-powershell.min.js +1 -0
  164. data/vendor/assets/javascripts/prism-processing.js +18 -0
  165. data/vendor/assets/javascripts/prism-processing.min.js +1 -0
  166. data/vendor/assets/javascripts/prism-prolog.js +17 -0
  167. data/vendor/assets/javascripts/prism-prolog.min.js +1 -0
  168. data/vendor/assets/javascripts/prism-puppet.js +131 -0
  169. data/vendor/assets/javascripts/prism-puppet.min.js +1 -0
  170. data/vendor/assets/javascripts/prism-pure.js +77 -0
  171. data/vendor/assets/javascripts/prism-pure.min.js +1 -0
  172. data/vendor/assets/javascripts/prism-python.js +24 -0
  173. data/vendor/assets/javascripts/prism-python.min.js +1 -0
  174. data/vendor/assets/javascripts/prism-q.js +44 -0
  175. data/vendor/assets/javascripts/prism-q.min.js +1 -0
  176. data/vendor/assets/javascripts/prism-qore.js +17 -0
  177. data/vendor/assets/javascripts/prism-qore.min.js +1 -0
  178. data/vendor/assets/javascripts/prism-r.js +19 -0
  179. data/vendor/assets/javascripts/prism-r.min.js +1 -0
  180. data/vendor/assets/javascripts/prism-rest.js +205 -0
  181. data/vendor/assets/javascripts/prism-rest.min.js +1 -0
  182. data/vendor/assets/javascripts/prism-rip.js +28 -0
  183. data/vendor/assets/javascripts/prism-rip.min.js +1 -0
  184. data/vendor/assets/javascripts/prism-roboconf.js +27 -0
  185. data/vendor/assets/javascripts/prism-roboconf.min.js +1 -0
  186. data/vendor/assets/javascripts/prism-ruby.js +110 -0
  187. data/vendor/assets/javascripts/prism-ruby.min.js +1 -0
  188. data/vendor/assets/javascripts/prism-rust.js +53 -0
  189. data/vendor/assets/javascripts/prism-rust.min.js +1 -0
  190. data/vendor/assets/javascripts/prism-sas.js +31 -0
  191. data/vendor/assets/javascripts/prism-sas.min.js +1 -0
  192. data/vendor/assets/javascripts/prism-sass.js +73 -0
  193. data/vendor/assets/javascripts/prism-sass.min.js +1 -0
  194. data/vendor/assets/javascripts/prism-scala.js +9 -0
  195. data/vendor/assets/javascripts/prism-scala.min.js +1 -0
  196. data/vendor/assets/javascripts/prism-scheme.js +26 -0
  197. data/vendor/assets/javascripts/prism-scheme.min.js +1 -0
  198. data/vendor/assets/javascripts/prism-scss.js +60 -0
  199. data/vendor/assets/javascripts/prism-scss.min.js +1 -0
  200. data/vendor/assets/javascripts/prism-smalltalk.js +31 -0
  201. data/vendor/assets/javascripts/prism-smalltalk.min.js +1 -0
  202. data/vendor/assets/javascripts/prism-smarty.js +127 -0
  203. data/vendor/assets/javascripts/prism-smarty.min.js +1 -0
  204. data/vendor/assets/javascripts/prism-sql.js +17 -0
  205. data/vendor/assets/javascripts/prism-sql.min.js +1 -0
  206. data/vendor/assets/javascripts/prism-stylus.js +102 -0
  207. data/vendor/assets/javascripts/prism-stylus.min.js +1 -0
  208. data/vendor/assets/javascripts/prism-swift.js +24 -0
  209. data/vendor/assets/javascripts/prism-swift.min.js +1 -0
  210. data/vendor/assets/javascripts/prism-tcl.js +43 -0
  211. data/vendor/assets/javascripts/prism-tcl.min.js +1 -0
  212. data/vendor/assets/javascripts/prism-textile.js +254 -0
  213. data/vendor/assets/javascripts/prism-textile.min.js +1 -0
  214. data/vendor/assets/javascripts/prism-twig.js +46 -0
  215. data/vendor/assets/javascripts/prism-twig.min.js +1 -0
  216. data/vendor/assets/javascripts/prism-typescript.js +3 -0
  217. data/vendor/assets/javascripts/prism-typescript.min.js +1 -0
  218. data/vendor/assets/javascripts/prism-verilog.js +17 -0
  219. data/vendor/assets/javascripts/prism-verilog.min.js +1 -0
  220. data/vendor/assets/javascripts/prism-vhdl.js +23 -0
  221. data/vendor/assets/javascripts/prism-vhdl.min.js +1 -0
  222. data/vendor/assets/javascripts/prism-vim.js +10 -0
  223. data/vendor/assets/javascripts/prism-vim.min.js +1 -0
  224. data/vendor/assets/javascripts/prism-wiki.js +81 -0
  225. data/vendor/assets/javascripts/prism-wiki.min.js +1 -0
  226. data/vendor/assets/javascripts/prism-yaml.js +44 -0
  227. data/vendor/assets/javascripts/prism-yaml.min.js +1 -0
  228. data/vendor/assets/javascripts/prism.js +708 -0
  229. data/vendor/assets/stylesheets/prism-coy.css +235 -0
  230. data/vendor/assets/stylesheets/prism-dark.css +128 -0
  231. data/vendor/assets/stylesheets/prism-funky.css +117 -0
  232. data/vendor/assets/stylesheets/prism-okaidia.css +121 -0
  233. data/vendor/assets/stylesheets/prism-tomorrow.css +121 -0
  234. data/vendor/assets/stylesheets/prism-twilight.css +201 -0
  235. data/vendor/assets/stylesheets/prism.css +137 -0
  236. metadata +306 -0
@@ -0,0 +1 @@
1
+ Prism.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{)|(?:external|import)\b)/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:"variable"},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*)[^,;]+/,lookbehind:!0,alias:"attr-value"},optional:{pattern:/\(optional\)/,alias:"builtin"},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:"operator"},punctuation:/[{},.;:=]/};
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Original by Samuel Flores
3
+ *
4
+ * Adds the following new token classes:
5
+ * constant, builtin, variable, symbol, regex
6
+ */
7
+ (function(Prism) {
8
+ Prism.languages.ruby = Prism.languages.extend('clike', {
9
+ 'comment': /#(?!\{[^\r\n]*?\}).*/,
10
+ 'keyword': /\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/
11
+ });
12
+
13
+ var interpolation = {
14
+ pattern: /#\{[^}]+\}/,
15
+ inside: {
16
+ 'delimiter': {
17
+ pattern: /^#\{|\}$/,
18
+ alias: 'tag'
19
+ },
20
+ rest: Prism.util.clone(Prism.languages.ruby)
21
+ }
22
+ };
23
+
24
+ Prism.languages.insertBefore('ruby', 'keyword', {
25
+ 'regex': [
26
+ {
27
+ pattern: /%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,
28
+ inside: {
29
+ 'interpolation': interpolation
30
+ }
31
+ },
32
+ {
33
+ pattern: /%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,
34
+ inside: {
35
+ 'interpolation': interpolation
36
+ }
37
+ },
38
+ {
39
+ // Here we need to specifically allow interpolation
40
+ pattern: /%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,
41
+ inside: {
42
+ 'interpolation': interpolation
43
+ }
44
+ },
45
+ {
46
+ pattern: /%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,
47
+ inside: {
48
+ 'interpolation': interpolation
49
+ }
50
+ },
51
+ {
52
+ pattern: /%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,
53
+ inside: {
54
+ 'interpolation': interpolation
55
+ }
56
+ },
57
+ {
58
+ pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,
59
+ lookbehind: true
60
+ }
61
+ ],
62
+ 'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,
63
+ 'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/
64
+ });
65
+
66
+ Prism.languages.insertBefore('ruby', 'number', {
67
+ 'builtin': /\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,
68
+ 'constant': /\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/
69
+ });
70
+
71
+ Prism.languages.ruby.string = [
72
+ {
73
+ pattern: /%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,
74
+ inside: {
75
+ 'interpolation': interpolation
76
+ }
77
+ },
78
+ {
79
+ pattern: /%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,
80
+ inside: {
81
+ 'interpolation': interpolation
82
+ }
83
+ },
84
+ {
85
+ // Here we need to specifically allow interpolation
86
+ pattern: /%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,
87
+ inside: {
88
+ 'interpolation': interpolation
89
+ }
90
+ },
91
+ {
92
+ pattern: /%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,
93
+ inside: {
94
+ 'interpolation': interpolation
95
+ }
96
+ },
97
+ {
98
+ pattern: /%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,
99
+ inside: {
100
+ 'interpolation': interpolation
101
+ }
102
+ },
103
+ {
104
+ pattern: /("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,
105
+ inside: {
106
+ 'interpolation': interpolation
107
+ }
108
+ }
109
+ ];
110
+ }(Prism));
@@ -0,0 +1 @@
1
+ !function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:n}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:n}}]}(Prism);
@@ -0,0 +1,53 @@
1
+ /* TODO
2
+ Add support for Markdown notation inside doc comments
3
+ Add support for nested block comments...
4
+ Match closure params even when not followed by dash or brace
5
+ Add better support for macro definition
6
+ */
7
+
8
+ Prism.languages.rust = {
9
+ 'comment': [
10
+ {
11
+ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
12
+ lookbehind: true
13
+ },
14
+ {
15
+ pattern: /(^|[^\\:])\/\/.*/,
16
+ lookbehind: true
17
+ }
18
+ ],
19
+ 'string': [
20
+ /b?r(#*)"(?:\\?.)*?"\1/,
21
+ /b?("|')(?:\\?.)*?\1/
22
+ ],
23
+ 'keyword': /\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,
24
+
25
+ 'attribute': {
26
+ pattern: /#!?\[.+?\]/,
27
+ alias: 'attr-name'
28
+ },
29
+
30
+ 'function': [
31
+ /[a-z0-9_]+(?=\s*\()/i,
32
+ // Macros can use parens or brackets
33
+ /[a-z0-9_]+!(?=\s*\(|\[)/i
34
+ ],
35
+ 'macro-rules': {
36
+ pattern: /[a-z0-9_]+!/i,
37
+ alias: 'function'
38
+ },
39
+
40
+ // Hex, oct, bin, dec numbers with visual separators and type suffix
41
+ 'number': /\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,
42
+
43
+ // Closure params should not be confused with bitwise OR |
44
+ 'closure-params': {
45
+ pattern: /\|[^|]*\|(?=\s*[{-])/,
46
+ inside: {
47
+ 'punctuation': /[\|:,]/,
48
+ 'operator': /[&*]/
49
+ }
50
+ },
51
+ 'punctuation': /[{}[\];(),:]|\.+|->/,
52
+ 'operator': /[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<<?=?|>>?=?/
53
+ };
@@ -0,0 +1 @@
1
+ Prism.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[/b?r(#*)"(?:\\?.)*?"\1/,/b?("|')(?:\\?.)*?\1/],keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,alias:"attr-name"},"function":[/[a-z0-9_]+(?=\s*\()/i,/[a-z0-9_]+!(?=\s*\(|\[)/i],"macro-rules":{pattern:/[a-z0-9_]+!/i,alias:"function"},number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[\|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<<?=?|>>?=?/};
@@ -0,0 +1,31 @@
1
+ Prism.languages.sas = {
2
+ 'datalines': {
3
+ pattern: /^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,
4
+ alias: 'string',
5
+ inside: {
6
+ 'keyword': {
7
+ pattern: /^(\s*)(?:(?:data)?lines|cards)/i,
8
+ lookbehind: true
9
+ },
10
+ 'punctuation': /;/
11
+ }
12
+ },
13
+ 'comment': [
14
+ {
15
+ pattern: /(^\s*|;\s*)\*.*;/m,
16
+ lookbehind: true
17
+ },
18
+ /\/\*[\s\S]+?\*\//
19
+ ],
20
+ 'datetime': {
21
+ // '1jan2013'd, '9:25:19pm't, '18jan2003:9:27:05am'dt
22
+ pattern: /'[^']+'(?:dt?|t)\b/i,
23
+ alias: 'number'
24
+ },
25
+ 'string': /(["'])(?:\1\1|(?!\1)[\s\S])*\1/,
26
+ 'keyword': /\b(?:data|else|format|if|input|proc|run|then)\b/i,
27
+ // Decimal (1.2e23), hexadecimal (0c1x)
28
+ 'number': /(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,
29
+ 'operator': /\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,
30
+ 'punctuation': /[$%@.(){}\[\];,\\]/
31
+ };
@@ -0,0 +1 @@
1
+ Prism.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,keyword:/\b(?:data|else|format|if|input|proc|run|then)\b/i,number:/(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/};
@@ -0,0 +1,73 @@
1
+ (function(Prism) {
2
+ Prism.languages.sass = Prism.languages.extend('css', {
3
+ // Sass comments don't need to be closed, only indented
4
+ 'comment': {
5
+ pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,
6
+ lookbehind: true
7
+ }
8
+ });
9
+
10
+ Prism.languages.insertBefore('sass', 'atrule', {
11
+ // We want to consume the whole line
12
+ 'atrule-line': {
13
+ // Includes support for = and + shortcuts
14
+ pattern: /^(?:[ \t]*)[@+=].+/m,
15
+ inside: {
16
+ 'atrule': /(?:@[\w-]+|[+=])/m
17
+ }
18
+ }
19
+ });
20
+ delete Prism.languages.sass.atrule;
21
+
22
+
23
+ var variable = /((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i;
24
+ var operator = [
25
+ /[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,
26
+ {
27
+ pattern: /(\s+)-(?=\s)/,
28
+ lookbehind: true
29
+ }
30
+ ];
31
+
32
+ Prism.languages.insertBefore('sass', 'property', {
33
+ // We want to consume the whole line
34
+ 'variable-line': {
35
+ pattern: /^[ \t]*\$.+/m,
36
+ inside: {
37
+ 'punctuation': /:/,
38
+ 'variable': variable,
39
+ 'operator': operator
40
+ }
41
+ },
42
+ // We want to consume the whole line
43
+ 'property-line': {
44
+ pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,
45
+ inside: {
46
+ 'property': [
47
+ /[^:\s]+(?=\s*:)/,
48
+ {
49
+ pattern: /(:)[^:\s]+/,
50
+ lookbehind: true
51
+ }
52
+ ],
53
+ 'punctuation': /:/,
54
+ 'variable': variable,
55
+ 'operator': operator,
56
+ 'important': Prism.languages.sass.important
57
+ }
58
+ }
59
+ });
60
+ delete Prism.languages.sass.property;
61
+ delete Prism.languages.sass.important;
62
+
63
+ // Now that whole lines for other patterns are consumed,
64
+ // what's left should be selectors
65
+ delete Prism.languages.sass.selector;
66
+ Prism.languages.insertBefore('sass', 'punctuation', {
67
+ 'selector': {
68
+ pattern: /([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,
69
+ lookbehind: true
70
+ }
71
+ });
72
+
73
+ }(Prism));
@@ -0,0 +1 @@
1
+ !function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var a=/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:a,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:a,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism);
@@ -0,0 +1,9 @@
1
+ Prism.languages.scala = Prism.languages.extend('java', {
2
+ 'keyword': /<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,
3
+ 'string': /"""[\W\w]*?"""|"(?:[^"\\\r\n]|\\.)*"|'(?:[^\\\r\n']|\\.[^\\']*)'/,
4
+ 'builtin': /\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,
5
+ 'number': /\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,
6
+ 'symbol': /'[^\d\s\\]\w*/
7
+ });
8
+ delete Prism.languages.scala['class-name'];
9
+ delete Prism.languages.scala['function'];
@@ -0,0 +1 @@
1
+ Prism.languages.scala=Prism.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:/"""[\W\w]*?"""|"(?:[^"\\\r\n]|\\.)*"|'(?:[^\\\r\n']|\\.[^\\']*)'/,builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,symbol:/'[^\d\s\\]\w*/}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala["function"];
@@ -0,0 +1,26 @@
1
+ Prism.languages.scheme = {
2
+ 'comment' : /;.*/,
3
+ 'string' : /"(?:[^"\\\r\n]|\\.)*?"|'[^('\s]*/,
4
+ 'keyword' : {
5
+ pattern : /(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,
6
+ lookbehind : true
7
+ },
8
+ 'builtin' : {
9
+ pattern : /(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,
10
+ lookbehind : true
11
+ },
12
+ 'number' : {
13
+ pattern: /(\s|\))[-+]?[0-9]*\.?[0-9]+(?:\s*[-+]\s*[0-9]*\.?[0-9]+i)?\b/,
14
+ lookbehind: true
15
+ },
16
+ 'boolean' : /#[tf]/,
17
+ 'operator': {
18
+ pattern: /(\()(?:[-+*%\/]|[<>]=?|=>?)/,
19
+ lookbehind: true
20
+ },
21
+ 'function' : {
22
+ pattern : /(\()[^\s()]*(?=\s)/,
23
+ lookbehind : true
24
+ },
25
+ 'punctuation' : /[()]/
26
+ };
@@ -0,0 +1 @@
1
+ Prism.languages.scheme={comment:/;.*/,string:/"(?:[^"\\\r\n]|\\.)*?"|'[^('\s]*/,keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,lookbehind:!0},number:{pattern:/(\s|\))[-+]?[0-9]*\.?[0-9]+(?:\s*[-+]\s*[0-9]*\.?[0-9]+i)?\b/,lookbehind:!0},"boolean":/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)/,lookbehind:!0},"function":{pattern:/(\()[^\s()]*(?=\s)/,lookbehind:!0},punctuation:/[()]/};
@@ -0,0 +1,60 @@
1
+ Prism.languages.scss = Prism.languages.extend('css', {
2
+ 'comment': {
3
+ pattern: /(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,
4
+ lookbehind: true
5
+ },
6
+ 'atrule': {
7
+ pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,
8
+ inside: {
9
+ 'rule': /@[\w-]+/
10
+ // See rest below
11
+ }
12
+ },
13
+ // url, compassified
14
+ 'url': /(?:[-a-z]+-)*url(?=\()/i,
15
+ // CSS selector regex is not appropriate for Sass
16
+ // since there can be lot more things (var, @ directive, nesting..)
17
+ // a selector must start at the end of a property or after a brace (end of other rules or nesting)
18
+ // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable
19
+ // the end of a selector is found when there is no rules in it ( {} or {\s}) or if there is a property (because an interpolated var
20
+ // can "pass" as a selector- e.g: proper#{$erty})
21
+ // this one was hard to do, so please be careful if you edit this one :)
22
+ 'selector': {
23
+ // Initial look-ahead is used to prevent matching of blank selectors
24
+ pattern: /(?=\S)[^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m,
25
+ inside: {
26
+ 'placeholder': /%[-_\w]+/
27
+ }
28
+ }
29
+ });
30
+
31
+ Prism.languages.insertBefore('scss', 'atrule', {
32
+ 'keyword': [
33
+ /@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,
34
+ {
35
+ pattern: /( +)(?:from|through)(?= )/,
36
+ lookbehind: true
37
+ }
38
+ ]
39
+ });
40
+
41
+ Prism.languages.insertBefore('scss', 'property', {
42
+ // var and interpolated vars
43
+ 'variable': /\$[-_\w]+|#\{\$[-_\w]+\}/
44
+ });
45
+
46
+ Prism.languages.insertBefore('scss', 'function', {
47
+ 'placeholder': {
48
+ pattern: /%[-_\w]+/,
49
+ alias: 'selector'
50
+ },
51
+ 'statement': /\B!(?:default|optional)\b/i,
52
+ 'boolean': /\b(?:true|false)\b/,
53
+ 'null': /\bnull\b/,
54
+ 'operator': {
55
+ pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,
56
+ lookbehind: true
57
+ }
58
+ });
59
+
60
+ Prism.languages.scss['atrule'].inside.rest = Prism.util.clone(Prism.languages.scss);
@@ -0,0 +1 @@
1
+ Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m,inside:{placeholder:/%[-_\w]+/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","property",{variable:/\$[-_\w]+|#\{\$[-_\w]+\}/}),Prism.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-_\w]+/,alias:"selector"},statement:/\B!(?:default|optional)\b/i,"boolean":/\b(?:true|false)\b/,"null":/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.util.clone(Prism.languages.scss);
@@ -0,0 +1,31 @@
1
+ Prism.languages.smalltalk = {
2
+ 'comment': /"(?:""|[^"])+"/,
3
+ 'string': /'(?:''|[^'])+'/,
4
+ 'symbol': /#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,
5
+ 'block-arguments': {
6
+ pattern: /(\[\s*):[^\[|]*?\|/,
7
+ lookbehind: true,
8
+ inside: {
9
+ 'variable': /:[\da-z]+/i,
10
+ 'punctuation': /\|/
11
+ }
12
+ },
13
+ 'temporary-variables': {
14
+ pattern: /\|[^|]+\|/,
15
+ inside: {
16
+ 'variable': /[\da-z]+/i,
17
+ 'punctuation': /\|/
18
+ }
19
+ },
20
+ 'keyword': /\b(?:nil|true|false|self|super|new)\b/,
21
+ 'character': {
22
+ pattern: /\$./,
23
+ alias: 'string'
24
+ },
25
+ 'number': [
26
+ /\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,
27
+ /(?:\B-|\b)\d+(?:\.\d+)?(?:e-?\d+)?/
28
+ ],
29
+ 'operator': /[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,
30
+ 'punctuation': /[.;:?\[\](){}]/
31
+ };
@@ -0,0 +1 @@
1
+ Prism.languages.smalltalk={comment:/"(?:""|[^"])+"/,string:/'(?:''|[^'])+'/,symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*?\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/(?:\B-|\b)\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/};
@@ -0,0 +1,127 @@
1
+ /* TODO
2
+ Add support for variables inside double quoted strings
3
+ Add support for {php}
4
+ */
5
+
6
+ (function(Prism) {
7
+
8
+ var smarty_pattern = /\{\*[\w\W]+?\*\}|\{[\w\W]+?\}/g;
9
+ var smarty_litteral_start = '{literal}';
10
+ var smarty_litteral_end = '{/literal}';
11
+ var smarty_litteral_mode = false;
12
+
13
+ Prism.languages.smarty = Prism.languages.extend('markup', {
14
+ 'smarty': {
15
+ pattern: smarty_pattern,
16
+ inside: {
17
+ 'delimiter': {
18
+ pattern: /^\{|\}$/i,
19
+ alias: 'punctuation'
20
+ },
21
+ 'string': /(["'])(?:\\?.)*?\1/,
22
+ 'number': /\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][-+]?\d+)?)\b/,
23
+ 'variable': [
24
+ /\$(?!\d)\w+/,
25
+ /#(?!\d)\w+#/,
26
+ {
27
+ pattern: /(\.|->)(?!\d)\w+/,
28
+ lookbehind: true
29
+ },
30
+ {
31
+ pattern: /(\[)(?!\d)\w+(?=\])/,
32
+ lookbehind: true
33
+ }
34
+ ],
35
+ 'function': [
36
+ {
37
+ pattern: /(\|\s*)@?(?!\d)\w+/,
38
+ lookbehind: true
39
+ },
40
+ /^\/?(?!\d)\w+/,
41
+ /(?!\d)\w+(?=\()/
42
+ ],
43
+ 'attr-name': {
44
+ // Value is made optional because it may have already been tokenized
45
+ pattern: /\w+\s*=\s*(?:(?!\d)\w+)?/,
46
+ inside: {
47
+ "variable": {
48
+ pattern: /(=\s*)(?!\d)\w+/,
49
+ lookbehind: true
50
+ },
51
+ "operator": /=/
52
+ }
53
+ },
54
+ 'punctuation': [
55
+ /[\[\]().,:`]|\->/
56
+ ],
57
+ 'operator': [
58
+ /[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,
59
+ /\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,
60
+ /\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/
61
+ ],
62
+ 'keyword': /\b(?:false|off|on|no|true|yes)\b/
63
+ }
64
+ }
65
+ });
66
+
67
+ // Comments are inserted at top so that they can
68
+ // surround markup
69
+ Prism.languages.insertBefore('smarty', 'tag', {
70
+ 'smarty-comment': {
71
+ pattern: /\{\*[\w\W]*?\*\}/,
72
+ alias: ['smarty','comment']
73
+ }
74
+ });
75
+
76
+ // Tokenize all inline Smarty expressions
77
+ Prism.hooks.add('before-highlight', function(env) {
78
+ if (env.language !== 'smarty') {
79
+ return;
80
+ }
81
+
82
+ env.tokenStack = [];
83
+
84
+ env.backupCode = env.code;
85
+ env.code = env.code.replace(smarty_pattern, function(match) {
86
+
87
+ // Smarty tags inside {literal} block are ignored
88
+ if(match === smarty_litteral_end) {
89
+ smarty_litteral_mode = false;
90
+ }
91
+
92
+ if(!smarty_litteral_mode) {
93
+ if(match === smarty_litteral_start) {
94
+ smarty_litteral_mode = true;
95
+ }
96
+ env.tokenStack.push(match);
97
+
98
+ return '___SMARTY' + env.tokenStack.length + '___';
99
+ }
100
+ return match;
101
+ });
102
+ });
103
+
104
+ // Restore env.code for other plugins (e.g. line-numbers)
105
+ Prism.hooks.add('before-insert', function(env) {
106
+ if (env.language === 'smarty') {
107
+ env.code = env.backupCode;
108
+ delete env.backupCode;
109
+ }
110
+ });
111
+
112
+ // Re-insert the tokens after highlighting
113
+ // and highlight them with defined grammar
114
+ Prism.hooks.add('after-highlight', function(env) {
115
+ if (env.language !== 'smarty') {
116
+ return;
117
+ }
118
+
119
+ for (var i = 0, t; t = env.tokenStack[i]; i++) {
120
+ // The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns
121
+ env.highlightedCode = env.highlightedCode.replace('___SMARTY' + (i + 1) + '___', Prism.highlight(t, env.grammar, 'smarty').replace(/\$/g, '$$$$'));
122
+ }
123
+
124
+ env.element.innerHTML = env.highlightedCode;
125
+ });
126
+
127
+ }(Prism));