highlight_js-rails 0.0.2 → 7.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS.en.txt +20 -2
- data/AUTHORS.ru.txt +20 -2
- data/classref.txt +122 -6
- data/lib/highlight_js/version.rb +1 -1
- data/vendor/assets/images/highlight_js/pojoaque.jpg +0 -0
- data/vendor/assets/javascripts/highlight_js/highlight.js +116 -80
- data/vendor/assets/javascripts/highlight_js/languages/1c.js +34 -8
- data/vendor/assets/javascripts/highlight_js/languages/actionscript.js +85 -0
- data/vendor/assets/javascripts/highlight_js/languages/apache.js +96 -409
- data/vendor/assets/javascripts/highlight_js/languages/avrasm.js +53 -66
- data/vendor/assets/javascripts/highlight_js/languages/axapta.js +41 -38
- data/vendor/assets/javascripts/highlight_js/languages/bash.js +19 -16
- data/vendor/assets/javascripts/highlight_js/languages/clojure.js +105 -0
- data/vendor/assets/javascripts/highlight_js/languages/cmake.js +33 -17
- data/vendor/assets/javascripts/highlight_js/languages/coffeescript.js +112 -0
- data/vendor/assets/javascripts/highlight_js/languages/cpp.js +26 -37
- data/vendor/assets/javascripts/highlight_js/languages/cs.js +46 -34
- data/vendor/assets/javascripts/highlight_js/languages/css.js +6 -9
- data/vendor/assets/javascripts/highlight_js/languages/d.js +269 -0
- data/vendor/assets/javascripts/highlight_js/languages/delphi.js +20 -11
- data/vendor/assets/javascripts/highlight_js/languages/diff.js +60 -58
- data/vendor/assets/javascripts/highlight_js/languages/django.js +23 -5
- data/vendor/assets/javascripts/highlight_js/languages/dos.js +31 -23
- data/vendor/assets/javascripts/highlight_js/languages/erlang-repl.js +52 -76
- data/vendor/assets/javascripts/highlight_js/languages/erlang.js +27 -64
- data/vendor/assets/javascripts/highlight_js/languages/glsl.js +101 -0
- data/vendor/assets/javascripts/highlight_js/languages/go.js +14 -25
- data/vendor/assets/javascripts/highlight_js/languages/haskell.js +34 -21
- data/vendor/assets/javascripts/highlight_js/languages/http.js +41 -0
- data/vendor/assets/javascripts/highlight_js/languages/ini.js +30 -28
- data/vendor/assets/javascripts/highlight_js/languages/java.js +46 -40
- data/vendor/assets/javascripts/highlight_js/languages/javascript.js +55 -49
- data/vendor/assets/javascripts/highlight_js/languages/json.js +44 -0
- data/vendor/assets/javascripts/highlight_js/languages/lisp.js +27 -26
- data/vendor/assets/javascripts/highlight_js/languages/lua.js +31 -39
- data/vendor/assets/javascripts/highlight_js/languages/markdown.js +87 -0
- data/vendor/assets/javascripts/highlight_js/languages/matlab.js +64 -0
- data/vendor/assets/javascripts/highlight_js/languages/mel.js +232 -34
- data/vendor/assets/javascripts/highlight_js/languages/nginx.js +85 -207
- data/vendor/assets/javascripts/highlight_js/languages/objectivec.js +33 -37
- data/vendor/assets/javascripts/highlight_js/languages/parser3.js +10 -10
- data/vendor/assets/javascripts/highlight_js/languages/perl.js +50 -22
- data/vendor/assets/javascripts/highlight_js/languages/php.js +106 -49
- data/vendor/assets/javascripts/highlight_js/languages/profile.js +44 -42
- data/vendor/assets/javascripts/highlight_js/languages/python.js +59 -46
- data/vendor/assets/javascripts/highlight_js/languages/r.js +82 -0
- data/vendor/assets/javascripts/highlight_js/languages/rib.js +34 -0
- data/vendor/assets/javascripts/highlight_js/languages/rsl.js +46 -0
- data/vendor/assets/javascripts/highlight_js/languages/ruby.js +96 -107
- data/vendor/assets/javascripts/highlight_js/languages/rust.js +62 -0
- data/vendor/assets/javascripts/highlight_js/languages/scala.js +10 -7
- data/vendor/assets/javascripts/highlight_js/languages/smalltalk.js +3 -3
- data/vendor/assets/javascripts/highlight_js/languages/sql.js +61 -85
- data/vendor/assets/javascripts/highlight_js/languages/tex.js +4 -6
- data/vendor/assets/javascripts/highlight_js/languages/vala.js +62 -68
- data/vendor/assets/javascripts/highlight_js/languages/vbscript.js +41 -23
- data/vendor/assets/javascripts/highlight_js/languages/vhdl.js +45 -24
- data/vendor/assets/javascripts/highlight_js/languages/xml.js +13 -9
- data/vendor/assets/stylesheets/highlight_js/arta.css +15 -11
- data/vendor/assets/stylesheets/highlight_js/ascetic.css +8 -3
- data/vendor/assets/stylesheets/highlight_js/{brown_paper.css.erb → brown_paper.scss} +11 -14
- data/vendor/assets/stylesheets/highlight_js/dark.css +10 -12
- data/vendor/assets/stylesheets/highlight_js/default.css +27 -16
- data/vendor/assets/stylesheets/highlight_js/far.css +14 -21
- data/vendor/assets/stylesheets/highlight_js/github.css +14 -12
- data/vendor/assets/stylesheets/highlight_js/googlecode.css +144 -0
- data/vendor/assets/stylesheets/highlight_js/idea.css +7 -4
- data/vendor/assets/stylesheets/highlight_js/ir_black.css +9 -14
- data/vendor/assets/stylesheets/highlight_js/magula.css +8 -7
- data/vendor/assets/stylesheets/highlight_js/monokai.css +112 -0
- data/vendor/assets/stylesheets/highlight_js/pojoaque.scss +104 -0
- data/vendor/assets/stylesheets/highlight_js/rainbow.css +114 -0
- data/vendor/assets/stylesheets/highlight_js/{school_book.css.erb → school_book.scss} +11 -13
- data/vendor/assets/stylesheets/highlight_js/solarized_dark.css +10 -18
- data/vendor/assets/stylesheets/highlight_js/solarized_light.css +10 -18
- data/vendor/assets/stylesheets/highlight_js/sunburst.css +8 -7
- data/vendor/assets/stylesheets/highlight_js/tomorrow-night-blue.css +42 -0
- data/vendor/assets/stylesheets/highlight_js/tomorrow-night-bright.css +41 -0
- data/vendor/assets/stylesheets/highlight_js/tomorrow-night-eighties.css +41 -0
- data/vendor/assets/stylesheets/highlight_js/tomorrow-night.css +42 -0
- data/vendor/assets/stylesheets/highlight_js/tomorrow.css +39 -0
- data/vendor/assets/stylesheets/highlight_js/vs.css +8 -7
- data/vendor/assets/stylesheets/highlight_js/xcode.css +154 -0
- data/vendor/assets/stylesheets/highlight_js/zenburn.css +9 -11
- metadata +42 -8
- data/vendor/assets/javascripts/highlight_js/languages/renderman.js +0 -230
data/AUTHORS.en.txt
CHANGED
@@ -21,7 +21,7 @@ Contributors:
|
|
21
21
|
- MajestiC <majestic2k@gmail.com>
|
22
22
|
- Vasily Polovnyov <vast@whiteants.net>
|
23
23
|
- Vladimir Epifanov <voldmar@voldmar.ru>
|
24
|
-
- Alexander Makarov
|
24
|
+
- Alexander Makarov <sam@rmcreative.ru>
|
25
25
|
- Vah <vahtenberg@gmail.com>
|
26
26
|
- Shuen-Huei Guan <drake.guan@gmail.com>
|
27
27
|
- Jason Diamond <jason@diamond.name>
|
@@ -35,7 +35,7 @@ Contributors:
|
|
35
35
|
- Vladimir Moskva <vladmos@gmail.com>
|
36
36
|
- Loren Segal <lsegal@soen.ca>
|
37
37
|
- Andrew Fedorov <dmmdrs@mail.ru>
|
38
|
-
- Igor Kalnitsky <igor
|
38
|
+
- Igor Kalnitsky <igor@kalnitsky.org>
|
39
39
|
- Jeremy Hull <sourdrums@gmail.com>
|
40
40
|
- Valerii Hiora <valerii.hiora@gmail.com>
|
41
41
|
- Nikolay Zakharov <nikolay.desh@gmail.com>
|
@@ -44,3 +44,21 @@ Contributors:
|
|
44
44
|
- Antono Vasiljev <self@antono.info>
|
45
45
|
- Stephan Kountso <steplg@gmail.com>
|
46
46
|
- pumbur <pumbur@pumbur.net>
|
47
|
+
- John Crepezzi <john.crepezzi@gmail.com>
|
48
|
+
- Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>
|
49
|
+
- Alexander Myadzel <myadzel@gmail.com>
|
50
|
+
- Evgeny Stepanischev <imbolk@gmail.com>
|
51
|
+
- Dmytrii Nagirniak <dnagir@gmail.com>
|
52
|
+
- Oleg Efimov <efimovov@gmail.com>
|
53
|
+
- Luigi Maselli <grigio.org@gmail.com>
|
54
|
+
- Denis Bardadym <bardadymchik@gmail.com>
|
55
|
+
- Aahan Krish <geekpanth3r@gmail.com>
|
56
|
+
- Ilya Baryshev <baryshev@gmail.com>
|
57
|
+
- Aleksandar Ruzicic <aleksandar@ruzicic.info>
|
58
|
+
- Joe Cheng <joe@rstudio.org>
|
59
|
+
- Angel G. Olloqui <angelgarcia.mail@gmail.com>
|
60
|
+
- Jason Tate <adminz@web-cms-designs.com>
|
61
|
+
- Sergey Tikhomirov <me@stikhomirov.com>
|
62
|
+
- Marc Fornos <marc.fornos@gmail.com>
|
63
|
+
- Yoshihide Jimbo <yjimbo@gmail.com>
|
64
|
+
- Casey Duncan <casey.duncan@gmail.com>
|
data/AUTHORS.ru.txt
CHANGED
@@ -21,7 +21,7 @@ URL: http://softwaremaniacs.org/soft/highlight/
|
|
21
21
|
- MajestiC <majestic2k@gmail.com>
|
22
22
|
- Василий Половнёв <vast@whiteants.net>
|
23
23
|
- Владимир Епифанов <voldmar@voldmar.ru>
|
24
|
-
- Александр Макаров
|
24
|
+
- Александр Макаров <sam@rmcreative.ru>
|
25
25
|
- Vah <vahtenberg@gmail.com>
|
26
26
|
- Шуэн-Хуэй Гуан <drake.guan@gmail.com>
|
27
27
|
- Джейсон Даймонд <jason@diamond.name>
|
@@ -35,7 +35,7 @@ URL: http://softwaremaniacs.org/soft/highlight/
|
|
35
35
|
- Владимир Москва <vladmos@gmail.com>
|
36
36
|
- Лорен Сегал <lsegal@soen.ca>
|
37
37
|
- Андрей Фёдоров <dmmdrs@mail.ru>
|
38
|
-
- Игорь Кальницкий <igor
|
38
|
+
- Игорь Кальницкий <igor@kalnitsky.org>
|
39
39
|
- Джереми Халл <sourdrums@gmail.com>
|
40
40
|
- Валерий Хиора <valerii.hiora@gmail.com>
|
41
41
|
- Николай Захаров <nikolay.desh@gmail.com>
|
@@ -44,3 +44,21 @@ URL: http://softwaremaniacs.org/soft/highlight/
|
|
44
44
|
- Антоно Васильев <self@antono.info>
|
45
45
|
- Степан Кунцьо <steplg@gmail.com>
|
46
46
|
- pumbur <pumbur@pumbur.net>
|
47
|
+
- Джон Крепецци <john.crepezzi@gmail.com>
|
48
|
+
- Андрей Власовских <andrey.vlasovskikh@gmail.com>
|
49
|
+
- Александр Мядзель <myadzel@gmail.com>
|
50
|
+
- Евгений Степанищев <imbolk@gmail.com>
|
51
|
+
- Дмитрий Нагирняк <dnagir@gmail.com>
|
52
|
+
- Олег Ефимов <efimovov@gmail.com>
|
53
|
+
- Луиджи Мазелли <grigio.org@gmail.com>
|
54
|
+
- Денис Бардадым <bardadymchik@gmail.com>
|
55
|
+
- Аахан Криш <geekpanth3r@gmail.com>
|
56
|
+
- Илья Барышев <baryshev@gmail.com>
|
57
|
+
- Александр Ружичич <aleksandar@ruzicic.info>
|
58
|
+
- Джо Ченг <joe@rstudio.org>
|
59
|
+
- Анхель Ойоки <angelgarcia.mail@gmail.com>
|
60
|
+
- Джейсон Тейт <adminz@web-cms-designs.com>
|
61
|
+
- Сергей Тихомиров <me@stikhomirov.com>
|
62
|
+
- Марк Форнос <marc.fornos@gmail.com>
|
63
|
+
- Йошихиде Джимбо <yjimbo@gmail.com>
|
64
|
+
- Кейси Данкан <casey.duncan@gmail.com>
|
data/classref.txt
CHANGED
@@ -39,7 +39,6 @@ Ruby ("ruby"):
|
|
39
39
|
title name of a function or a class inside a header
|
40
40
|
parent name of a parent class
|
41
41
|
symbol symbol
|
42
|
-
instancevar instance variable
|
43
42
|
|
44
43
|
Perl ("perl"):
|
45
44
|
|
@@ -124,6 +123,18 @@ CSS ("css"):
|
|
124
123
|
params everything between "(" and ")" within a function
|
125
124
|
important "!important" symbol
|
126
125
|
|
126
|
+
Markdown ("markdown"):
|
127
|
+
|
128
|
+
header header
|
129
|
+
bullet list bullet
|
130
|
+
emphasis emphasis
|
131
|
+
strong strong emphasis
|
132
|
+
blockquote blockquote
|
133
|
+
code code
|
134
|
+
horizontal_rule horizontal rule
|
135
|
+
link_label link label
|
136
|
+
link_url link url
|
137
|
+
|
127
138
|
Django ("django"):
|
128
139
|
|
129
140
|
keyword HTML tag in HTML, default tags and default filters in templates
|
@@ -138,7 +149,15 @@ Django ("django"):
|
|
138
149
|
filter filter from "|" till the next filter or the end of tag
|
139
150
|
argument filter argument
|
140
151
|
|
141
|
-
|
152
|
+
JSON ("json"):
|
153
|
+
|
154
|
+
number number
|
155
|
+
literal "true", "false" and "null"
|
156
|
+
string string value
|
157
|
+
attribute name of an object property
|
158
|
+
value value of an object property
|
159
|
+
|
160
|
+
JavaScript ("javascript"):
|
142
161
|
|
143
162
|
keyword keyword
|
144
163
|
comment comment
|
@@ -148,7 +167,36 @@ Javascript ("javascript"):
|
|
148
167
|
regexp regular expression
|
149
168
|
function header of a function
|
150
169
|
title name of a function inside a header
|
151
|
-
params everything inside
|
170
|
+
params parentheses and everything inside them in a function's header
|
171
|
+
|
172
|
+
CoffeeScript ("coffeescript"):
|
173
|
+
|
174
|
+
keyword keyword
|
175
|
+
comment comment
|
176
|
+
number number
|
177
|
+
literal special literal: "true", "false" and "null"
|
178
|
+
string string
|
179
|
+
regexp regular expression
|
180
|
+
function header of a function
|
181
|
+
title name of a function variable inside a header
|
182
|
+
params parentheses and everything inside them in a function's header
|
183
|
+
|
184
|
+
ActionScript ("actionscript"):
|
185
|
+
|
186
|
+
comment comment
|
187
|
+
string string
|
188
|
+
number number
|
189
|
+
keyword keywords
|
190
|
+
literal literal
|
191
|
+
reserved reserved keyword
|
192
|
+
title name of declaration (package, class or function)
|
193
|
+
preprocessor preprocessor directive (import, include)
|
194
|
+
type type of returned value (for functions)
|
195
|
+
package package (named or not)
|
196
|
+
class class/interface
|
197
|
+
function function
|
198
|
+
param params of function
|
199
|
+
rest_arg rest argument of function
|
152
200
|
|
153
201
|
VBScript ("vbscript"):
|
154
202
|
|
@@ -158,6 +206,14 @@ VBScript ("vbscript"):
|
|
158
206
|
comment comment
|
159
207
|
built_in built-in function
|
160
208
|
|
209
|
+
HTTP ("http"):
|
210
|
+
|
211
|
+
request first line of a request
|
212
|
+
status first line of a response
|
213
|
+
attribute header name
|
214
|
+
string header value or query string in a request line
|
215
|
+
number status code
|
216
|
+
|
161
217
|
Lua ("lua"):
|
162
218
|
|
163
219
|
keyword keyword
|
@@ -212,6 +268,7 @@ Objective C ("objectivec"):
|
|
212
268
|
comment comment
|
213
269
|
preprocessor preprocessor directive
|
214
270
|
class interface/implementation, protocol and forward class declaration
|
271
|
+
variable properties and struct accesors
|
215
272
|
|
216
273
|
Vala ("vala"):
|
217
274
|
|
@@ -231,6 +288,15 @@ C# ("cs"):
|
|
231
288
|
comment commment
|
232
289
|
xmlDocTag xmldoc tag ("///", "<!--", "-->", "<..>")
|
233
290
|
|
291
|
+
D language ("d"):
|
292
|
+
|
293
|
+
comment comment
|
294
|
+
string string constant
|
295
|
+
number number
|
296
|
+
keyword language keywords (including @attributes)
|
297
|
+
constant true false null
|
298
|
+
built_in built-in plain types (int, string etc.)
|
299
|
+
|
234
300
|
RenderMan RSL ("rsl"):
|
235
301
|
|
236
302
|
keyword keyword
|
@@ -291,6 +357,16 @@ Lisp ("lisp"):
|
|
291
357
|
body remainder of the non-quoted list
|
292
358
|
quoted quoted list, both "(quote .. )" and "'(..)"
|
293
359
|
|
360
|
+
Clojure ("clojure"):
|
361
|
+
|
362
|
+
comment comments and hints
|
363
|
+
string string
|
364
|
+
number number
|
365
|
+
collection collections
|
366
|
+
attribute :keyword
|
367
|
+
title function name (built-in or user defined)
|
368
|
+
built_in built-in function name
|
369
|
+
|
294
370
|
Ini ("ini"):
|
295
371
|
|
296
372
|
title title of a section
|
@@ -311,12 +387,13 @@ Apache ("apache"):
|
|
311
387
|
|
312
388
|
Nginx ("nginx"):
|
313
389
|
|
314
|
-
|
390
|
+
title directive title
|
315
391
|
string string
|
316
392
|
number number
|
317
393
|
comment comment
|
318
394
|
built_in built-in constant
|
319
395
|
variable $-variable
|
396
|
+
regexp regexp
|
320
397
|
|
321
398
|
Diff ("diff"):
|
322
399
|
|
@@ -394,6 +471,8 @@ VHDL ("vhdl")
|
|
394
471
|
string string
|
395
472
|
comment commment
|
396
473
|
literal signal logical value
|
474
|
+
typename typename
|
475
|
+
attribute signal attribute
|
397
476
|
|
398
477
|
Parser3 ("parser3"):
|
399
478
|
|
@@ -416,13 +495,13 @@ TeX ("tex"):
|
|
416
495
|
Haskell ("haskell"):
|
417
496
|
|
418
497
|
keyword keyword
|
419
|
-
built_in built-in typeclass/functions (Bool, Int)
|
420
498
|
number number
|
421
499
|
string string
|
422
500
|
comment comment
|
423
501
|
class type classes and other data types
|
424
502
|
title function name
|
425
|
-
|
503
|
+
type type class name
|
504
|
+
typedef definition of types (type, newtype, data)
|
426
505
|
|
427
506
|
Erlang ("erlang"):
|
428
507
|
|
@@ -435,3 +514,40 @@ Erlang ("erlang"):
|
|
435
514
|
variable variable (starts with capital letter or with _)
|
436
515
|
pp.keywords module's attribute (-attribute)
|
437
516
|
function_name atom or atom:atom in case of function call
|
517
|
+
|
518
|
+
Rust ("rust"):
|
519
|
+
|
520
|
+
comment comment
|
521
|
+
string string
|
522
|
+
number number
|
523
|
+
keyword keyword
|
524
|
+
title name of declaration
|
525
|
+
preprocessor preprocessor directive
|
526
|
+
|
527
|
+
Matlab ("matlab"):
|
528
|
+
|
529
|
+
comment comment
|
530
|
+
string string
|
531
|
+
number number
|
532
|
+
keyword keyword
|
533
|
+
title function name
|
534
|
+
function function
|
535
|
+
param params of function
|
536
|
+
|
537
|
+
R ("r"):
|
538
|
+
|
539
|
+
comment comment
|
540
|
+
string string constant
|
541
|
+
number number
|
542
|
+
keyword language keywords (function, if) plus "structural"
|
543
|
+
functions (attach, require, setClass)
|
544
|
+
literal special literal: TRUE, FALSE, NULL, NA, etc.
|
545
|
+
|
546
|
+
OpenGL Shading Language ("glsl"):
|
547
|
+
|
548
|
+
comment comment
|
549
|
+
number number
|
550
|
+
preprocessor preprocessor directive
|
551
|
+
keyword keyword
|
552
|
+
built_in GLSL built-in functions and variables
|
553
|
+
literal true false
|
data/lib/highlight_js/version.rb
CHANGED
Binary file
|
@@ -28,6 +28,8 @@ var hljs = new function() {
|
|
28
28
|
}
|
29
29
|
}
|
30
30
|
|
31
|
+
var is_old_IE = (typeof navigator !== 'undefined' && /MSIE [678]/.test(navigator.userAgent));
|
32
|
+
|
31
33
|
function blockText(block, ignoreNewLines) {
|
32
34
|
var result = '';
|
33
35
|
for (var i = 0; i < block.childNodes.length; i++)
|
@@ -40,14 +42,13 @@ var hljs = new function() {
|
|
40
42
|
result += '\n';
|
41
43
|
else
|
42
44
|
result += blockText(block.childNodes[i]);
|
43
|
-
|
44
|
-
if (/MSIE [678]/.test(navigator.userAgent))
|
45
|
+
if (is_old_IE)
|
45
46
|
result = result.replace(/\r/g, '\n');
|
46
47
|
return result;
|
47
48
|
}
|
48
49
|
|
49
50
|
function blockLanguage(block) {
|
50
|
-
var classes = block.className.split(/\s+/)
|
51
|
+
var classes = block.className.split(/\s+/);
|
51
52
|
classes = classes.concat(block.parentNode.className.split(/\s+/));
|
52
53
|
for (var i = 0; i < classes.length; i++) {
|
53
54
|
var class_ = classes[i].replace(/^language-/, '');
|
@@ -61,19 +62,19 @@ var hljs = new function() {
|
|
61
62
|
|
62
63
|
function nodeStream(node) {
|
63
64
|
var result = [];
|
64
|
-
(function (node, offset) {
|
65
|
+
(function _nodeStream(node, offset) {
|
65
66
|
for (var i = 0; i < node.childNodes.length; i++) {
|
66
67
|
if (node.childNodes[i].nodeType == 3)
|
67
68
|
offset += node.childNodes[i].nodeValue.length;
|
68
69
|
else if (node.childNodes[i].nodeName == 'BR')
|
69
|
-
offset += 1
|
70
|
-
else {
|
70
|
+
offset += 1;
|
71
|
+
else if (node.childNodes[i].nodeType == 1) {
|
71
72
|
result.push({
|
72
73
|
event: 'start',
|
73
74
|
offset: offset,
|
74
75
|
node: node.childNodes[i]
|
75
76
|
});
|
76
|
-
offset =
|
77
|
+
offset = _nodeStream(node.childNodes[i], offset);
|
77
78
|
result.push({
|
78
79
|
event: 'stop',
|
79
80
|
offset: offset,
|
@@ -123,8 +124,8 @@ var hljs = new function() {
|
|
123
124
|
for (var i = 0; i < node.attributes.length; i++) {
|
124
125
|
var attribute = node.attributes[i];
|
125
126
|
result += ' ' + attribute.nodeName.toLowerCase();
|
126
|
-
if (attribute.
|
127
|
-
result += '="' + escape(attribute.
|
127
|
+
if (attribute.value !== undefined && attribute.value !== false && attribute.value !== null) {
|
128
|
+
result += '="' + escape(attribute.value) + '"';
|
128
129
|
}
|
129
130
|
}
|
130
131
|
return result + '>';
|
@@ -138,10 +139,10 @@ var hljs = new function() {
|
|
138
139
|
result += open(current.node);
|
139
140
|
nodeStack.push(current.node);
|
140
141
|
} else if (current.event == 'stop') {
|
141
|
-
var i = nodeStack.length;
|
142
|
+
var node, i = nodeStack.length;
|
142
143
|
do {
|
143
144
|
i--;
|
144
|
-
|
145
|
+
node = nodeStack[i];
|
145
146
|
result += ('</' + node.nodeName.toLowerCase() + '>');
|
146
147
|
} while (node != current.node);
|
147
148
|
nodeStack.splice(i, 1);
|
@@ -151,40 +152,56 @@ var hljs = new function() {
|
|
151
152
|
}
|
152
153
|
}
|
153
154
|
}
|
154
|
-
result
|
155
|
-
return result;
|
155
|
+
return result + escape(value.substr(processed));
|
156
156
|
}
|
157
157
|
|
158
158
|
/* Initialization */
|
159
159
|
|
160
|
-
function compileModes() {
|
160
|
+
function compileModes(language_name) {
|
161
161
|
|
162
162
|
function compileMode(mode, language, is_default) {
|
163
163
|
if (mode.compiled)
|
164
164
|
return;
|
165
165
|
|
166
|
+
var keywords = []; // used later with beginWithKeyword but filled as a side-effect of keywords compilation
|
167
|
+
if (mode.keywords) {
|
168
|
+
var compiled_keywords = {};
|
169
|
+
|
170
|
+
function flatten(className, str) {
|
171
|
+
var group = str.split(' ');
|
172
|
+
for (var i = 0; i < group.length; i++) {
|
173
|
+
var pair = group[i].split('|');
|
174
|
+
compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];
|
175
|
+
keywords.push(pair[0]);
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
179
|
+
mode.lexemsRe = langRe(language, mode.lexems || hljs.IDENT_RE, true);
|
180
|
+
if (typeof mode.keywords == 'string') { // string
|
181
|
+
flatten('keyword', mode.keywords)
|
182
|
+
} else {
|
183
|
+
for (var className in mode.keywords) {
|
184
|
+
if (!mode.keywords.hasOwnProperty(className))
|
185
|
+
continue;
|
186
|
+
flatten(className, mode.keywords[className]);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
mode.keywords = compiled_keywords;
|
190
|
+
}
|
166
191
|
if (!is_default) {
|
192
|
+
if (mode.beginWithKeyword) {
|
193
|
+
mode.begin = '\\b(' + keywords.join('|') + ')\\s';
|
194
|
+
}
|
167
195
|
mode.beginRe = langRe(language, mode.begin ? mode.begin : '\\B|\\b');
|
168
196
|
if (!mode.end && !mode.endsWithParent)
|
169
|
-
mode.end = '\\B|\\b'
|
197
|
+
mode.end = '\\B|\\b';
|
170
198
|
if (mode.end)
|
171
199
|
mode.endRe = langRe(language, mode.end);
|
172
200
|
}
|
173
201
|
if (mode.illegal)
|
174
202
|
mode.illegalRe = langRe(language, mode.illegal);
|
175
|
-
if (mode.relevance
|
203
|
+
if (mode.relevance === undefined)
|
176
204
|
mode.relevance = 1;
|
177
|
-
if (mode.keywords)
|
178
|
-
mode.lexemsRe = langRe(language, mode.lexems || hljs.IDENT_RE, true);
|
179
|
-
for (var key in mode.keywords) {
|
180
|
-
if (!mode.keywords.hasOwnProperty(key))
|
181
|
-
continue;
|
182
|
-
if (mode.keywords[key] instanceof Object)
|
183
|
-
mode.keywordGroups = mode.keywords;
|
184
|
-
else
|
185
|
-
mode.keywordGroups = {'keyword': mode.keywords};
|
186
|
-
break;
|
187
|
-
}
|
188
205
|
if (!mode.contains) {
|
189
206
|
mode.contains = [];
|
190
207
|
}
|
@@ -192,20 +209,20 @@ var hljs = new function() {
|
|
192
209
|
// (see lisp where quoted_list contains quoted_list)
|
193
210
|
mode.compiled = true;
|
194
211
|
for (var i = 0; i < mode.contains.length; i++) {
|
212
|
+
if (mode.contains[i] == 'self') {
|
213
|
+
mode.contains[i] = mode;
|
214
|
+
}
|
195
215
|
compileMode(mode.contains[i], language, false);
|
196
216
|
}
|
197
217
|
if (mode.starts) {
|
198
218
|
compileMode(mode.starts, language, false);
|
199
219
|
}
|
200
220
|
}
|
201
|
-
|
202
|
-
for (var i in languages) {
|
203
|
-
if (!languages.hasOwnProperty(i))
|
204
|
-
continue;
|
205
|
-
compileMode(languages[i].defaultMode, languages[i], true);
|
206
|
-
}
|
221
|
+
compileMode(languages[language_name].defaultMode, languages[language_name], true);
|
207
222
|
}
|
208
223
|
|
224
|
+
var compiled_languages = {};
|
225
|
+
|
209
226
|
/*
|
210
227
|
Core highlighting function. Accepts a language name and a string with the
|
211
228
|
code to highlight. Returns an object with the following properties:
|
@@ -216,14 +233,15 @@ var hljs = new function() {
|
|
216
233
|
|
217
234
|
*/
|
218
235
|
function highlight(language_name, value) {
|
219
|
-
if (!
|
220
|
-
compileModes();
|
221
|
-
|
236
|
+
if (!compiled_languages[language_name]) {
|
237
|
+
compileModes(language_name);
|
238
|
+
compiled_languages[language_name] = true;
|
222
239
|
}
|
223
240
|
|
224
241
|
function subMode(lexem, mode) {
|
225
242
|
for (var i = 0; i < mode.contains.length; i++) {
|
226
|
-
|
243
|
+
var match = mode.contains[i].beginRe.exec(lexem);
|
244
|
+
if (match && match.index == 0) {
|
227
245
|
return mode.contains[i];
|
228
246
|
}
|
229
247
|
}
|
@@ -240,7 +258,7 @@ var hljs = new function() {
|
|
240
258
|
}
|
241
259
|
|
242
260
|
function isIllegal(lexem, mode) {
|
243
|
-
return mode.
|
261
|
+
return mode.illegal && mode.illegalRe.test(lexem);
|
244
262
|
}
|
245
263
|
|
246
264
|
function compileTerminators(mode, language) {
|
@@ -262,69 +280,81 @@ var hljs = new function() {
|
|
262
280
|
terminators.push(mode.illegal);
|
263
281
|
}
|
264
282
|
|
265
|
-
return langRe(language,
|
283
|
+
return terminators.length ? langRe(language, terminators.join('|'), true) : null;
|
266
284
|
}
|
267
285
|
|
268
286
|
function eatModeChunk(value, index) {
|
269
287
|
var mode = modes[modes.length - 1];
|
270
|
-
if (
|
288
|
+
if (mode.terminators === undefined) {
|
271
289
|
mode.terminators = compileTerminators(mode, language);
|
272
290
|
}
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
291
|
+
var match;
|
292
|
+
if (mode.terminators) {
|
293
|
+
mode.terminators.lastIndex = index;
|
294
|
+
match = mode.terminators.exec(value);
|
295
|
+
}
|
296
|
+
return match ? [value.substr(index, match.index - index), match[0], false] : [value.substr(index), '', true];
|
279
297
|
}
|
280
298
|
|
281
299
|
function keywordMatch(mode, match) {
|
282
|
-
var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0]
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
var value = mode.keywordGroups[className].hasOwnProperty(match_str);
|
287
|
-
if (value)
|
288
|
-
return [className, value];
|
289
|
-
}
|
300
|
+
var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];
|
301
|
+
var value = mode.keywords[match_str];
|
302
|
+
if (value && value instanceof Array)
|
303
|
+
return value;
|
290
304
|
return false;
|
291
305
|
}
|
292
306
|
|
293
307
|
function processKeywords(buffer, mode) {
|
308
|
+
buffer = escape(buffer);
|
294
309
|
if (!mode.keywords)
|
295
|
-
return
|
310
|
+
return buffer;
|
296
311
|
var result = '';
|
297
312
|
var last_index = 0;
|
298
313
|
mode.lexemsRe.lastIndex = 0;
|
299
314
|
var match = mode.lexemsRe.exec(buffer);
|
300
315
|
while (match) {
|
301
|
-
result +=
|
316
|
+
result += buffer.substr(last_index, match.index - last_index);
|
302
317
|
var keyword_match = keywordMatch(mode, match);
|
303
318
|
if (keyword_match) {
|
304
319
|
keyword_count += keyword_match[1];
|
305
|
-
result += '<span class="'+ keyword_match[0] +'">' +
|
320
|
+
result += '<span class="'+ keyword_match[0] +'">' + match[0] + '</span>';
|
306
321
|
} else {
|
307
|
-
result +=
|
322
|
+
result += match[0];
|
308
323
|
}
|
309
324
|
last_index = mode.lexemsRe.lastIndex;
|
310
325
|
match = mode.lexemsRe.exec(buffer);
|
311
326
|
}
|
312
|
-
result
|
313
|
-
return result;
|
327
|
+
return result + buffer.substr(last_index);
|
314
328
|
}
|
315
329
|
|
316
|
-
function
|
317
|
-
|
318
|
-
|
330
|
+
function processSubLanguage(buffer, mode) {
|
331
|
+
var result;
|
332
|
+
if (mode.subLanguage == '') {
|
333
|
+
result = highlightAuto(buffer);
|
334
|
+
} else {
|
335
|
+
result = highlight(mode.subLanguage, buffer);
|
336
|
+
}
|
337
|
+
// Counting embedded language score towards the host language may be disabled
|
338
|
+
// with zeroing the containing mode relevance. Usecase in point is Markdown that
|
339
|
+
// allows XML everywhere and makes every XML snippet to have a much larger Markdown
|
340
|
+
// score.
|
341
|
+
if (mode.relevance > 0) {
|
319
342
|
keyword_count += result.keyword_count;
|
320
|
-
|
343
|
+
relevance += result.relevance;
|
344
|
+
}
|
345
|
+
return '<span class="' + result.language + '">' + result.value + '</span>';
|
346
|
+
}
|
347
|
+
|
348
|
+
function processBuffer(buffer, mode) {
|
349
|
+
if (mode.subLanguage && languages[mode.subLanguage] || mode.subLanguage == '') {
|
350
|
+
return processSubLanguage(buffer, mode);
|
321
351
|
} else {
|
322
352
|
return processKeywords(buffer, mode);
|
323
353
|
}
|
324
354
|
}
|
325
355
|
|
326
356
|
function startNewMode(mode, lexem) {
|
327
|
-
var markup = mode.className?'<span class="' + mode.className + '">':'';
|
357
|
+
var markup = mode.className? '<span class="' + mode.className + '">': '';
|
328
358
|
if (mode.returnBegin) {
|
329
359
|
result += markup;
|
330
360
|
mode.buffer = '';
|
@@ -388,30 +418,29 @@ var hljs = new function() {
|
|
388
418
|
var keyword_count = 0;
|
389
419
|
var result = '';
|
390
420
|
try {
|
391
|
-
var index = 0;
|
421
|
+
var mode_info, index = 0;
|
392
422
|
language.defaultMode.buffer = '';
|
393
423
|
do {
|
394
|
-
|
424
|
+
mode_info = eatModeChunk(value, index);
|
395
425
|
var return_lexem = processModeInfo(mode_info[0], mode_info[1], mode_info[2]);
|
396
426
|
index += mode_info[0].length;
|
397
427
|
if (!return_lexem) {
|
398
428
|
index += mode_info[1].length;
|
399
429
|
}
|
400
430
|
} while (!mode_info[2]);
|
401
|
-
if(modes.length > 1)
|
402
|
-
throw 'Illegal';
|
403
431
|
return {
|
404
432
|
relevance: relevance,
|
405
433
|
keyword_count: keyword_count,
|
406
|
-
value: result
|
407
|
-
|
434
|
+
value: result,
|
435
|
+
language: language_name
|
436
|
+
};
|
408
437
|
} catch (e) {
|
409
438
|
if (e == 'Illegal') {
|
410
439
|
return {
|
411
440
|
relevance: 0,
|
412
441
|
keyword_count: 0,
|
413
442
|
value: escape(value)
|
414
|
-
}
|
443
|
+
};
|
415
444
|
} else {
|
416
445
|
throw e;
|
417
446
|
}
|
@@ -467,7 +496,7 @@ var hljs = new function() {
|
|
467
496
|
if (tabReplace) {
|
468
497
|
value = value.replace(/^((<[^>]+>|\t)+)/gm, function(match, p1, offset, s) {
|
469
498
|
return p1.replace(/\t/g, tabReplace);
|
470
|
-
})
|
499
|
+
});
|
471
500
|
}
|
472
501
|
if (useBR) {
|
473
502
|
value = value.replace(/\n/g, '<br>');
|
@@ -482,17 +511,18 @@ var hljs = new function() {
|
|
482
511
|
function highlightBlock(block, tabReplace, useBR) {
|
483
512
|
var text = blockText(block, useBR);
|
484
513
|
var language = blockLanguage(block);
|
514
|
+
var result, pre;
|
485
515
|
if (language == 'no-highlight')
|
486
516
|
return;
|
487
517
|
if (language) {
|
488
|
-
|
518
|
+
result = highlight(language, text);
|
489
519
|
} else {
|
490
|
-
|
520
|
+
result = highlightAuto(text);
|
491
521
|
language = result.language;
|
492
522
|
}
|
493
523
|
var original = nodeStream(block);
|
494
524
|
if (original.length) {
|
495
|
-
|
525
|
+
pre = document.createElement('pre');
|
496
526
|
pre.innerHTML = result.value;
|
497
527
|
result.value = mergeStreams(original, nodeStream(pre), text);
|
498
528
|
}
|
@@ -502,10 +532,10 @@ var hljs = new function() {
|
|
502
532
|
if (!class_name.match('(\\s|^)(language-)?' + language + '(\\s|$)')) {
|
503
533
|
class_name = class_name ? (class_name + ' ' + language) : language;
|
504
534
|
}
|
505
|
-
if (
|
535
|
+
if (is_old_IE && block.tagName == 'CODE' && block.parentNode.tagName == 'PRE') {
|
506
536
|
// This is for backwards compatibility only. IE needs this strange
|
507
537
|
// hack becasue it cannot just cleanly replace <code> block contents.
|
508
|
-
|
538
|
+
pre = block.parentNode;
|
509
539
|
var container = document.createElement('div');
|
510
540
|
container.innerHTML = '<pre><code>' + result.value + '</code></pre>';
|
511
541
|
block = container.firstChild.firstChild;
|
@@ -573,12 +603,13 @@ var hljs = new function() {
|
|
573
603
|
this.IDENT_RE = '[a-zA-Z][a-zA-Z0-9_]*';
|
574
604
|
this.UNDERSCORE_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*';
|
575
605
|
this.NUMBER_RE = '\\b\\d+(\\.\\d+)?';
|
576
|
-
this.C_NUMBER_RE = '\\
|
606
|
+
this.C_NUMBER_RE = '(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float
|
607
|
+
this.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b...
|
577
608
|
this.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~';
|
578
609
|
|
579
610
|
// Common modes
|
580
611
|
this.BACKSLASH_ESCAPE = {
|
581
|
-
begin: '
|
612
|
+
begin: '\\\\[\\s\\S]', relevance: 0
|
582
613
|
};
|
583
614
|
this.APOS_STRING_MODE = {
|
584
615
|
className: 'string',
|
@@ -616,6 +647,11 @@ var hljs = new function() {
|
|
616
647
|
begin: this.C_NUMBER_RE,
|
617
648
|
relevance: 0
|
618
649
|
};
|
650
|
+
this.BINARY_NUMBER_MODE = {
|
651
|
+
className: 'number',
|
652
|
+
begin: this.BINARY_NUMBER_RE,
|
653
|
+
relevance: 0
|
654
|
+
};
|
619
655
|
|
620
656
|
// Utility functions
|
621
657
|
this.inherit = function(parent, obj) {
|