rouge_ecl 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge.rb +82 -0
  6. data/lib/rouge/cli.rb +429 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/csharp +5 -0
  27. data/lib/rouge/demos/css +4 -0
  28. data/lib/rouge/demos/d +16 -0
  29. data/lib/rouge/demos/dart +6 -0
  30. data/lib/rouge/demos/diff +7 -0
  31. data/lib/rouge/demos/digdag +19 -0
  32. data/lib/rouge/demos/docker +9 -0
  33. data/lib/rouge/demos/dot +5 -0
  34. data/lib/rouge/demos/ecl +1 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/html +8 -0
  54. data/lib/rouge/demos/http +14 -0
  55. data/lib/rouge/demos/hylang +10 -0
  56. data/lib/rouge/demos/idlang +8 -0
  57. data/lib/rouge/demos/igorpro +9 -0
  58. data/lib/rouge/demos/ini +4 -0
  59. data/lib/rouge/demos/io +11 -0
  60. data/lib/rouge/demos/irb +4 -0
  61. data/lib/rouge/demos/irb_output +2 -0
  62. data/lib/rouge/demos/java +5 -0
  63. data/lib/rouge/demos/javascript +1 -0
  64. data/lib/rouge/demos/jinja +9 -0
  65. data/lib/rouge/demos/json +1 -0
  66. data/lib/rouge/demos/json-doc +1 -0
  67. data/lib/rouge/demos/jsonnet +28 -0
  68. data/lib/rouge/demos/jsx +17 -0
  69. data/lib/rouge/demos/julia +11 -0
  70. data/lib/rouge/demos/kotlin +3 -0
  71. data/lib/rouge/demos/lasso +12 -0
  72. data/lib/rouge/demos/liquid +11 -0
  73. data/lib/rouge/demos/literate_coffeescript +3 -0
  74. data/lib/rouge/demos/literate_haskell +7 -0
  75. data/lib/rouge/demos/llvm +20 -0
  76. data/lib/rouge/demos/lua +12 -0
  77. data/lib/rouge/demos/make +6 -0
  78. data/lib/rouge/demos/markdown +4 -0
  79. data/lib/rouge/demos/matlab +6 -0
  80. data/lib/rouge/demos/moonscript +16 -0
  81. data/lib/rouge/demos/mosel +10 -0
  82. data/lib/rouge/demos/mxml +22 -0
  83. data/lib/rouge/demos/nasm +26 -0
  84. data/lib/rouge/demos/nginx +5 -0
  85. data/lib/rouge/demos/nim +27 -0
  86. data/lib/rouge/demos/nix +19 -0
  87. data/lib/rouge/demos/objective_c +18 -0
  88. data/lib/rouge/demos/ocaml +12 -0
  89. data/lib/rouge/demos/pascal +14 -0
  90. data/lib/rouge/demos/perl +5 -0
  91. data/lib/rouge/demos/php +3 -0
  92. data/lib/rouge/demos/plaintext +1 -0
  93. data/lib/rouge/demos/plist +142 -0
  94. data/lib/rouge/demos/pony +17 -0
  95. data/lib/rouge/demos/powershell +49 -0
  96. data/lib/rouge/demos/praat +26 -0
  97. data/lib/rouge/demos/prolog +9 -0
  98. data/lib/rouge/demos/prometheus +9 -0
  99. data/lib/rouge/demos/properties +7 -0
  100. data/lib/rouge/demos/protobuf +5 -0
  101. data/lib/rouge/demos/puppet +6 -0
  102. data/lib/rouge/demos/python +6 -0
  103. data/lib/rouge/demos/q +2 -0
  104. data/lib/rouge/demos/qml +9 -0
  105. data/lib/rouge/demos/r +8 -0
  106. data/lib/rouge/demos/racket +24 -0
  107. data/lib/rouge/demos/ruby +9 -0
  108. data/lib/rouge/demos/rust +12 -0
  109. data/lib/rouge/demos/sass +3 -0
  110. data/lib/rouge/demos/scala +3 -0
  111. data/lib/rouge/demos/scheme +4 -0
  112. data/lib/rouge/demos/scss +5 -0
  113. data/lib/rouge/demos/sed +4 -0
  114. data/lib/rouge/demos/shell +2 -0
  115. data/lib/rouge/demos/sieve +10 -0
  116. data/lib/rouge/demos/slim +17 -0
  117. data/lib/rouge/demos/smalltalk +6 -0
  118. data/lib/rouge/demos/smarty +12 -0
  119. data/lib/rouge/demos/sml +4 -0
  120. data/lib/rouge/demos/sql +1 -0
  121. data/lib/rouge/demos/swift +5 -0
  122. data/lib/rouge/demos/tap +5 -0
  123. data/lib/rouge/demos/tcl +1 -0
  124. data/lib/rouge/demos/tex +1 -0
  125. data/lib/rouge/demos/toml +9 -0
  126. data/lib/rouge/demos/tsx +17 -0
  127. data/lib/rouge/demos/tulip +13 -0
  128. data/lib/rouge/demos/turtle +26 -0
  129. data/lib/rouge/demos/twig +9 -0
  130. data/lib/rouge/demos/typescript +1 -0
  131. data/lib/rouge/demos/vala +8 -0
  132. data/lib/rouge/demos/vb +4 -0
  133. data/lib/rouge/demos/verilog +27 -0
  134. data/lib/rouge/demos/vhdl +23 -0
  135. data/lib/rouge/demos/viml +14 -0
  136. data/lib/rouge/demos/vue +11 -0
  137. data/lib/rouge/demos/wollok +11 -0
  138. data/lib/rouge/demos/xml +2 -0
  139. data/lib/rouge/demos/yaml +4 -0
  140. data/lib/rouge/formatter.rb +75 -0
  141. data/lib/rouge/formatters/html.rb +37 -0
  142. data/lib/rouge/formatters/html_inline.rb +30 -0
  143. data/lib/rouge/formatters/html_legacy.rb +44 -0
  144. data/lib/rouge/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge/formatters/html_table.rb +61 -0
  147. data/lib/rouge/formatters/null.rb +19 -0
  148. data/lib/rouge/formatters/terminal256.rb +180 -0
  149. data/lib/rouge/guesser.rb +55 -0
  150. data/lib/rouge/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge/guessers/filename.rb +25 -0
  152. data/lib/rouge/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge/guessers/mimetype.rb +14 -0
  154. data/lib/rouge/guessers/modeline.rb +44 -0
  155. data/lib/rouge/guessers/source.rb +29 -0
  156. data/lib/rouge/guessers/util.rb +32 -0
  157. data/lib/rouge/lexer.rb +461 -0
  158. data/lib/rouge/lexers/abap.rb +238 -0
  159. data/lib/rouge/lexers/actionscript.rb +195 -0
  160. data/lib/rouge/lexers/apache.rb +71 -0
  161. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge/lexers/apple_script.rb +367 -0
  164. data/lib/rouge/lexers/awk.rb +161 -0
  165. data/lib/rouge/lexers/biml.rb +41 -0
  166. data/lib/rouge/lexers/bsl.rb +81 -0
  167. data/lib/rouge/lexers/c.rb +212 -0
  168. data/lib/rouge/lexers/ceylon.rb +123 -0
  169. data/lib/rouge/lexers/cfscript.rb +153 -0
  170. data/lib/rouge/lexers/clojure.rb +112 -0
  171. data/lib/rouge/lexers/cmake.rb +206 -0
  172. data/lib/rouge/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge/lexers/conf.rb +24 -0
  175. data/lib/rouge/lexers/console.rb +136 -0
  176. data/lib/rouge/lexers/coq.rb +187 -0
  177. data/lib/rouge/lexers/cpp.rb +78 -0
  178. data/lib/rouge/lexers/csharp.rb +114 -0
  179. data/lib/rouge/lexers/css.rb +273 -0
  180. data/lib/rouge/lexers/d.rb +176 -0
  181. data/lib/rouge/lexers/dart.rb +104 -0
  182. data/lib/rouge/lexers/diff.rb +31 -0
  183. data/lib/rouge/lexers/digdag.rb +68 -0
  184. data/lib/rouge/lexers/docker.rb +50 -0
  185. data/lib/rouge/lexers/dot.rb +68 -0
  186. data/lib/rouge/lexers/ecl.rb +138 -0
  187. data/lib/rouge/lexers/eiffel.rb +65 -0
  188. data/lib/rouge/lexers/elixir.rb +133 -0
  189. data/lib/rouge/lexers/elm.rb +89 -0
  190. data/lib/rouge/lexers/erb.rb +52 -0
  191. data/lib/rouge/lexers/erlang.rb +114 -0
  192. data/lib/rouge/lexers/factor.rb +302 -0
  193. data/lib/rouge/lexers/fortran.rb +176 -0
  194. data/lib/rouge/lexers/fsharp.rb +118 -0
  195. data/lib/rouge/lexers/gherkin.rb +137 -0
  196. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  197. data/lib/rouge/lexers/glsl.rb +135 -0
  198. data/lib/rouge/lexers/go.rb +174 -0
  199. data/lib/rouge/lexers/gradle.rb +37 -0
  200. data/lib/rouge/lexers/graphql.rb +243 -0
  201. data/lib/rouge/lexers/groovy.rb +112 -0
  202. data/lib/rouge/lexers/hack.rb +48 -0
  203. data/lib/rouge/lexers/haml.rb +229 -0
  204. data/lib/rouge/lexers/handlebars.rb +79 -0
  205. data/lib/rouge/lexers/haskell.rb +182 -0
  206. data/lib/rouge/lexers/html.rb +139 -0
  207. data/lib/rouge/lexers/http.rb +80 -0
  208. data/lib/rouge/lexers/hylang.rb +93 -0
  209. data/lib/rouge/lexers/idlang.rb +310 -0
  210. data/lib/rouge/lexers/igorpro.rb +408 -0
  211. data/lib/rouge/lexers/ini.rb +53 -0
  212. data/lib/rouge/lexers/io.rb +68 -0
  213. data/lib/rouge/lexers/irb.rb +66 -0
  214. data/lib/rouge/lexers/java.rb +87 -0
  215. data/lib/rouge/lexers/javascript.rb +281 -0
  216. data/lib/rouge/lexers/jinja.rb +137 -0
  217. data/lib/rouge/lexers/json.rb +29 -0
  218. data/lib/rouge/lexers/json_doc.rb +23 -0
  219. data/lib/rouge/lexers/jsonnet.rb +151 -0
  220. data/lib/rouge/lexers/jsx.rb +102 -0
  221. data/lib/rouge/lexers/julia.rb +172 -0
  222. data/lib/rouge/lexers/kotlin.rb +79 -0
  223. data/lib/rouge/lexers/lasso.rb +214 -0
  224. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  225. data/lib/rouge/lexers/liquid.rb +287 -0
  226. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  227. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  228. data/lib/rouge/lexers/llvm.rb +80 -0
  229. data/lib/rouge/lexers/lua.rb +125 -0
  230. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  231. data/lib/rouge/lexers/make.rb +112 -0
  232. data/lib/rouge/lexers/markdown.rb +154 -0
  233. data/lib/rouge/lexers/matlab.rb +71 -0
  234. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  235. data/lib/rouge/lexers/moonscript.rb +114 -0
  236. data/lib/rouge/lexers/mosel.rb +231 -0
  237. data/lib/rouge/lexers/mxml.rb +68 -0
  238. data/lib/rouge/lexers/nasm.rb +198 -0
  239. data/lib/rouge/lexers/nginx.rb +71 -0
  240. data/lib/rouge/lexers/nim.rb +152 -0
  241. data/lib/rouge/lexers/nix.rb +205 -0
  242. data/lib/rouge/lexers/objective_c.rb +194 -0
  243. data/lib/rouge/lexers/ocaml.rb +100 -0
  244. data/lib/rouge/lexers/pascal.rb +66 -0
  245. data/lib/rouge/lexers/perl.rb +196 -0
  246. data/lib/rouge/lexers/php.rb +193 -0
  247. data/lib/rouge/lexers/php/builtins.rb +194 -0
  248. data/lib/rouge/lexers/plain_text.rb +26 -0
  249. data/lib/rouge/lexers/plist.rb +45 -0
  250. data/lib/rouge/lexers/pony.rb +93 -0
  251. data/lib/rouge/lexers/powershell.rb +678 -0
  252. data/lib/rouge/lexers/praat.rb +350 -0
  253. data/lib/rouge/lexers/prolog.rb +59 -0
  254. data/lib/rouge/lexers/prometheus.rb +121 -0
  255. data/lib/rouge/lexers/properties.rb +51 -0
  256. data/lib/rouge/lexers/protobuf.rb +70 -0
  257. data/lib/rouge/lexers/puppet.rb +128 -0
  258. data/lib/rouge/lexers/python.rb +232 -0
  259. data/lib/rouge/lexers/q.rb +123 -0
  260. data/lib/rouge/lexers/qml.rb +73 -0
  261. data/lib/rouge/lexers/r.rb +89 -0
  262. data/lib/rouge/lexers/racket.rb +543 -0
  263. data/lib/rouge/lexers/ruby.rb +437 -0
  264. data/lib/rouge/lexers/rust.rb +192 -0
  265. data/lib/rouge/lexers/sass.rb +74 -0
  266. data/lib/rouge/lexers/sass/common.rb +180 -0
  267. data/lib/rouge/lexers/scala.rb +142 -0
  268. data/lib/rouge/lexers/scheme.rb +112 -0
  269. data/lib/rouge/lexers/scss.rb +34 -0
  270. data/lib/rouge/lexers/sed.rb +172 -0
  271. data/lib/rouge/lexers/shell.rb +189 -0
  272. data/lib/rouge/lexers/sieve.rb +96 -0
  273. data/lib/rouge/lexers/slim.rb +228 -0
  274. data/lib/rouge/lexers/smalltalk.rb +116 -0
  275. data/lib/rouge/lexers/smarty.rb +80 -0
  276. data/lib/rouge/lexers/sml.rb +344 -0
  277. data/lib/rouge/lexers/sql.rb +140 -0
  278. data/lib/rouge/lexers/swift.rb +181 -0
  279. data/lib/rouge/lexers/tap.rb +87 -0
  280. data/lib/rouge/lexers/tcl.rb +192 -0
  281. data/lib/rouge/lexers/tex.rb +69 -0
  282. data/lib/rouge/lexers/toml.rb +67 -0
  283. data/lib/rouge/lexers/tsx.rb +19 -0
  284. data/lib/rouge/lexers/tulip.rb +106 -0
  285. data/lib/rouge/lexers/turtle.rb +63 -0
  286. data/lib/rouge/lexers/twig.rb +39 -0
  287. data/lib/rouge/lexers/typescript.rb +22 -0
  288. data/lib/rouge/lexers/typescript/common.rb +33 -0
  289. data/lib/rouge/lexers/vala.rb +77 -0
  290. data/lib/rouge/lexers/vb.rb +164 -0
  291. data/lib/rouge/lexers/verilog.rb +164 -0
  292. data/lib/rouge/lexers/vhdl.rb +97 -0
  293. data/lib/rouge/lexers/viml.rb +101 -0
  294. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  295. data/lib/rouge/lexers/vue.rb +122 -0
  296. data/lib/rouge/lexers/wollok.rb +103 -0
  297. data/lib/rouge/lexers/xml.rb +57 -0
  298. data/lib/rouge/lexers/yaml.rb +373 -0
  299. data/lib/rouge/plugins/redcarpet.rb +30 -0
  300. data/lib/rouge/regex_lexer.rb +441 -0
  301. data/lib/rouge/template_lexer.rb +20 -0
  302. data/lib/rouge/text_analyzer.rb +49 -0
  303. data/lib/rouge/theme.rb +213 -0
  304. data/lib/rouge/themes/base16.rb +130 -0
  305. data/lib/rouge/themes/colorful.rb +67 -0
  306. data/lib/rouge/themes/github.rb +71 -0
  307. data/lib/rouge/themes/gruvbox.rb +167 -0
  308. data/lib/rouge/themes/igor_pro.rb +20 -0
  309. data/lib/rouge/themes/molokai.rb +82 -0
  310. data/lib/rouge/themes/monokai.rb +92 -0
  311. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  312. data/lib/rouge/themes/pastie.rb +69 -0
  313. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  314. data/lib/rouge/themes/tulip.rb +69 -0
  315. data/lib/rouge/token.rb +182 -0
  316. data/lib/rouge/util.rb +101 -0
  317. data/lib/rouge/version.rb +7 -0
  318. data/rouge.gemspec +23 -0
  319. metadata +365 -0
@@ -0,0 +1,137 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Jinja < TemplateLexer
6
+ title "Jinja"
7
+ desc "Django/Jinja template engine (jinja.pocoo.org)"
8
+
9
+ tag 'jinja'
10
+ aliases 'django'
11
+
12
+ mimetypes 'application/x-django-templating', 'application/x-jinja',
13
+ 'text/html+django', 'text/html+jinja'
14
+
15
+ def self.keywords
16
+ @@keywords ||= %w(as context do else extends from ignore missing
17
+ import include reversed recursive scoped
18
+ autoescape endautoescape block endblock call endcall
19
+ filter endfilter for endfor if endif macro endmacro
20
+ set endset trans endtrans with endwith without)
21
+ end
22
+
23
+ def self.tests
24
+ @@tests ||= %w(callable defined divisibleby equalto escaped even iterable
25
+ lower mapping none number odd sameas sequence string
26
+ undefined upper)
27
+ end
28
+
29
+ def self.pseudo_keywords
30
+ @@pseudo_keywords ||= %w(true false none True False None)
31
+ end
32
+
33
+ def self.word_operators
34
+ @@word_operators ||= %w(is in and or not)
35
+ end
36
+
37
+ state :root do
38
+ # Comments
39
+ rule /{#/, Comment, :comment
40
+
41
+ # Statements
42
+ rule /\{\%/ do
43
+ token Comment::Preproc
44
+ push :statement
45
+ end
46
+
47
+ # Expressions
48
+ rule /\{\{/ do
49
+ token Comment::Preproc
50
+ push :expression
51
+ end
52
+
53
+ rule(/(.+?)(?=\\|{{|{%|{#)/m) { delegate parent }
54
+ rule(/.+/m) { delegate parent }
55
+ end
56
+
57
+ state :filter do
58
+ # Filters are called like variable|foo(arg1, ...)
59
+ rule /(\|)(\w+)/ do
60
+ groups Operator, Name::Function
61
+ end
62
+ end
63
+
64
+ state :function do
65
+ rule /(\w+)(\()/ do
66
+ groups Name::Function, Punctuation
67
+ end
68
+ end
69
+
70
+ state :text do
71
+ rule /\s+/m, Text
72
+ end
73
+
74
+ state :literal do
75
+ # Strings
76
+ rule /"(\\.|.)*?"/, Str::Double
77
+ rule /'(\\.|.)*?'/, Str::Single
78
+
79
+ # Numbers
80
+ rule /\d+(?=}\s)/, Num
81
+
82
+ # Arithmetic operators (+, -, *, **, //, /)
83
+ # TODO : implement modulo (%)
84
+ rule /(\+|\-|\*|\/\/?|\*\*?)/, Operator
85
+
86
+ # Comparisons operators (<=, <, >=, >, ==, ===, !=)
87
+ rule /(<=?|>=?|===?|!=)/, Operator
88
+
89
+ # Punctuation (the comma, [], ())
90
+ rule /,/, Punctuation
91
+ rule /\[/, Punctuation
92
+ rule /\]/, Punctuation
93
+ rule /\(/, Punctuation
94
+ rule /\)/, Punctuation
95
+ end
96
+
97
+ state :comment do
98
+ rule(/[^{#]+/m) { token Comment }
99
+ rule(/#}/) { token Comment; pop! }
100
+ end
101
+
102
+ state :expression do
103
+ rule /\w+\.?/m, Name::Variable
104
+
105
+ mixin :filter
106
+ mixin :function
107
+ mixin :literal
108
+ mixin :text
109
+
110
+ rule /%}|}}/, Comment::Preproc, :pop!
111
+ end
112
+
113
+ state :statement do
114
+ rule /(\w+\.?)/ do |m|
115
+ if self.class.keywords.include?(m[0])
116
+ groups Keyword
117
+ elsif self.class.pseudo_keywords.include?(m[0])
118
+ groups Keyword::Pseudo
119
+ elsif self.class.word_operators.include?(m[0])
120
+ groups Operator::Word
121
+ elsif self.class.tests.include?(m[0])
122
+ groups Name::Builtin
123
+ else
124
+ groups Name::Variable
125
+ end
126
+ end
127
+
128
+ mixin :filter
129
+ mixin :function
130
+ mixin :literal
131
+ mixin :text
132
+
133
+ rule /\%\}/, Comment::Preproc, :pop!
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class JSON < RegexLexer
6
+ title 'JSON'
7
+ desc "JavaScript Object Notation (json.org)"
8
+ tag 'json'
9
+ filenames '*.json'
10
+ mimetypes 'application/json', 'application/vnd.api+json',
11
+ 'application/hal+json'
12
+
13
+ state :root do
14
+ rule /\s+/m, Text::Whitespace
15
+ rule /"/, Str::Double, :string
16
+ rule /(?:true|false|null)\b/, Keyword::Constant
17
+ rule /[{},:\[\]]/, Punctuation
18
+ rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]?\d+)?/i, Num::Float
19
+ rule /-?(?:0|[1-9]\d*)(?:e[+-]?\d+)?/i, Num::Integer
20
+ end
21
+
22
+ state :string do
23
+ rule /[^\\"]+/, Str::Double
24
+ rule /\\./, Str::Escape
25
+ rule /"/, Str::Double, :pop!
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'json.rb'
6
+
7
+ class JSONDOC < JSON
8
+ desc "JavaScript Object Notation with extenstions for documentation"
9
+ tag 'json-doc'
10
+
11
+ prepend :root do
12
+ rule /([$\w]+)(\s*)(:)/ do
13
+ groups Name::Attribute, Text, Punctuation
14
+ end
15
+
16
+ rule %r(/[*].*?[*]/), Comment
17
+
18
+ rule %r(//.*?$), Comment::Single
19
+ rule /(\.\.\.)/, Comment::Single
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,151 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Jsonnet < RegexLexer
6
+ title 'Jsonnet'
7
+ desc 'An elegant, formally-specified config language for JSON'
8
+ tag 'jsonnet'
9
+ filenames '*.jsonnet'
10
+ mimetypes 'text/x-jsonnet'
11
+
12
+ def self.keywords
13
+ @keywords ||= Set.new %w(
14
+ self super local for in if then else import importstr error
15
+ tailstrict assert
16
+ )
17
+ end
18
+
19
+ def self.declarations
20
+ @declarations ||= Set.new %w(
21
+ function
22
+ )
23
+ end
24
+
25
+ def self.constants
26
+ @constants ||= Set.new %w(
27
+ null true false
28
+ )
29
+ end
30
+
31
+ def self.builtins
32
+ @builtins ||= Set.new %w(
33
+ acos
34
+ asin
35
+ atan
36
+ ceil
37
+ char
38
+ codepoint
39
+ cos
40
+ exp
41
+ exponent
42
+ filter
43
+ floor
44
+ force
45
+ length
46
+ log
47
+ makeArray
48
+ mantissa
49
+ objectFields
50
+ objectHas
51
+ pow
52
+ sin
53
+ sqrt
54
+ tan
55
+ thisFile
56
+ type
57
+ abs
58
+ assertEqual
59
+ escapeStringBash
60
+ escapeStringDollars
61
+ escapeStringJson
62
+ escapeStringPython
63
+ filterMap
64
+ flattenArrays
65
+ foldl
66
+ foldr
67
+ format
68
+ join
69
+ lines
70
+ manifestIni
71
+ manifestPython
72
+ manifestPythonVars
73
+ map
74
+ max
75
+ min
76
+ mod
77
+ range
78
+ set
79
+ setDiff
80
+ setInter
81
+ setMember
82
+ setUnion
83
+ sort
84
+ split
85
+ stringChars
86
+ substr
87
+ toString
88
+ uniq
89
+ )
90
+ end
91
+
92
+ identifier = /[a-zA-Z_][a-zA-Z0-9_]*/
93
+
94
+ state :root do
95
+ rule /\s+/, Text
96
+ rule %r(//.*?$), Comment::Single
97
+ rule %r(#.*?$), Comment::Single
98
+ rule %r(/\*.*?\*/)m, Comment::Multiline
99
+
100
+ rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]\d+)?/i, Num::Float
101
+ rule /-?(?:0|[1-9]\d*)(?:e[+-]\d+)?/i, Num::Integer
102
+
103
+ rule /[{}:\.,;+\[\]=%\(\)]/, Punctuation
104
+
105
+ rule /"/, Str, :string_double
106
+ rule /'/, Str, :string_single
107
+ rule /\|\|\|/, Str, :string_block
108
+
109
+ rule /\$/, Keyword
110
+
111
+ rule identifier do |m|
112
+ if self.class.keywords.include? m[0]
113
+ token Keyword
114
+ elsif self.class.declarations.include? m[0]
115
+ token Keyword::Declaration
116
+ elsif self.class.constants.include? m[0]
117
+ token Keyword::Constant
118
+ elsif self.class.builtins.include? m[0]
119
+ token Name::Builtin
120
+ else
121
+ token Name::Other
122
+ end
123
+ end
124
+ end
125
+
126
+ state :string do
127
+ rule /\\([\\\/bfnrt]|(u[0-9a-fA-F]{4}))/, Str::Escape
128
+ end
129
+
130
+ state :string_double do
131
+ mixin :string
132
+ rule /\\"/, Str::Escape
133
+ rule /"/, Str, :pop!
134
+ rule /[^\\"]+/, Str
135
+ end
136
+
137
+ state :string_single do
138
+ mixin :string
139
+ rule /\\'/, Str::Escape
140
+ rule /'/, Str, :pop!
141
+ rule /[^\\']+/, Str
142
+ end
143
+
144
+ state :string_block do
145
+ mixin :string
146
+ rule /\|\|\|/, Str, :pop!
147
+ rule /.*/, Str
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,102 @@
1
+ module Rouge
2
+ module Lexers
3
+ load_lexer 'javascript.rb'
4
+
5
+ class JSX < Javascript
6
+ title 'JSX'
7
+ desc 'React JSX (https://facebook.github.io/react/)'
8
+ tag 'jsx'
9
+ aliases 'jsx', 'react'
10
+ filenames '*.jsx'
11
+
12
+ mimetypes 'text/x-jsx', 'application/x-jsx'
13
+
14
+ id = Javascript.id_regex
15
+
16
+ def start_embed!
17
+ @embed ||= JSX.new(options)
18
+ @embed.reset!
19
+ @embed.push(:expr_start)
20
+ push :jsx_embed_root
21
+ end
22
+
23
+ def tag_token(name)
24
+ name[0] =~ /\p{Lower}/ ? Name::Tag : Name::Class
25
+ end
26
+
27
+ start { @html = HTML.new(options) }
28
+
29
+ state :jsx_tags do
30
+ rule /</, Punctuation, :jsx_element
31
+ end
32
+
33
+ state :jsx_internal do
34
+ rule %r(</) do
35
+ token Punctuation
36
+ goto :jsx_end_tag
37
+ end
38
+
39
+ rule /{/ do
40
+ token Str::Interpol
41
+ start_embed!
42
+ end
43
+
44
+ rule /[^<>{]+/ do
45
+ delegate @html
46
+ end
47
+
48
+ mixin :jsx_tags
49
+ end
50
+
51
+ prepend :expr_start do
52
+ mixin :jsx_tags
53
+ end
54
+
55
+ state :jsx_tag do
56
+ mixin :comments_and_whitespace
57
+ rule /#{id}/ do |m|
58
+ token tag_token(m[0])
59
+ end
60
+
61
+ rule /[.]/, Punctuation
62
+ end
63
+
64
+ state :jsx_end_tag do
65
+ mixin :jsx_tag
66
+ rule />/, Punctuation, :pop!
67
+ end
68
+
69
+ state :jsx_element do
70
+ rule /#{id}=/, Name::Attribute, :jsx_attribute
71
+ mixin :jsx_tag
72
+ rule />/ do token Punctuation; goto :jsx_internal end
73
+ rule %r(/>), Punctuation, :pop!
74
+ end
75
+
76
+ state :jsx_attribute do
77
+ rule /"(\\[\\"]|[^"])*"/, Str::Double, :pop!
78
+ rule /'(\\[\\']|[^'])*'/, Str::Single, :pop!
79
+ rule /{/ do
80
+ token Str::Interpol
81
+ pop!
82
+ start_embed!
83
+ end
84
+ end
85
+
86
+ state :jsx_embed_root do
87
+ rule /[.][.][.]/, Punctuation
88
+ rule /}/, Str::Interpol, :pop!
89
+ mixin :jsx_embed
90
+ end
91
+
92
+ state :jsx_embed do
93
+ rule /{/ do delegate @embed; push :jsx_embed end
94
+ rule /}/ do delegate @embed; pop! end
95
+ rule /[^{}]+/ do
96
+ delegate @embed
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+
@@ -0,0 +1,172 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Julia < RegexLexer
6
+ title "Julia"
7
+ desc "The Julia programming language"
8
+ tag 'julia'
9
+ aliases 'jl'
10
+ filenames '*.jl'
11
+ mimetypes 'text/x-julia', 'application/x-julia'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'julia'
15
+ end
16
+
17
+ BUILTINS = /\b(?:
18
+ applicable | assert | convert
19
+ | dlopen | dlsym | edit
20
+ | eps | error | exit
21
+ | finalizer | hash | im
22
+ | Inf | invoke | is
23
+ | isa | isequal | load
24
+ | method_exists | Nan | new
25
+ | ntuple | pi | promote
26
+ | promote_type | realmax | realmin
27
+ | sizeof | subtype | system
28
+ | throw | tuple | typemax
29
+ | typemin | typeof | uid
30
+ | whos
31
+ )\b/x
32
+
33
+ KEYWORDS = /\b(?:
34
+ function | return | module | import | export
35
+ | if | else | elseif | end | for
36
+ | in | while | try | catch | super
37
+ | const
38
+ )\b/x
39
+
40
+ TYPES = /\b(?:
41
+ Int | UInt | Int8
42
+ | UInt8 | Int16 | UInt16
43
+ | Int32 | UInt32 | Int64
44
+ | UInt64 | Int128 | UInt128
45
+ | Float16 | Float32 | Float64
46
+ | Bool | Inf | Inf16
47
+ | Inf32 | NaN | NaN16
48
+ | NaN32 | BigInt | BigFloat
49
+ | Char | ASCIIString | UTF8String
50
+ | UTF16String | UTF32String | AbstractString
51
+ | WString | String | Regex
52
+ | RegexMatch | Complex64 | Complex128
53
+ | Any | Nothing | None
54
+ )\b/x
55
+
56
+ OPERATORS = / \+ | = | - | \* | \/
57
+ | \\ | & | \| | \$ | ~
58
+ | \^ | % | ! | >>> | >>
59
+ | << | && | \|\| | \+= | -=
60
+ | \*= | \/= | \\= | ÷= | %=
61
+ | \^= | &= | \|= | \$= | >>>=
62
+ | >>= | <<= | == | != | ≠
63
+ | <= | ≤ | >= | ≥ | \.
64
+ | :: | <: | -> | \? | \.\*
65
+ | \.\^ | \.\\ | \.\/ | \\ | <
66
+ | >
67
+ /x
68
+
69
+ PUNCTUATION = / [ \[ \] { } : \( \) , ; @ ] /x
70
+
71
+
72
+ state :root do
73
+ rule /\n/, Text
74
+ rule /[^\S\n]+/, Text
75
+ rule /#=/, Comment::Multiline, :blockcomment
76
+ rule /#.*$/, Comment
77
+ rule OPERATORS, Operator
78
+ rule /\\\n/, Text
79
+ rule /\\/, Text
80
+
81
+
82
+ # functions
83
+ rule /(function)((?:\s|\\\s)+)/ do
84
+ groups Keyword, Name::Function
85
+ push :funcname
86
+ end
87
+
88
+ # types
89
+ rule /(type|typealias|abstract)((?:\s|\\\s)+)/ do
90
+ groups Keyword, Name::Class
91
+ push :typename
92
+ end
93
+ rule TYPES, Keyword::Type
94
+
95
+ # keywords
96
+ rule /(local|global|const)\b/, Keyword::Declaration
97
+ rule KEYWORDS, Keyword
98
+
99
+ rule BUILTINS, Name::Builtin
100
+
101
+ # backticks
102
+ rule /`.*?`/, Literal::String::Backtick
103
+
104
+ # chars
105
+ rule /'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'/, Literal::String::Char
106
+
107
+ # try to match trailing transpose
108
+ rule /(?<=[.\w)\]])\'+/, Operator
109
+
110
+ # strings
111
+ rule /(?:[IL])"/, Literal::String, :string
112
+ rule /[E]?"/, Literal::String, :string
113
+
114
+ # names
115
+ rule /@[\w.]+/, Name::Decorator
116
+ rule /(?:[a-zA-Z_\u00A1-\uffff]|[\u1000-\u10ff])(?:[a-zA-Z_0-9\u00A1-\uffff]|[\u1000-\u10ff])*!*/, Name
117
+
118
+ rule PUNCTUATION, Other
119
+
120
+ # numbers
121
+ rule /(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
122
+ rule /(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
123
+ rule /\d+(_\d+)+[eEf][+-]?[0-9]+/, Literal::Number::Float
124
+ rule /\d+[eEf][+-]?[0-9]+/, Literal::Number::Float
125
+ rule /0b[01]+(_[01]+)+/, Literal::Number::Bin
126
+ rule /0b[01]+/, Literal::Number::Bin
127
+ rule /0o[0-7]+(_[0-7]+)+/, Literal::Number::Oct
128
+ rule /0o[0-7]+/, Literal::Number::Oct
129
+ rule /0x[a-fA-F0-9]+(_[a-fA-F0-9]+)+/, Literal::Number::Hex
130
+ rule /0x[a-fA-F0-9]+/, Literal::Number::Hex
131
+ rule /\d+(_\d+)+/, Literal::Number::Integer
132
+ rule /\d+/, Literal::Number::Integer
133
+ end
134
+
135
+
136
+ state :funcname do
137
+ rule /[a-zA-Z_]\w*/, Name::Function, :pop!
138
+ rule /\([^\s\w{]{1,2}\)/, Operator, :pop!
139
+ rule /[^\s\w{]{1,2}/, Operator, :pop!
140
+ end
141
+
142
+ state :typename do
143
+ rule /[a-zA-Z_]\w*/, Name::Class, :pop!
144
+ end
145
+
146
+ state :stringescape do
147
+ rule /\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/,
148
+ Literal::String::Escape
149
+ end
150
+
151
+ state :blockcomment do
152
+ rule /[^=#]/, Comment::Multiline
153
+ rule /#=/, Comment::Multiline, :blockcomment
154
+ rule /\=#/, Comment::Multiline, :pop!
155
+ rule /[=#]/, Comment::Multiline
156
+ end
157
+
158
+ state :string do
159
+ mixin :stringescape
160
+
161
+ rule /"/, Literal::String, :pop!
162
+ rule /\\\\|\\"|\\\n/, Literal::String::Escape # included here for raw strings
163
+ rule /\$(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/, Literal::String::Interpol
164
+ rule /[^\\"$]+/, Literal::String
165
+ # quotes, dollar signs, and backslashes must be parsed one at a time
166
+ rule /["\\]/, Literal::String
167
+ # unhandled string formatting sign
168
+ rule /\$/, Literal::String
169
+ end
170
+ end
171
+ end
172
+ end