prism-rails 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +7 -0
  2. data/lib/prism-rails.rb +8 -0
  3. data/lib/prism-rails/version.rb +3 -0
  4. data/vendor/assets/javascripts/prism-abap.min.js +1 -0
  5. data/vendor/assets/javascripts/prism-actionscript.min.js +1 -0
  6. data/vendor/assets/javascripts/prism-apacheconf.min.js +1 -0
  7. data/vendor/assets/javascripts/prism-apl.min.js +1 -0
  8. data/vendor/assets/javascripts/prism-applescript.min.js +1 -0
  9. data/vendor/assets/javascripts/prism-asciidoc.min.js +1 -0
  10. data/vendor/assets/javascripts/prism-aspnet.min.js +1 -0
  11. data/vendor/assets/javascripts/prism-autohotkey.min.js +1 -0
  12. data/vendor/assets/javascripts/prism-autoit.min.js +1 -0
  13. data/vendor/assets/javascripts/prism-autolinker.js +70 -0
  14. data/vendor/assets/javascripts/prism-autoloader.js +194 -0
  15. data/vendor/assets/javascripts/prism-bash.min.js +1 -0
  16. data/vendor/assets/javascripts/prism-basic.min.js +1 -0
  17. data/vendor/assets/javascripts/prism-batch.min.js +1 -0
  18. data/vendor/assets/javascripts/prism-bison.min.js +1 -0
  19. data/vendor/assets/javascripts/prism-brainfuck.min.js +1 -0
  20. data/vendor/assets/javascripts/prism-bro.min.js +1 -0
  21. data/vendor/assets/javascripts/prism-c.min.js +1 -0
  22. data/vendor/assets/javascripts/prism-clike.min.js +1 -0
  23. data/vendor/assets/javascripts/prism-coffeescript.min.js +1 -0
  24. data/vendor/assets/javascripts/prism-command-line.js +77 -0
  25. data/vendor/assets/javascripts/prism-core.min.js +1 -0
  26. data/vendor/assets/javascripts/prism-cpp.min.js +1 -0
  27. data/vendor/assets/javascripts/prism-crystal.min.js +1 -0
  28. data/vendor/assets/javascripts/prism-csharp.min.js +1 -0
  29. data/vendor/assets/javascripts/prism-css-extras.min.js +1 -0
  30. data/vendor/assets/javascripts/prism-css.min.js +1 -0
  31. data/vendor/assets/javascripts/prism-d.min.js +1 -0
  32. data/vendor/assets/javascripts/prism-dart.min.js +1 -0
  33. data/vendor/assets/javascripts/prism-diff.min.js +1 -0
  34. data/vendor/assets/javascripts/prism-docker.min.js +1 -0
  35. data/vendor/assets/javascripts/prism-eiffel.min.js +1 -0
  36. data/vendor/assets/javascripts/prism-elixir.min.js +1 -0
  37. data/vendor/assets/javascripts/prism-erlang.min.js +1 -0
  38. data/vendor/assets/javascripts/prism-file-highlight.js +77 -0
  39. data/vendor/assets/javascripts/prism-fortran.min.js +1 -0
  40. data/vendor/assets/javascripts/prism-fsharp.min.js +1 -0
  41. data/vendor/assets/javascripts/prism-gherkin.min.js +1 -0
  42. data/vendor/assets/javascripts/prism-git.min.js +1 -0
  43. data/vendor/assets/javascripts/prism-glsl.min.js +1 -0
  44. data/vendor/assets/javascripts/prism-go.min.js +1 -0
  45. data/vendor/assets/javascripts/prism-groovy.min.js +1 -0
  46. data/vendor/assets/javascripts/prism-haml.min.js +1 -0
  47. data/vendor/assets/javascripts/prism-handlebars.min.js +1 -0
  48. data/vendor/assets/javascripts/prism-haskell.min.js +1 -0
  49. data/vendor/assets/javascripts/prism-haxe.min.js +1 -0
  50. data/vendor/assets/javascripts/prism-highlight-keywords.js +17 -0
  51. data/vendor/assets/javascripts/prism-http.min.js +1 -0
  52. data/vendor/assets/javascripts/prism-icon.min.js +1 -0
  53. data/vendor/assets/javascripts/prism-ie8.js +42 -0
  54. data/vendor/assets/javascripts/prism-inform7.min.js +1 -0
  55. data/vendor/assets/javascripts/prism-ini.min.js +1 -0
  56. data/vendor/assets/javascripts/prism-j.min.js +1 -0
  57. data/vendor/assets/javascripts/prism-jade.min.js +1 -0
  58. data/vendor/assets/javascripts/prism-java.min.js +1 -0
  59. data/vendor/assets/javascripts/prism-javascript.min.js +1 -0
  60. data/vendor/assets/javascripts/prism-json.min.js +1 -0
  61. data/vendor/assets/javascripts/prism-jsonp-highlight.js +151 -0
  62. data/vendor/assets/javascripts/prism-jsx.min.js +1 -0
  63. data/vendor/assets/javascripts/prism-julia.min.js +1 -0
  64. data/vendor/assets/javascripts/prism-keep-markup.js +97 -0
  65. data/vendor/assets/javascripts/prism-keyman.min.js +1 -0
  66. data/vendor/assets/javascripts/prism-kotlin.min.js +1 -0
  67. data/vendor/assets/javascripts/prism-latex.min.js +1 -0
  68. data/vendor/assets/javascripts/prism-less.min.js +1 -0
  69. data/vendor/assets/javascripts/prism-line-highlight.js +132 -0
  70. data/vendor/assets/javascripts/prism-line-numbers.js +56 -0
  71. data/vendor/assets/javascripts/prism-lolcode.min.js +1 -0
  72. data/vendor/assets/javascripts/prism-lua.min.js +1 -0
  73. data/vendor/assets/javascripts/prism-makefile.min.js +1 -0
  74. data/vendor/assets/javascripts/prism-markdown.min.js +1 -0
  75. data/vendor/assets/javascripts/prism-markup.min.js +1 -0
  76. data/vendor/assets/javascripts/prism-matlab.min.js +1 -0
  77. data/vendor/assets/javascripts/prism-mel.min.js +1 -0
  78. data/vendor/assets/javascripts/prism-mizar.min.js +1 -0
  79. data/vendor/assets/javascripts/prism-monkey.min.js +1 -0
  80. data/vendor/assets/javascripts/prism-nasm.min.js +1 -0
  81. data/vendor/assets/javascripts/prism-nginx.min.js +1 -0
  82. data/vendor/assets/javascripts/prism-nim.min.js +1 -0
  83. data/vendor/assets/javascripts/prism-nix.min.js +1 -0
  84. data/vendor/assets/javascripts/prism-normalize-whitespace.js +170 -0
  85. data/vendor/assets/javascripts/prism-nsis.min.js +1 -0
  86. data/vendor/assets/javascripts/prism-objectivec.min.js +1 -0
  87. data/vendor/assets/javascripts/prism-ocaml.min.js +1 -0
  88. data/vendor/assets/javascripts/prism-oz.min.js +1 -0
  89. data/vendor/assets/javascripts/prism-parigp.min.js +1 -0
  90. data/vendor/assets/javascripts/prism-parser.min.js +1 -0
  91. data/vendor/assets/javascripts/prism-pascal.min.js +1 -0
  92. data/vendor/assets/javascripts/prism-perl.min.js +1 -0
  93. data/vendor/assets/javascripts/prism-php-extras.min.js +1 -0
  94. data/vendor/assets/javascripts/prism-php.min.js +1 -0
  95. data/vendor/assets/javascripts/prism-powershell.min.js +1 -0
  96. data/vendor/assets/javascripts/prism-previewer-angle.js +118 -0
  97. data/vendor/assets/javascripts/prism-previewer-base.js +201 -0
  98. data/vendor/assets/javascripts/prism-previewer-color.js +89 -0
  99. data/vendor/assets/javascripts/prism-previewer-easing.js +117 -0
  100. data/vendor/assets/javascripts/prism-previewer-gradient.js +216 -0
  101. data/vendor/assets/javascripts/prism-previewer-time.js +98 -0
  102. data/vendor/assets/javascripts/prism-processing.min.js +1 -0
  103. data/vendor/assets/javascripts/prism-prolog.min.js +1 -0
  104. data/vendor/assets/javascripts/prism-protobuf.min.js +1 -0
  105. data/vendor/assets/javascripts/prism-puppet.min.js +1 -0
  106. data/vendor/assets/javascripts/prism-pure.min.js +1 -0
  107. data/vendor/assets/javascripts/prism-python.min.js +1 -0
  108. data/vendor/assets/javascripts/prism-q.min.js +1 -0
  109. data/vendor/assets/javascripts/prism-qore.min.js +1 -0
  110. data/vendor/assets/javascripts/prism-r.min.js +1 -0
  111. data/vendor/assets/javascripts/prism-remove-initial-line-feed.js +21 -0
  112. data/vendor/assets/javascripts/prism-rest.min.js +1 -0
  113. data/vendor/assets/javascripts/prism-rip.min.js +1 -0
  114. data/vendor/assets/javascripts/prism-roboconf.min.js +1 -0
  115. data/vendor/assets/javascripts/prism-ruby.min.js +1 -0
  116. data/vendor/assets/javascripts/prism-rust.min.js +1 -0
  117. data/vendor/assets/javascripts/prism-sas.min.js +1 -0
  118. data/vendor/assets/javascripts/prism-sass.min.js +1 -0
  119. data/vendor/assets/javascripts/prism-scala.min.js +1 -0
  120. data/vendor/assets/javascripts/prism-scheme.min.js +1 -0
  121. data/vendor/assets/javascripts/prism-scss.min.js +1 -0
  122. data/vendor/assets/javascripts/prism-show-invisibles.js +19 -0
  123. data/vendor/assets/javascripts/prism-show-language.js +38 -0
  124. data/vendor/assets/javascripts/prism-smalltalk.min.js +1 -0
  125. data/vendor/assets/javascripts/prism-smarty.min.js +1 -0
  126. data/vendor/assets/javascripts/prism-sql.min.js +1 -0
  127. data/vendor/assets/javascripts/prism-stylus.min.js +1 -0
  128. data/vendor/assets/javascripts/prism-swift.min.js +1 -0
  129. data/vendor/assets/javascripts/prism-tcl.min.js +1 -0
  130. data/vendor/assets/javascripts/prism-textile.min.js +1 -0
  131. data/vendor/assets/javascripts/prism-twig.min.js +1 -0
  132. data/vendor/assets/javascripts/prism-typescript.min.js +1 -0
  133. data/vendor/assets/javascripts/prism-unescaped-markup.js +40 -0
  134. data/vendor/assets/javascripts/prism-verilog.min.js +1 -0
  135. data/vendor/assets/javascripts/prism-vhdl.min.js +1 -0
  136. data/vendor/assets/javascripts/prism-vim.min.js +1 -0
  137. data/vendor/assets/javascripts/prism-wiki.min.js +1 -0
  138. data/vendor/assets/javascripts/prism-wpd.js +166 -0
  139. data/vendor/assets/javascripts/prism-yaml.min.js +1 -0
  140. data/vendor/assets/javascripts/prism.js +776 -0
  141. data/vendor/assets/stylesheets/prism-atom-dark.css +146 -0
  142. data/vendor/assets/stylesheets/prism-autolinker.css +3 -0
  143. data/vendor/assets/stylesheets/prism-base16-ateliersulphurpool.light.css +152 -0
  144. data/vendor/assets/stylesheets/prism-cb.css +176 -0
  145. data/vendor/assets/stylesheets/prism-command-line.css +33 -0
  146. data/vendor/assets/stylesheets/prism-coy.css +235 -0
  147. data/vendor/assets/stylesheets/prism-dark.css +128 -0
  148. data/vendor/assets/stylesheets/prism-duotone-dark.css +149 -0
  149. data/vendor/assets/stylesheets/prism-duotone-earth.css +148 -0
  150. data/vendor/assets/stylesheets/prism-duotone-forest.css +148 -0
  151. data/vendor/assets/stylesheets/prism-duotone-light.css +148 -0
  152. data/vendor/assets/stylesheets/prism-duotone-sea.css +148 -0
  153. data/vendor/assets/stylesheets/prism-duotone-space.css +148 -0
  154. data/vendor/assets/stylesheets/prism-funky.css +116 -0
  155. data/vendor/assets/stylesheets/prism-ghcolors.css +119 -0
  156. data/vendor/assets/stylesheets/prism-hopscotch.css +124 -0
  157. data/vendor/assets/stylesheets/prism-ie8.css +3 -0
  158. data/vendor/assets/stylesheets/prism-line-highlight.css +47 -0
  159. data/vendor/assets/stylesheets/prism-line-numbers.css +40 -0
  160. data/vendor/assets/stylesheets/prism-okaidia.css +121 -0
  161. data/vendor/assets/stylesheets/prism-pojoaque.css +134 -0
  162. data/vendor/assets/stylesheets/prism-previewer-angle.css +32 -0
  163. data/vendor/assets/stylesheets/prism-previewer-base.css +76 -0
  164. data/vendor/assets/stylesheets/prism-previewer-color.css +9 -0
  165. data/vendor/assets/stylesheets/prism-previewer-easing.css +29 -0
  166. data/vendor/assets/stylesheets/prism-previewer-gradient.css +27 -0
  167. data/vendor/assets/stylesheets/prism-previewer-time.css +90 -0
  168. data/vendor/assets/stylesheets/prism-show-invisibles.css +33 -0
  169. data/vendor/assets/stylesheets/prism-show-language.css +29 -0
  170. data/vendor/assets/stylesheets/prism-solarizedlight.css +148 -0
  171. data/vendor/assets/stylesheets/prism-tomorrow.css +121 -0
  172. data/vendor/assets/stylesheets/prism-twilight.css +201 -0
  173. data/vendor/assets/stylesheets/prism-unescaped-markup.css +10 -0
  174. data/vendor/assets/stylesheets/prism-wpd.css +11 -0
  175. data/vendor/assets/stylesheets/prism-xonokai.css +164 -0
  176. data/vendor/assets/stylesheets/prism.css +137 -0
  177. metadata +276 -0
@@ -0,0 +1 @@
1
+ Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\3[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(\d{4}-\d\d?-\d\d?([tT]|[ \t]+)\d\d?:\d{2}:\d{2}(\.\d*)?[ \t]*(Z|[-+]\d\d?(:\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(:\d{2}(\.\d*)?)?)(?=[ \t]*($|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')(?=[ \t]*($|,|]|}))/m,lookbehind:!0},number:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)[+\-]?(0x[\da-f]+|0o[0-7]+|(\d+\.?\d*|\.?\d+)(e[\+\-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./};
@@ -0,0 +1,776 @@
1
+
2
+ /* **********************************************
3
+ Begin prism-core.js
4
+ ********************************************** */
5
+
6
+ var _self = (typeof window !== 'undefined')
7
+ ? window // if in browser
8
+ : (
9
+ (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
10
+ ? self // if in worker
11
+ : {} // if in node js
12
+ );
13
+
14
+ /**
15
+ * Prism: Lightweight, robust, elegant syntax highlighting
16
+ * MIT license http://www.opensource.org/licenses/mit-license.php/
17
+ * @author Lea Verou http://lea.verou.me
18
+ */
19
+
20
+ var Prism = (function(){
21
+
22
+ // Private helper vars
23
+ var lang = /\blang(?:uage)?-(\w+)\b/i;
24
+ var uniqueId = 0;
25
+
26
+ var _ = _self.Prism = {
27
+ util: {
28
+ encode: function (tokens) {
29
+ if (tokens instanceof Token) {
30
+ return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
31
+ } else if (_.util.type(tokens) === 'Array') {
32
+ return tokens.map(_.util.encode);
33
+ } else {
34
+ return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ');
35
+ }
36
+ },
37
+
38
+ type: function (o) {
39
+ return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
40
+ },
41
+
42
+ objId: function (obj) {
43
+ if (!obj['__id']) {
44
+ Object.defineProperty(obj, '__id', { value: ++uniqueId });
45
+ }
46
+ return obj['__id'];
47
+ },
48
+
49
+ // Deep clone a language definition (e.g. to extend it)
50
+ clone: function (o) {
51
+ var type = _.util.type(o);
52
+
53
+ switch (type) {
54
+ case 'Object':
55
+ var clone = {};
56
+
57
+ for (var key in o) {
58
+ if (o.hasOwnProperty(key)) {
59
+ clone[key] = _.util.clone(o[key]);
60
+ }
61
+ }
62
+
63
+ return clone;
64
+
65
+ case 'Array':
66
+ // Check for existence for IE8
67
+ return o.map && o.map(function(v) { return _.util.clone(v); });
68
+ }
69
+
70
+ return o;
71
+ }
72
+ },
73
+
74
+ languages: {
75
+ extend: function (id, redef) {
76
+ var lang = _.util.clone(_.languages[id]);
77
+
78
+ for (var key in redef) {
79
+ lang[key] = redef[key];
80
+ }
81
+
82
+ return lang;
83
+ },
84
+
85
+ /**
86
+ * Insert a token before another token in a language literal
87
+ * As this needs to recreate the object (we cannot actually insert before keys in object literals),
88
+ * we cannot just provide an object, we need anobject and a key.
89
+ * @param inside The key (or language id) of the parent
90
+ * @param before The key to insert before. If not provided, the function appends instead.
91
+ * @param insert Object with the key/value pairs to insert
92
+ * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
93
+ */
94
+ insertBefore: function (inside, before, insert, root) {
95
+ root = root || _.languages;
96
+ var grammar = root[inside];
97
+
98
+ if (arguments.length == 2) {
99
+ insert = arguments[1];
100
+
101
+ for (var newToken in insert) {
102
+ if (insert.hasOwnProperty(newToken)) {
103
+ grammar[newToken] = insert[newToken];
104
+ }
105
+ }
106
+
107
+ return grammar;
108
+ }
109
+
110
+ var ret = {};
111
+
112
+ for (var token in grammar) {
113
+
114
+ if (grammar.hasOwnProperty(token)) {
115
+
116
+ if (token == before) {
117
+
118
+ for (var newToken in insert) {
119
+
120
+ if (insert.hasOwnProperty(newToken)) {
121
+ ret[newToken] = insert[newToken];
122
+ }
123
+ }
124
+ }
125
+
126
+ ret[token] = grammar[token];
127
+ }
128
+ }
129
+
130
+ // Update references in other language definitions
131
+ _.languages.DFS(_.languages, function(key, value) {
132
+ if (value === root[inside] && key != inside) {
133
+ this[key] = ret;
134
+ }
135
+ });
136
+
137
+ return root[inside] = ret;
138
+ },
139
+
140
+ // Traverse a language definition with Depth First Search
141
+ DFS: function(o, callback, type, visited) {
142
+ visited = visited || {};
143
+ for (var i in o) {
144
+ if (o.hasOwnProperty(i)) {
145
+ callback.call(o, i, o[i], type || i);
146
+
147
+ if (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) {
148
+ visited[_.util.objId(o[i])] = true;
149
+ _.languages.DFS(o[i], callback, null, visited);
150
+ }
151
+ else if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) {
152
+ visited[_.util.objId(o[i])] = true;
153
+ _.languages.DFS(o[i], callback, i, visited);
154
+ }
155
+ }
156
+ }
157
+ }
158
+ },
159
+ plugins: {},
160
+
161
+ highlightAll: function(async, callback) {
162
+ var env = {
163
+ callback: callback,
164
+ selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
165
+ };
166
+
167
+ _.hooks.run("before-highlightall", env);
168
+
169
+ var elements = env.elements || document.querySelectorAll(env.selector);
170
+
171
+ for (var i=0, element; element = elements[i++];) {
172
+ _.highlightElement(element, async === true, env.callback);
173
+ }
174
+ },
175
+
176
+ highlightElement: function(element, async, callback) {
177
+ // Find language
178
+ var language, grammar, parent = element;
179
+
180
+ while (parent && !lang.test(parent.className)) {
181
+ parent = parent.parentNode;
182
+ }
183
+
184
+ if (parent) {
185
+ language = (parent.className.match(lang) || [,''])[1].toLowerCase();
186
+ grammar = _.languages[language];
187
+ }
188
+
189
+ // Set language on the element, if not present
190
+ element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
191
+
192
+ // Set language on the parent, for styling
193
+ parent = element.parentNode;
194
+
195
+ if (/pre/i.test(parent.nodeName)) {
196
+ parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
197
+ }
198
+
199
+ var code = element.textContent;
200
+
201
+ var env = {
202
+ element: element,
203
+ language: language,
204
+ grammar: grammar,
205
+ code: code
206
+ };
207
+
208
+ _.hooks.run('before-sanity-check', env);
209
+
210
+ if (!env.code || !env.grammar) {
211
+ _.hooks.run('complete', env);
212
+ return;
213
+ }
214
+
215
+ _.hooks.run('before-highlight', env);
216
+
217
+ if (async && _self.Worker) {
218
+ var worker = new Worker(_.filename);
219
+
220
+ worker.onmessage = function(evt) {
221
+ env.highlightedCode = evt.data;
222
+
223
+ _.hooks.run('before-insert', env);
224
+
225
+ env.element.innerHTML = env.highlightedCode;
226
+
227
+ callback && callback.call(env.element);
228
+ _.hooks.run('after-highlight', env);
229
+ _.hooks.run('complete', env);
230
+ };
231
+
232
+ worker.postMessage(JSON.stringify({
233
+ language: env.language,
234
+ code: env.code,
235
+ immediateClose: true
236
+ }));
237
+ }
238
+ else {
239
+ env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
240
+
241
+ _.hooks.run('before-insert', env);
242
+
243
+ env.element.innerHTML = env.highlightedCode;
244
+
245
+ callback && callback.call(element);
246
+
247
+ _.hooks.run('after-highlight', env);
248
+ _.hooks.run('complete', env);
249
+ }
250
+ },
251
+
252
+ highlight: function (text, grammar, language) {
253
+ var tokens = _.tokenize(text, grammar);
254
+ return Token.stringify(_.util.encode(tokens), language);
255
+ },
256
+
257
+ tokenize: function(text, grammar, language) {
258
+ var Token = _.Token;
259
+
260
+ var strarr = [text];
261
+
262
+ var rest = grammar.rest;
263
+
264
+ if (rest) {
265
+ for (var token in rest) {
266
+ grammar[token] = rest[token];
267
+ }
268
+
269
+ delete grammar.rest;
270
+ }
271
+
272
+ tokenloop: for (var token in grammar) {
273
+ if(!grammar.hasOwnProperty(token) || !grammar[token]) {
274
+ continue;
275
+ }
276
+
277
+ var patterns = grammar[token];
278
+ patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns];
279
+
280
+ for (var j = 0; j < patterns.length; ++j) {
281
+ var pattern = patterns[j],
282
+ inside = pattern.inside,
283
+ lookbehind = !!pattern.lookbehind,
284
+ greedy = !!pattern.greedy,
285
+ lookbehindLength = 0,
286
+ alias = pattern.alias;
287
+
288
+ pattern = pattern.pattern || pattern;
289
+
290
+ for (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop
291
+
292
+ var str = strarr[i];
293
+
294
+ if (strarr.length > text.length) {
295
+ // Something went terribly wrong, ABORT, ABORT!
296
+ break tokenloop;
297
+ }
298
+
299
+ if (str instanceof Token) {
300
+ continue;
301
+ }
302
+
303
+ pattern.lastIndex = 0;
304
+
305
+ var match = pattern.exec(str),
306
+ delNum = 1;
307
+
308
+ // Greedy patterns can override/remove up to two previously matched tokens
309
+ if (!match && greedy && i != strarr.length - 1) {
310
+ // Reconstruct the original text using the next two tokens
311
+ var nextToken = strarr[i + 1].matchedStr || strarr[i + 1],
312
+ combStr = str + nextToken;
313
+
314
+ if (i < strarr.length - 2) {
315
+ combStr += strarr[i + 2].matchedStr || strarr[i + 2];
316
+ }
317
+
318
+ // Try the pattern again on the reconstructed text
319
+ pattern.lastIndex = 0;
320
+ match = pattern.exec(combStr);
321
+ if (!match) {
322
+ continue;
323
+ }
324
+
325
+ var from = match.index + (lookbehind ? match[1].length : 0);
326
+ // To be a valid candidate, the new match has to start inside of str
327
+ if (from >= str.length) {
328
+ continue;
329
+ }
330
+ var to = match.index + match[0].length,
331
+ len = str.length + nextToken.length;
332
+
333
+ // Number of tokens to delete and replace with the new match
334
+ delNum = 3;
335
+
336
+ if (to <= len) {
337
+ if (strarr[i + 1].greedy) {
338
+ continue;
339
+ }
340
+ delNum = 2;
341
+ combStr = combStr.slice(0, len);
342
+ }
343
+ str = combStr;
344
+ }
345
+
346
+ if (!match) {
347
+ continue;
348
+ }
349
+
350
+ if(lookbehind) {
351
+ lookbehindLength = match[1].length;
352
+ }
353
+
354
+ var from = match.index + lookbehindLength,
355
+ match = match[0].slice(lookbehindLength),
356
+ to = from + match.length,
357
+ before = str.slice(0, from),
358
+ after = str.slice(to);
359
+
360
+ var args = [i, delNum];
361
+
362
+ if (before) {
363
+ args.push(before);
364
+ }
365
+
366
+ var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);
367
+
368
+ args.push(wrapped);
369
+
370
+ if (after) {
371
+ args.push(after);
372
+ }
373
+
374
+ Array.prototype.splice.apply(strarr, args);
375
+ }
376
+ }
377
+ }
378
+
379
+ return strarr;
380
+ },
381
+
382
+ hooks: {
383
+ all: {},
384
+
385
+ add: function (name, callback) {
386
+ var hooks = _.hooks.all;
387
+
388
+ hooks[name] = hooks[name] || [];
389
+
390
+ hooks[name].push(callback);
391
+ },
392
+
393
+ run: function (name, env) {
394
+ var callbacks = _.hooks.all[name];
395
+
396
+ if (!callbacks || !callbacks.length) {
397
+ return;
398
+ }
399
+
400
+ for (var i=0, callback; callback = callbacks[i++];) {
401
+ callback(env);
402
+ }
403
+ }
404
+ }
405
+ };
406
+
407
+ var Token = _.Token = function(type, content, alias, matchedStr, greedy) {
408
+ this.type = type;
409
+ this.content = content;
410
+ this.alias = alias;
411
+ // Copy of the full string this token was created from
412
+ this.matchedStr = matchedStr || null;
413
+ this.greedy = !!greedy;
414
+ };
415
+
416
+ Token.stringify = function(o, language, parent) {
417
+ if (typeof o == 'string') {
418
+ return o;
419
+ }
420
+
421
+ if (_.util.type(o) === 'Array') {
422
+ return o.map(function(element) {
423
+ return Token.stringify(element, language, o);
424
+ }).join('');
425
+ }
426
+
427
+ var env = {
428
+ type: o.type,
429
+ content: Token.stringify(o.content, language, parent),
430
+ tag: 'span',
431
+ classes: ['token', o.type],
432
+ attributes: {},
433
+ language: language,
434
+ parent: parent
435
+ };
436
+
437
+ if (env.type == 'comment') {
438
+ env.attributes['spellcheck'] = 'true';
439
+ }
440
+
441
+ if (o.alias) {
442
+ var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
443
+ Array.prototype.push.apply(env.classes, aliases);
444
+ }
445
+
446
+ _.hooks.run('wrap', env);
447
+
448
+ var attributes = '';
449
+
450
+ for (var name in env.attributes) {
451
+ attributes += (attributes ? ' ' : '') + name + '="' + (env.attributes[name] || '') + '"';
452
+ }
453
+
454
+ return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>';
455
+
456
+ };
457
+
458
+ if (!_self.document) {
459
+ if (!_self.addEventListener) {
460
+ // in Node.js
461
+ return _self.Prism;
462
+ }
463
+ // In worker
464
+ _self.addEventListener('message', function(evt) {
465
+ var message = JSON.parse(evt.data),
466
+ lang = message.language,
467
+ code = message.code,
468
+ immediateClose = message.immediateClose;
469
+
470
+ _self.postMessage(_.highlight(code, _.languages[lang], lang));
471
+ if (immediateClose) {
472
+ _self.close();
473
+ }
474
+ }, false);
475
+
476
+ return _self.Prism;
477
+ }
478
+
479
+ //Get current script and highlight
480
+ var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
481
+
482
+ if (script) {
483
+ _.filename = script.src;
484
+
485
+ if (document.addEventListener && !script.hasAttribute('data-manual')) {
486
+ document.addEventListener('DOMContentLoaded', _.highlightAll);
487
+ }
488
+ }
489
+
490
+ return _self.Prism;
491
+
492
+ })();
493
+
494
+ if (typeof module !== 'undefined' && module.exports) {
495
+ module.exports = Prism;
496
+ }
497
+
498
+ // hack for components to work correctly in node.js
499
+ if (typeof global !== 'undefined') {
500
+ global.Prism = Prism;
501
+ }
502
+
503
+
504
+ /* **********************************************
505
+ Begin prism-markup.js
506
+ ********************************************** */
507
+
508
+ Prism.languages.markup = {
509
+ 'comment': /<!--[\w\W]*?-->/,
510
+ 'prolog': /<\?[\w\W]+?\?>/,
511
+ 'doctype': /<!DOCTYPE[\w\W]+?>/,
512
+ 'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
513
+ 'tag': {
514
+ pattern: /<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
515
+ inside: {
516
+ 'tag': {
517
+ pattern: /^<\/?[^\s>\/]+/i,
518
+ inside: {
519
+ 'punctuation': /^<\/?/,
520
+ 'namespace': /^[^\s>\/:]+:/
521
+ }
522
+ },
523
+ 'attr-value': {
524
+ pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
525
+ inside: {
526
+ 'punctuation': /[=>"']/
527
+ }
528
+ },
529
+ 'punctuation': /\/?>/,
530
+ 'attr-name': {
531
+ pattern: /[^\s>\/]+/,
532
+ inside: {
533
+ 'namespace': /^[^\s>\/:]+:/
534
+ }
535
+ }
536
+
537
+ }
538
+ },
539
+ 'entity': /&#?[\da-z]{1,8};/i
540
+ };
541
+
542
+ // Plugin to make entity title show the real entity, idea by Roman Komarov
543
+ Prism.hooks.add('wrap', function(env) {
544
+
545
+ if (env.type === 'entity') {
546
+ env.attributes['title'] = env.content.replace(/&amp;/, '&');
547
+ }
548
+ });
549
+
550
+ Prism.languages.xml = Prism.languages.markup;
551
+ Prism.languages.html = Prism.languages.markup;
552
+ Prism.languages.mathml = Prism.languages.markup;
553
+ Prism.languages.svg = Prism.languages.markup;
554
+
555
+
556
+ /* **********************************************
557
+ Begin prism-css.js
558
+ ********************************************** */
559
+
560
+ Prism.languages.css = {
561
+ 'comment': /\/\*[\w\W]*?\*\//,
562
+ 'atrule': {
563
+ pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
564
+ inside: {
565
+ 'rule': /@[\w-]+/
566
+ // See rest below
567
+ }
568
+ },
569
+ 'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
570
+ 'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
571
+ 'string': /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
572
+ 'property': /(\b|\B)[\w-]+(?=\s*:)/i,
573
+ 'important': /\B!important\b/i,
574
+ 'function': /[-a-z0-9]+(?=\()/i,
575
+ 'punctuation': /[(){};:]/
576
+ };
577
+
578
+ Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
579
+
580
+ if (Prism.languages.markup) {
581
+ Prism.languages.insertBefore('markup', 'tag', {
582
+ 'style': {
583
+ pattern: /(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,
584
+ lookbehind: true,
585
+ inside: Prism.languages.css,
586
+ alias: 'language-css'
587
+ }
588
+ });
589
+
590
+ Prism.languages.insertBefore('inside', 'attr-value', {
591
+ 'style-attr': {
592
+ pattern: /\s*style=("|').*?\1/i,
593
+ inside: {
594
+ 'attr-name': {
595
+ pattern: /^\s*style/i,
596
+ inside: Prism.languages.markup.tag.inside
597
+ },
598
+ 'punctuation': /^\s*=\s*['"]|['"]\s*$/,
599
+ 'attr-value': {
600
+ pattern: /.+/i,
601
+ inside: Prism.languages.css
602
+ }
603
+ },
604
+ alias: 'language-css'
605
+ }
606
+ }, Prism.languages.markup.tag);
607
+ }
608
+
609
+ /* **********************************************
610
+ Begin prism-clike.js
611
+ ********************************************** */
612
+
613
+ Prism.languages.clike = {
614
+ 'comment': [
615
+ {
616
+ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
617
+ lookbehind: true
618
+ },
619
+ {
620
+ pattern: /(^|[^\\:])\/\/.*/,
621
+ lookbehind: true
622
+ }
623
+ ],
624
+ 'string': {
625
+ pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
626
+ greedy: true
627
+ },
628
+ 'class-name': {
629
+ pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
630
+ lookbehind: true,
631
+ inside: {
632
+ punctuation: /(\.|\\)/
633
+ }
634
+ },
635
+ 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
636
+ 'boolean': /\b(true|false)\b/,
637
+ 'function': /[a-z0-9_]+(?=\()/i,
638
+ 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
639
+ 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
640
+ 'punctuation': /[{}[\];(),.:]/
641
+ };
642
+
643
+
644
+ /* **********************************************
645
+ Begin prism-javascript.js
646
+ ********************************************** */
647
+
648
+ Prism.languages.javascript = Prism.languages.extend('clike', {
649
+ 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,
650
+ 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
651
+ // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
652
+ 'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i
653
+ });
654
+
655
+ Prism.languages.insertBefore('javascript', 'keyword', {
656
+ 'regex': {
657
+ pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
658
+ lookbehind: true,
659
+ greedy: true
660
+ }
661
+ });
662
+
663
+ Prism.languages.insertBefore('javascript', 'class-name', {
664
+ 'template-string': {
665
+ pattern: /`(?:\\\\|\\?[^\\])*?`/,
666
+ greedy: true,
667
+ inside: {
668
+ 'interpolation': {
669
+ pattern: /\$\{[^}]+\}/,
670
+ inside: {
671
+ 'interpolation-punctuation': {
672
+ pattern: /^\$\{|\}$/,
673
+ alias: 'punctuation'
674
+ },
675
+ rest: Prism.languages.javascript
676
+ }
677
+ },
678
+ 'string': /[\s\S]+/
679
+ }
680
+ }
681
+ });
682
+
683
+ if (Prism.languages.markup) {
684
+ Prism.languages.insertBefore('markup', 'tag', {
685
+ 'script': {
686
+ pattern: /(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,
687
+ lookbehind: true,
688
+ inside: Prism.languages.javascript,
689
+ alias: 'language-javascript'
690
+ }
691
+ });
692
+ }
693
+
694
+ Prism.languages.js = Prism.languages.javascript;
695
+
696
+ /* **********************************************
697
+ Begin prism-file-highlight.js
698
+ ********************************************** */
699
+
700
+ (function () {
701
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
702
+ return;
703
+ }
704
+
705
+ self.Prism.fileHighlight = function() {
706
+
707
+ var Extensions = {
708
+ 'js': 'javascript',
709
+ 'py': 'python',
710
+ 'rb': 'ruby',
711
+ 'ps1': 'powershell',
712
+ 'psm1': 'powershell',
713
+ 'sh': 'bash',
714
+ 'bat': 'batch',
715
+ 'h': 'c',
716
+ 'tex': 'latex'
717
+ };
718
+
719
+ if(Array.prototype.forEach) { // Check to prevent error in IE8
720
+ Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
721
+ var src = pre.getAttribute('data-src');
722
+
723
+ var language, parent = pre;
724
+ var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
725
+ while (parent && !lang.test(parent.className)) {
726
+ parent = parent.parentNode;
727
+ }
728
+
729
+ if (parent) {
730
+ language = (pre.className.match(lang) || [, ''])[1];
731
+ }
732
+
733
+ if (!language) {
734
+ var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
735
+ language = Extensions[extension] || extension;
736
+ }
737
+
738
+ var code = document.createElement('code');
739
+ code.className = 'language-' + language;
740
+
741
+ pre.textContent = '';
742
+
743
+ code.textContent = 'Loading…';
744
+
745
+ pre.appendChild(code);
746
+
747
+ var xhr = new XMLHttpRequest();
748
+
749
+ xhr.open('GET', src, true);
750
+
751
+ xhr.onreadystatechange = function () {
752
+ if (xhr.readyState == 4) {
753
+
754
+ if (xhr.status < 400 && xhr.responseText) {
755
+ code.textContent = xhr.responseText;
756
+
757
+ Prism.highlightElement(code);
758
+ }
759
+ else if (xhr.status >= 400) {
760
+ code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
761
+ }
762
+ else {
763
+ code.textContent = '✖ Error: File does not exist or is empty';
764
+ }
765
+ }
766
+ };
767
+
768
+ xhr.send(null);
769
+ });
770
+ }
771
+
772
+ };
773
+
774
+ document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
775
+
776
+ })();