rougegal 2.1.2

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 (311) 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/cli.rb +394 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/apache +21 -0
  9. data/lib/rouge/demos/apiblueprint +33 -0
  10. data/lib/rouge/demos/applescript +2 -0
  11. data/lib/rouge/demos/awk +4 -0
  12. data/lib/rouge/demos/biml +38 -0
  13. data/lib/rouge/demos/bsl +7 -0
  14. data/lib/rouge/demos/c +8 -0
  15. data/lib/rouge/demos/ceylon +7 -0
  16. data/lib/rouge/demos/cfscript +18 -0
  17. data/lib/rouge/demos/clojure +5 -0
  18. data/lib/rouge/demos/cmake +7 -0
  19. data/lib/rouge/demos/coffeescript +5 -0
  20. data/lib/rouge/demos/common_lisp +1 -0
  21. data/lib/rouge/demos/conf +4 -0
  22. data/lib/rouge/demos/console +6 -0
  23. data/lib/rouge/demos/coq +13 -0
  24. data/lib/rouge/demos/cpp +8 -0
  25. data/lib/rouge/demos/csharp +5 -0
  26. data/lib/rouge/demos/css +4 -0
  27. data/lib/rouge/demos/d +16 -0
  28. data/lib/rouge/demos/dart +6 -0
  29. data/lib/rouge/demos/diff +7 -0
  30. data/lib/rouge/demos/digdag +19 -0
  31. data/lib/rouge/demos/docker +9 -0
  32. data/lib/rouge/demos/dot +5 -0
  33. data/lib/rouge/demos/eiffel +30 -0
  34. data/lib/rouge/demos/elixir +1 -0
  35. data/lib/rouge/demos/erb +1 -0
  36. data/lib/rouge/demos/erlang +7 -0
  37. data/lib/rouge/demos/factor +5 -0
  38. data/lib/rouge/demos/fortran +22 -0
  39. data/lib/rouge/demos/fsharp +12 -0
  40. data/lib/rouge/demos/gal +22 -0
  41. data/lib/rouge/demos/gherkin +17 -0
  42. data/lib/rouge/demos/glsl +14 -0
  43. data/lib/rouge/demos/go +7 -0
  44. data/lib/rouge/demos/gradle +10 -0
  45. data/lib/rouge/demos/graphql +17 -0
  46. data/lib/rouge/demos/groovy +9 -0
  47. data/lib/rouge/demos/haml +5 -0
  48. data/lib/rouge/demos/handlebars +7 -0
  49. data/lib/rouge/demos/haskell +6 -0
  50. data/lib/rouge/demos/html +8 -0
  51. data/lib/rouge/demos/http +14 -0
  52. data/lib/rouge/demos/hylang +10 -0
  53. data/lib/rouge/demos/idlang +8 -0
  54. data/lib/rouge/demos/igorpro +9 -0
  55. data/lib/rouge/demos/ini +4 -0
  56. data/lib/rouge/demos/io +11 -0
  57. data/lib/rouge/demos/irb +4 -0
  58. data/lib/rouge/demos/irb_output +2 -0
  59. data/lib/rouge/demos/java +5 -0
  60. data/lib/rouge/demos/javascript +1 -0
  61. data/lib/rouge/demos/jinja +9 -0
  62. data/lib/rouge/demos/json +1 -0
  63. data/lib/rouge/demos/json-doc +1 -0
  64. data/lib/rouge/demos/jsonnet +28 -0
  65. data/lib/rouge/demos/jsx +17 -0
  66. data/lib/rouge/demos/julia +11 -0
  67. data/lib/rouge/demos/kotlin +3 -0
  68. data/lib/rouge/demos/lasso +12 -0
  69. data/lib/rouge/demos/liquid +11 -0
  70. data/lib/rouge/demos/literate_coffeescript +3 -0
  71. data/lib/rouge/demos/literate_haskell +7 -0
  72. data/lib/rouge/demos/llvm +20 -0
  73. data/lib/rouge/demos/lua +12 -0
  74. data/lib/rouge/demos/make +6 -0
  75. data/lib/rouge/demos/markdown +4 -0
  76. data/lib/rouge/demos/matlab +6 -0
  77. data/lib/rouge/demos/moonscript +16 -0
  78. data/lib/rouge/demos/mosel +10 -0
  79. data/lib/rouge/demos/mxml +22 -0
  80. data/lib/rouge/demos/nasm +26 -0
  81. data/lib/rouge/demos/nginx +5 -0
  82. data/lib/rouge/demos/nim +27 -0
  83. data/lib/rouge/demos/objective_c +18 -0
  84. data/lib/rouge/demos/ocaml +12 -0
  85. data/lib/rouge/demos/pascal +14 -0
  86. data/lib/rouge/demos/perl +5 -0
  87. data/lib/rouge/demos/php +3 -0
  88. data/lib/rouge/demos/plaintext +1 -0
  89. data/lib/rouge/demos/plist +142 -0
  90. data/lib/rouge/demos/pony +17 -0
  91. data/lib/rouge/demos/powershell +49 -0
  92. data/lib/rouge/demos/praat +26 -0
  93. data/lib/rouge/demos/prolog +9 -0
  94. data/lib/rouge/demos/prometheus +9 -0
  95. data/lib/rouge/demos/properties +7 -0
  96. data/lib/rouge/demos/protobuf +5 -0
  97. data/lib/rouge/demos/puppet +6 -0
  98. data/lib/rouge/demos/python +6 -0
  99. data/lib/rouge/demos/q +2 -0
  100. data/lib/rouge/demos/qml +9 -0
  101. data/lib/rouge/demos/r +8 -0
  102. data/lib/rouge/demos/racket +24 -0
  103. data/lib/rouge/demos/ruby +9 -0
  104. data/lib/rouge/demos/rust +12 -0
  105. data/lib/rouge/demos/sass +3 -0
  106. data/lib/rouge/demos/scala +3 -0
  107. data/lib/rouge/demos/scheme +4 -0
  108. data/lib/rouge/demos/scss +5 -0
  109. data/lib/rouge/demos/sed +4 -0
  110. data/lib/rouge/demos/shell +2 -0
  111. data/lib/rouge/demos/sieve +10 -0
  112. data/lib/rouge/demos/slim +17 -0
  113. data/lib/rouge/demos/smalltalk +6 -0
  114. data/lib/rouge/demos/smarty +12 -0
  115. data/lib/rouge/demos/sml +4 -0
  116. data/lib/rouge/demos/sql +1 -0
  117. data/lib/rouge/demos/swift +5 -0
  118. data/lib/rouge/demos/tap +5 -0
  119. data/lib/rouge/demos/tcl +1 -0
  120. data/lib/rouge/demos/tex +1 -0
  121. data/lib/rouge/demos/toml +9 -0
  122. data/lib/rouge/demos/tsx +17 -0
  123. data/lib/rouge/demos/tulip +13 -0
  124. data/lib/rouge/demos/turtle +26 -0
  125. data/lib/rouge/demos/twig +9 -0
  126. data/lib/rouge/demos/typescript +1 -0
  127. data/lib/rouge/demos/vala +8 -0
  128. data/lib/rouge/demos/vb +4 -0
  129. data/lib/rouge/demos/verilog +27 -0
  130. data/lib/rouge/demos/vhdl +23 -0
  131. data/lib/rouge/demos/viml +14 -0
  132. data/lib/rouge/demos/vue +11 -0
  133. data/lib/rouge/demos/wollok +11 -0
  134. data/lib/rouge/demos/xml +2 -0
  135. data/lib/rouge/demos/yaml +4 -0
  136. data/lib/rouge/formatter.rb +75 -0
  137. data/lib/rouge/formatters/html.rb +37 -0
  138. data/lib/rouge/formatters/html_inline.rb +30 -0
  139. data/lib/rouge/formatters/html_legacy.rb +44 -0
  140. data/lib/rouge/formatters/html_linewise.rb +27 -0
  141. data/lib/rouge/formatters/html_pygments.rb +16 -0
  142. data/lib/rouge/formatters/html_table.rb +61 -0
  143. data/lib/rouge/formatters/null.rb +19 -0
  144. data/lib/rouge/formatters/terminal256.rb +172 -0
  145. data/lib/rouge/guesser.rb +55 -0
  146. data/lib/rouge/guessers/filename.rb +25 -0
  147. data/lib/rouge/guessers/glob_mapping.rb +46 -0
  148. data/lib/rouge/guessers/mimetype.rb +14 -0
  149. data/lib/rouge/guessers/modeline.rb +42 -0
  150. data/lib/rouge/guessers/source.rb +39 -0
  151. data/lib/rouge/lexer.rb +452 -0
  152. data/lib/rouge/lexers/abap.rb +238 -0
  153. data/lib/rouge/lexers/actionscript.rb +195 -0
  154. data/lib/rouge/lexers/apache.rb +71 -0
  155. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  156. data/lib/rouge/lexers/apiblueprint.rb +51 -0
  157. data/lib/rouge/lexers/apple_script.rb +367 -0
  158. data/lib/rouge/lexers/awk.rb +161 -0
  159. data/lib/rouge/lexers/biml.rb +41 -0
  160. data/lib/rouge/lexers/bsl.rb +81 -0
  161. data/lib/rouge/lexers/c.rb +217 -0
  162. data/lib/rouge/lexers/ceylon.rb +123 -0
  163. data/lib/rouge/lexers/cfscript.rb +153 -0
  164. data/lib/rouge/lexers/clojure.rb +112 -0
  165. data/lib/rouge/lexers/cmake.rb +206 -0
  166. data/lib/rouge/lexers/coffeescript.rb +174 -0
  167. data/lib/rouge/lexers/common_lisp.rb +345 -0
  168. data/lib/rouge/lexers/conf.rb +24 -0
  169. data/lib/rouge/lexers/console.rb +136 -0
  170. data/lib/rouge/lexers/coq.rb +191 -0
  171. data/lib/rouge/lexers/cpp.rb +78 -0
  172. data/lib/rouge/lexers/csharp.rb +114 -0
  173. data/lib/rouge/lexers/css.rb +273 -0
  174. data/lib/rouge/lexers/d.rb +176 -0
  175. data/lib/rouge/lexers/dart.rb +104 -0
  176. data/lib/rouge/lexers/diff.rb +31 -0
  177. data/lib/rouge/lexers/digdag.rb +72 -0
  178. data/lib/rouge/lexers/docker.rb +50 -0
  179. data/lib/rouge/lexers/dot.rb +68 -0
  180. data/lib/rouge/lexers/eiffel.rb +65 -0
  181. data/lib/rouge/lexers/elixir.rb +133 -0
  182. data/lib/rouge/lexers/erb.rb +56 -0
  183. data/lib/rouge/lexers/erlang.rb +118 -0
  184. data/lib/rouge/lexers/factor.rb +302 -0
  185. data/lib/rouge/lexers/fortran.rb +170 -0
  186. data/lib/rouge/lexers/fsharp.rb +118 -0
  187. data/lib/rouge/lexers/gal.rb +50 -0
  188. data/lib/rouge/lexers/gherkin.rb +137 -0
  189. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  190. data/lib/rouge/lexers/glsl.rb +135 -0
  191. data/lib/rouge/lexers/go.rb +178 -0
  192. data/lib/rouge/lexers/gradle.rb +37 -0
  193. data/lib/rouge/lexers/graphql.rb +243 -0
  194. data/lib/rouge/lexers/groovy.rb +112 -0
  195. data/lib/rouge/lexers/haml.rb +233 -0
  196. data/lib/rouge/lexers/handlebars.rb +79 -0
  197. data/lib/rouge/lexers/haskell.rb +183 -0
  198. data/lib/rouge/lexers/html.rb +138 -0
  199. data/lib/rouge/lexers/http.rb +80 -0
  200. data/lib/rouge/lexers/hylang.rb +93 -0
  201. data/lib/rouge/lexers/idlang.rb +316 -0
  202. data/lib/rouge/lexers/igorpro.rb +407 -0
  203. data/lib/rouge/lexers/ini.rb +57 -0
  204. data/lib/rouge/lexers/io.rb +68 -0
  205. data/lib/rouge/lexers/irb.rb +66 -0
  206. data/lib/rouge/lexers/java.rb +87 -0
  207. data/lib/rouge/lexers/javascript.rb +269 -0
  208. data/lib/rouge/lexers/jinja.rb +137 -0
  209. data/lib/rouge/lexers/json.rb +29 -0
  210. data/lib/rouge/lexers/json_doc.rb +23 -0
  211. data/lib/rouge/lexers/jsonnet.rb +151 -0
  212. data/lib/rouge/lexers/jsx.rb +102 -0
  213. data/lib/rouge/lexers/julia.rb +172 -0
  214. data/lib/rouge/lexers/kotlin.rb +84 -0
  215. data/lib/rouge/lexers/lasso.rb +217 -0
  216. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  217. data/lib/rouge/lexers/liquid.rb +287 -0
  218. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  219. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  220. data/lib/rouge/lexers/llvm.rb +84 -0
  221. data/lib/rouge/lexers/lua.rb +125 -0
  222. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  223. data/lib/rouge/lexers/make.rb +116 -0
  224. data/lib/rouge/lexers/markdown.rb +154 -0
  225. data/lib/rouge/lexers/matlab.rb +75 -0
  226. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  227. data/lib/rouge/lexers/moonscript.rb +114 -0
  228. data/lib/rouge/lexers/mosel.rb +231 -0
  229. data/lib/rouge/lexers/mxml.rb +68 -0
  230. data/lib/rouge/lexers/nasm.rb +203 -0
  231. data/lib/rouge/lexers/nginx.rb +71 -0
  232. data/lib/rouge/lexers/nim.rb +152 -0
  233. data/lib/rouge/lexers/objective_c.rb +208 -0
  234. data/lib/rouge/lexers/ocaml.rb +100 -0
  235. data/lib/rouge/lexers/pascal.rb +66 -0
  236. data/lib/rouge/lexers/perl.rb +197 -0
  237. data/lib/rouge/lexers/php.rb +193 -0
  238. data/lib/rouge/lexers/php/builtins.rb +194 -0
  239. data/lib/rouge/lexers/plain_text.rb +26 -0
  240. data/lib/rouge/lexers/plist.rb +49 -0
  241. data/lib/rouge/lexers/pony.rb +93 -0
  242. data/lib/rouge/lexers/powershell.rb +132 -0
  243. data/lib/rouge/lexers/praat.rb +350 -0
  244. data/lib/rouge/lexers/prolog.rb +64 -0
  245. data/lib/rouge/lexers/prometheus.rb +121 -0
  246. data/lib/rouge/lexers/properties.rb +55 -0
  247. data/lib/rouge/lexers/protobuf.rb +70 -0
  248. data/lib/rouge/lexers/puppet.rb +128 -0
  249. data/lib/rouge/lexers/python.rb +231 -0
  250. data/lib/rouge/lexers/q.rb +124 -0
  251. data/lib/rouge/lexers/qml.rb +73 -0
  252. data/lib/rouge/lexers/r.rb +89 -0
  253. data/lib/rouge/lexers/racket.rb +542 -0
  254. data/lib/rouge/lexers/ruby.rb +437 -0
  255. data/lib/rouge/lexers/rust.rb +192 -0
  256. data/lib/rouge/lexers/sass.rb +74 -0
  257. data/lib/rouge/lexers/sass/common.rb +180 -0
  258. data/lib/rouge/lexers/scala.rb +142 -0
  259. data/lib/rouge/lexers/scheme.rb +112 -0
  260. data/lib/rouge/lexers/scss.rb +34 -0
  261. data/lib/rouge/lexers/sed.rb +172 -0
  262. data/lib/rouge/lexers/shell.rb +180 -0
  263. data/lib/rouge/lexers/sieve.rb +96 -0
  264. data/lib/rouge/lexers/slim.rb +228 -0
  265. data/lib/rouge/lexers/smalltalk.rb +116 -0
  266. data/lib/rouge/lexers/smarty.rb +91 -0
  267. data/lib/rouge/lexers/sml.rb +348 -0
  268. data/lib/rouge/lexers/sql.rb +140 -0
  269. data/lib/rouge/lexers/swift.rb +161 -0
  270. data/lib/rouge/lexers/tap.rb +91 -0
  271. data/lib/rouge/lexers/tcl.rb +192 -0
  272. data/lib/rouge/lexers/tex.rb +69 -0
  273. data/lib/rouge/lexers/toml.rb +71 -0
  274. data/lib/rouge/lexers/tsx.rb +19 -0
  275. data/lib/rouge/lexers/tulip.rb +107 -0
  276. data/lib/rouge/lexers/turtle.rb +72 -0
  277. data/lib/rouge/lexers/twig.rb +39 -0
  278. data/lib/rouge/lexers/typescript.rb +22 -0
  279. data/lib/rouge/lexers/typescript/common.rb +33 -0
  280. data/lib/rouge/lexers/vala.rb +77 -0
  281. data/lib/rouge/lexers/vb.rb +164 -0
  282. data/lib/rouge/lexers/verilog.rb +164 -0
  283. data/lib/rouge/lexers/vhdl.rb +97 -0
  284. data/lib/rouge/lexers/viml.rb +101 -0
  285. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  286. data/lib/rouge/lexers/vue.rb +124 -0
  287. data/lib/rouge/lexers/wollok.rb +107 -0
  288. data/lib/rouge/lexers/xml.rb +59 -0
  289. data/lib/rouge/lexers/yaml.rb +373 -0
  290. data/lib/rouge/plugins/redcarpet.rb +30 -0
  291. data/lib/rouge/regex_lexer.rb +441 -0
  292. data/lib/rouge/template_lexer.rb +20 -0
  293. data/lib/rouge/text_analyzer.rb +48 -0
  294. data/lib/rouge/theme.rb +213 -0
  295. data/lib/rouge/themes/base16.rb +130 -0
  296. data/lib/rouge/themes/colorful.rb +67 -0
  297. data/lib/rouge/themes/github.rb +71 -0
  298. data/lib/rouge/themes/gruvbox.rb +167 -0
  299. data/lib/rouge/themes/igor_pro.rb +20 -0
  300. data/lib/rouge/themes/molokai.rb +82 -0
  301. data/lib/rouge/themes/monokai.rb +92 -0
  302. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  303. data/lib/rouge/themes/pastie.rb +69 -0
  304. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  305. data/lib/rouge/themes/tulip.rb +69 -0
  306. data/lib/rouge/token.rb +182 -0
  307. data/lib/rouge/util.rb +101 -0
  308. data/lib/rouge/version.rb +7 -0
  309. data/lib/rougegal.rb +80 -0
  310. data/rougegal.gemspec +18 -0
  311. metadata +356 -0
@@ -0,0 +1,84 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Kotlin < RegexLexer
6
+ title "Kotlin"
7
+ desc "Kotlin <http://kotlinlang.org>"
8
+
9
+ tag 'kotlin'
10
+ filenames '*.kt'
11
+ mimetypes 'text/x-kotlin'
12
+
13
+ keywords = %w(
14
+ abstract annotation as break by catch class companion const
15
+ constructor continue crossinline do dynamic else enum
16
+ external false final finally for fun get if import in infix
17
+ inline inner interface internal is lateinit noinline null
18
+ object open operator out override package private protected
19
+ public reified return sealed set super tailrec this throw
20
+ true try typealias typeof val var vararg when where while
21
+ yield
22
+ )
23
+
24
+ name = %r'@?[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}][\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*'
25
+
26
+ id = %r'(#{name}|`#{name}`)'
27
+
28
+ state :root do
29
+ rule %r'^\s*\[.*?\]', Name::Attribute
30
+ rule %r'[^\S\n]+', Text
31
+ rule %r'\\\n', Text # line continuation
32
+ rule %r'//.*?\n', Comment::Single
33
+ rule %r'/[*].*?[*]/'m, Comment::Multiline
34
+ rule %r'\n', Text
35
+ rule %r'::|!!|\?[:.]', Operator
36
+ rule %r"(\.\.)", Operator
37
+ rule %r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation
38
+ rule %r'[{}]', Punctuation
39
+ rule %r'@"(""|[^"])*"'m, Str
40
+ rule %r'""".*?"""'m, Str
41
+ rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
42
+ rule %r"'\\.'|'[^\\]'", Str::Char
43
+ rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
44
+ rule %r'(companion)(\s+)(object)' do
45
+ groups Keyword, Text, Keyword
46
+ end
47
+ rule %r'(class|data\s+class|interface|object)(\s+)' do
48
+ groups Keyword::Declaration, Text
49
+ push :class
50
+ end
51
+ rule %r'(package|import)(\s+)' do
52
+ groups Keyword, Text
53
+ push :package
54
+ end
55
+ rule %r'(val|var)(\s+)' do
56
+ groups Keyword::Declaration, Text
57
+ push :property
58
+ end
59
+ rule %r'(fun)(\s+)' do
60
+ groups Keyword, Text
61
+ push :function
62
+ end
63
+ rule /(?:#{keywords.join('|')})\b/, Keyword
64
+ rule id, Name
65
+ end
66
+
67
+ state :package do
68
+ rule /\S+/, Name::Namespace, :pop!
69
+ end
70
+
71
+ state :class do
72
+ rule id, Name::Class, :pop!
73
+ end
74
+
75
+ state :property do
76
+ rule id, Name::Property, :pop!
77
+ end
78
+
79
+ state :function do
80
+ rule id, Name::Function, :pop!
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,217 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ require 'yaml'
4
+
5
+ module Rouge
6
+ module Lexers
7
+ class Lasso < TemplateLexer
8
+ title "Lasso"
9
+ desc "The Lasso programming language (lassosoft.com)"
10
+ tag 'lasso'
11
+ aliases 'lassoscript'
12
+ filenames '*.lasso', '*.lasso[89]'
13
+ mimetypes 'text/x-lasso', 'text/html+lasso', 'application/x-httpd-lasso'
14
+
15
+ option :start_inline, 'Whether to start inline instead of requiring <?lasso or ['
16
+
17
+ def self.analyze_text(text)
18
+ rv = 0.0
19
+ rv += 1 if text.shebang?('lasso9')
20
+ rv += 0.4 if text =~ /<\?(lasso(script)?|=)|no_square_brackets|noprocess/i
21
+ rv += 0.2 if text =~ /define(_tag|_type|\s)/i
22
+ return rv
23
+ end
24
+
25
+ def initialize(*)
26
+ super
27
+
28
+ @start_inline = bool_option(:start_inline)
29
+ end
30
+
31
+ def start_inline?
32
+ @start_inline
33
+ end
34
+
35
+ start do
36
+ push :lasso if start_inline?
37
+ end
38
+
39
+ class << self
40
+ attr_reader :keywords
41
+ end
42
+
43
+ # Load Lasso keywords from separate YML file
44
+ @keywords = ::YAML.load_file(Pathname.new(__FILE__).dirname.join('lasso/keywords.yml')).tap do |h|
45
+ h.each do |k,v|
46
+ h[k] = Set.new v
47
+ end
48
+ end
49
+
50
+ id = /[a-z_][\w.]*/i
51
+
52
+ state :root do
53
+ rule /^#![ \S]+lasso9\b/, Comment::Preproc, :lasso
54
+ rule(/(?=\[|<)/) { push :delimiters }
55
+ rule /\s+/, Text::Whitespace
56
+ rule(//) { push :delimiters; push :lassofile }
57
+ end
58
+
59
+ state :delimiters do
60
+ rule /\[no_square_brackets\]/, Comment::Preproc, :nosquarebrackets
61
+ rule /\[noprocess\]/, Comment::Preproc, :noprocess
62
+ rule /\[/, Comment::Preproc, :squarebrackets
63
+ rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
64
+ rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=)))+/im) { delegate parent }
65
+ end
66
+
67
+ state :nosquarebrackets do
68
+ rule /\[noprocess\]/, Comment::Preproc, :noprocess
69
+ rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
70
+ rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=))|\[(?!noprocess))+/im) { delegate parent }
71
+ end
72
+
73
+ state :noprocess do
74
+ rule %r(\[/noprocess\]), Comment::Preproc, :pop!
75
+ rule(%r(([^\[]|\[(?!/noprocess))+)i) { delegate parent }
76
+ end
77
+
78
+ state :squarebrackets do
79
+ rule /\]/, Comment::Preproc, :pop!
80
+ mixin :lasso
81
+ end
82
+
83
+ state :anglebrackets do
84
+ rule /\?>/, Comment::Preproc, :pop!
85
+ mixin :lasso
86
+ end
87
+
88
+ state :lassofile do
89
+ rule /\]|\?>/, Comment::Preproc, :pop!
90
+ mixin :lasso
91
+ end
92
+
93
+ state :whitespacecomments do
94
+ rule /\s+/, Text
95
+ rule %r(//.*?\n), Comment::Single
96
+ rule %r(/\*\*!.*?\*/)m, Comment::Doc
97
+ rule %r(/\*.*?\*/)m, Comment::Multiline
98
+ end
99
+
100
+ state :lasso do
101
+ mixin :whitespacecomments
102
+
103
+ # literals
104
+ rule /\d*\.\d+(e[+-]?\d+)?/i, Num::Float
105
+ rule /0x[\da-f]+/i, Num::Hex
106
+ rule /\d+/, Num::Integer
107
+ rule /(infinity|NaN)\b/i, Num
108
+ rule /'[^'\\]*(\\.[^'\\]*)*'/m, Str::Single
109
+ rule /"[^"\\]*(\\.[^"\\]*)*"/m, Str::Double
110
+ rule /`[^`]*`/m, Str::Backtick
111
+
112
+ # names
113
+ rule /\$#{id}/, Name::Variable
114
+ rule /#(#{id}|\d+\b)/, Name::Variable::Instance
115
+ rule /(\.\s*)('#{id}')/ do
116
+ groups Name::Builtin::Pseudo, Name::Variable::Class
117
+ end
118
+ rule /(self)(\s*->\s*)('#{id}')/i do
119
+ groups Name::Builtin::Pseudo, Operator, Name::Variable::Class
120
+ end
121
+ rule /(\.\.?\s*)(#{id}(=(?!=))?)/ do
122
+ groups Name::Builtin::Pseudo, Name::Other
123
+ end
124
+ rule /(->\\?\s*|&\s*)(#{id}(=(?!=))?)/ do
125
+ groups Operator, Name::Other
126
+ end
127
+ rule /(?<!->)(self|inherited|currentcapture|givenblock)\b/i, Name::Builtin::Pseudo
128
+ rule /-(?!infinity)#{id}/i, Name::Attribute
129
+ rule /::\s*#{id}/, Name::Label
130
+ rule /error_((code|msg)_\w+|adderror|columnrestriction|databaseconnectionunavailable|databasetimeout|deleteerror|fieldrestriction|filenotfound|invaliddatabase|invalidpassword|invalidusername|modulenotfound|noerror|nopermission|outofmemory|reqcolumnmissing|reqfieldmissing|requiredcolumnmissing|requiredfieldmissing|updateerror)/i, Name::Exception
131
+
132
+ # definitions
133
+ rule /(define)(\s+)(#{id})(\s*=>\s*)(type|trait|thread)\b/i do
134
+ groups Keyword::Declaration, Text, Name::Class, Operator, Keyword
135
+ end
136
+ rule %r((define)(\s+)(#{id})(\s*->\s*)(#{id}=?|[-+*/%]))i do
137
+ groups Keyword::Declaration, Text, Name::Class, Operator, Name::Function
138
+ push :signature
139
+ end
140
+ rule /(define)(\s+)(#{id})/i do
141
+ groups Keyword::Declaration, Text, Name::Function
142
+ push :signature
143
+ end
144
+ rule %r((public|protected|private|provide)(\s+)((#{id}=?|[-+*/%])(?=\s*\()))i do
145
+ groups Keyword, Text, Name::Function
146
+ push :signature
147
+ end
148
+ rule /(public|protected|private|provide)(\s+)(#{id})/i do
149
+ groups Keyword, Text, Name::Function
150
+ end
151
+
152
+ # keywords
153
+ rule /(true|false|none|minimal|full|all|void)\b/i, Keyword::Constant
154
+ rule /(local|var|variable|global|data(?=\s))\b/i, Keyword::Declaration
155
+ rule /(array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray)\b/i, Keyword::Type
156
+ rule /(#{id})(\s+)(in)\b/i do
157
+ groups Name, Text, Keyword
158
+ end
159
+ rule /(let|into)(\s+)(#{id})/i do
160
+ groups Keyword, Text, Name
161
+ end
162
+
163
+ # other
164
+ rule /,/, Punctuation, :commamember
165
+ rule /(and|or|not)\b/i, Operator::Word
166
+ rule /(#{id})(\s*::\s*#{id})?(\s*=(?!=|>))/ do
167
+ groups Name, Name::Label, Operator
168
+ end
169
+
170
+ rule %r((/?)([\w.]+)) do |m|
171
+ name = m[2].downcase
172
+
173
+ if m[1] != ''
174
+ token Punctuation, m[1]
175
+ end
176
+
177
+ if name == 'namespace_using'
178
+ token Keyword::Namespace, m[2]
179
+ elsif self.class.keywords[:keywords].include? name
180
+ token Keyword, m[2]
181
+ elsif self.class.keywords[:types_traits].include? name
182
+ token Name::Builtin, m[2]
183
+ else
184
+ token Name::Other, m[2]
185
+ end
186
+ end
187
+
188
+ rule /(=)(n?bw|n?ew|n?cn|lte?|gte?|n?eq|n?rx|ft)\b/i do
189
+ groups Operator, Operator::Word
190
+ end
191
+ rule %r(:=|[-+*/%=<>&|!?\\]+), Operator
192
+ rule /[{}():;,@^]/, Punctuation
193
+ end
194
+
195
+ state :signature do
196
+ rule /\=>/, Operator, :pop!
197
+ rule /\)/, Punctuation, :pop!
198
+ rule /[(,]/, Punctuation, :parameter
199
+ mixin :lasso
200
+ end
201
+
202
+ state :parameter do
203
+ rule /\)/, Punctuation, :pop!
204
+ rule /-?#{id}/, Name::Attribute, :pop!
205
+ rule /\.\.\./, Name::Builtin::Pseudo
206
+ mixin :lasso
207
+ end
208
+
209
+ state :commamember do
210
+ rule %r((#{id}=?|[-+*/%])(?=\s*(\(([^()]*\([^()]*\))*[^\)]*\)\s*)?(::[\w.\s]+)?=>)), Name::Function, :signature
211
+ mixin :whitespacecomments
212
+ rule //, Text, :pop!
213
+ end
214
+
215
+ end
216
+ end
217
+ end
@@ -0,0 +1,446 @@
1
+ :keywords:
2
+ - "cache"
3
+ - "database_names"
4
+ - "database_schemanames"
5
+ - "database_tablenames"
6
+ - "define_tag"
7
+ - "define_type"
8
+ - "email_batch"
9
+ - "encode_set"
10
+ - "html_comment"
11
+ - "handle"
12
+ - "handle_error"
13
+ - "header"
14
+ - "if"
15
+ - "inline"
16
+ - "iterate"
17
+ - "ljax_target"
18
+ - "link"
19
+ - "link_currentaction"
20
+ - "link_currentgroup"
21
+ - "link_currentrecord"
22
+ - "link_detail"
23
+ - "link_firstgroup"
24
+ - "link_firstrecord"
25
+ - "link_lastgroup"
26
+ - "link_lastrecord"
27
+ - "link_nextgroup"
28
+ - "link_nextrecord"
29
+ - "link_prevgroup"
30
+ - "link_prevrecord"
31
+ - "log"
32
+ - "loop"
33
+ - "namespace_using"
34
+ - "output_none"
35
+ - "portal"
36
+ - "private"
37
+ - "protect"
38
+ - "records"
39
+ - "referer"
40
+ - "referrer"
41
+ - "repeating"
42
+ - "resultset"
43
+ - "rows"
44
+ - "search_args"
45
+ - "search_arguments"
46
+ - "select"
47
+ - "sort_args"
48
+ - "sort_arguments"
49
+ - "thread_atomic"
50
+ - "value_list"
51
+ - "while"
52
+ - "abort"
53
+ - "case"
54
+ - "else"
55
+ - "fail_if"
56
+ - "fail_ifnot"
57
+ - "fail"
58
+ - "if_empty"
59
+ - "if_false"
60
+ - "if_null"
61
+ - "if_true"
62
+ - "loop_abort"
63
+ - "loop_continue"
64
+ - "loop_count"
65
+ - "params"
66
+ - "params_up"
67
+ - "return"
68
+ - "return_value"
69
+ - "run_children"
70
+ - "soap_definetag"
71
+ - "soap_lastrequest"
72
+ - "soap_lastresponse"
73
+ - "tag_name"
74
+ - "ascending"
75
+ - "average"
76
+ - "by"
77
+ - "define"
78
+ - "descending"
79
+ - "do"
80
+ - "equals"
81
+ - "frozen"
82
+ - "group"
83
+ - "handle_failure"
84
+ - "import"
85
+ - "in"
86
+ - "into"
87
+ - "join"
88
+ - "let"
89
+ - "match"
90
+ - "max"
91
+ - "min"
92
+ - "on"
93
+ - "order"
94
+ - "parent"
95
+ - "protected"
96
+ - "provide"
97
+ - "public"
98
+ - "require"
99
+ - "returnhome"
100
+ - "skip"
101
+ - "split_thread"
102
+ - "sum"
103
+ - "take"
104
+ - "thread"
105
+ - "to"
106
+ - "trait"
107
+ - "type"
108
+ - "where"
109
+ - "with"
110
+ - "yield"
111
+ - "yieldhome"
112
+
113
+ :types_traits:
114
+ - "atbegin"
115
+ - "bson_iter"
116
+ - "bson"
117
+ - "bytes_document_body"
118
+ - "cache_server_element"
119
+ - "cache_server"
120
+ - "capture"
121
+ - "client_address"
122
+ - "client_ip"
123
+ - "component_container"
124
+ - "component_render_state"
125
+ - "component"
126
+ - "curl"
127
+ - "curltoken"
128
+ - "currency"
129
+ - "custom"
130
+ - "data_document"
131
+ - "database_registry"
132
+ - "dateandtime"
133
+ - "dbgp_packet"
134
+ - "dbgp_server"
135
+ - "debugging_stack"
136
+ - "delve"
137
+ - "dir"
138
+ - "dirdesc"
139
+ - "dns_response"
140
+ - "document_base"
141
+ - "document_body"
142
+ - "document_header"
143
+ - "dsinfo"
144
+ - "eacher"
145
+ - "email_compose"
146
+ - "email_parse"
147
+ - "email_pop"
148
+ - "email_queue_impl_base"
149
+ - "email_queue_impl"
150
+ - "email_smtp"
151
+ - "email_stage_impl_base"
152
+ - "email_stage_impl"
153
+ - "fastcgi_each_fcgi_param"
154
+ - "fastcgi_server"
155
+ - "fcgi_record"
156
+ - "fcgi_request"
157
+ - "file"
158
+ - "filedesc"
159
+ - "filemaker_datasource"
160
+ - "generateforeachkeyed"
161
+ - "generateforeachunkeyed"
162
+ - "generateseries"
163
+ - "hash_map"
164
+ - "html_atomic_element"
165
+ - "html_attr"
166
+ - "html_base"
167
+ - "html_binary"
168
+ - "html_br"
169
+ - "html_cdata"
170
+ - "html_container_element"
171
+ - "html_div"
172
+ - "html_document_body"
173
+ - "html_document_head"
174
+ - "html_eol"
175
+ - "html_fieldset"
176
+ - "html_form"
177
+ - "html_h1"
178
+ - "html_h2"
179
+ - "html_h3"
180
+ - "html_h4"
181
+ - "html_h5"
182
+ - "html_h6"
183
+ - "html_hr"
184
+ - "html_img"
185
+ - "html_input"
186
+ - "html_json"
187
+ - "html_label"
188
+ - "html_legend"
189
+ - "html_link"
190
+ - "html_meta"
191
+ - "html_object"
192
+ - "html_option"
193
+ - "html_raw"
194
+ - "html_script"
195
+ - "html_select"
196
+ - "html_span"
197
+ - "html_style"
198
+ - "html_table"
199
+ - "html_td"
200
+ - "html_text"
201
+ - "html_th"
202
+ - "html_tr"
203
+ - "http_document_header"
204
+ - "http_document"
205
+ - "http_error"
206
+ - "http_header_field"
207
+ - "http_server_connection_handler_globals"
208
+ - "http_server_connection_handler"
209
+ - "http_server_request_logger_thread"
210
+ - "http_server_web_connection"
211
+ - "http_server"
212
+ - "image"
213
+ - "include_cache"
214
+ - "inline_type"
215
+ - "java_jnienv"
216
+ - "jbyte"
217
+ - "jbytearray"
218
+ - "jchar"
219
+ - "jchararray"
220
+ - "jfieldid"
221
+ - "jfloat"
222
+ - "jint"
223
+ - "jmethodid"
224
+ - "jobject"
225
+ - "jshort"
226
+ - "json_decode"
227
+ - "json_encode"
228
+ - "json_literal"
229
+ - "json_object"
230
+ - "lassoapp_compiledsrc_appsource"
231
+ - "lassoapp_compiledsrc_fileresource"
232
+ - "lassoapp_content_rep_halt"
233
+ - "lassoapp_dirsrc_appsource"
234
+ - "lassoapp_dirsrc_fileresource"
235
+ - "lassoapp_installer"
236
+ - "lassoapp_livesrc_appsource"
237
+ - "lassoapp_livesrc_fileresource"
238
+ - "lassoapp_long_expiring_bytes"
239
+ - "lassoapp_manualsrc_appsource"
240
+ - "lassoapp_zip_file_server"
241
+ - "lassoapp_zipsrc_appsource"
242
+ - "lassoapp_zipsrc_fileresource"
243
+ - "ldap"
244
+ - "library_thread_loader"
245
+ - "list_node"
246
+ - "log_impl_base"
247
+ - "log_impl"
248
+ - "magick_image"
249
+ - "map_node"
250
+ - "memberstream"
251
+ - "memory_session_driver_impl_entry"
252
+ - "memory_session_driver_impl"
253
+ - "memory_session_driver"
254
+ - "mime_reader"
255
+ - "mongo_client"
256
+ - "mongo_collection"
257
+ - "mongo_cursor"
258
+ - "mustache_ctx"
259
+ - "mysql_session_driver_impl"
260
+ - "mysql_session_driver"
261
+ - "net_named_pipe"
262
+ - "net_tcp_ssl"
263
+ - "net_tcp"
264
+ - "net_udp_packet"
265
+ - "net_udp"
266
+ - "odbc_session_driver_impl"
267
+ - "odbc_session_driver"
268
+ - "opaque"
269
+ - "os_process"
270
+ - "pair_compare"
271
+ - "pairup"
272
+ - "pdf_barcode"
273
+ - "pdf_chunk"
274
+ - "pdf_color"
275
+ - "pdf_doc"
276
+ - "pdf_font"
277
+ - "pdf_hyphenator"
278
+ - "pdf_image"
279
+ - "pdf_list"
280
+ - "pdf_paragraph"
281
+ - "pdf_phrase"
282
+ - "pdf_read"
283
+ - "pdf_table"
284
+ - "pdf_text"
285
+ - "pdf_typebase"
286
+ - "percent"
287
+ - "portal_impl"
288
+ - "queriable_groupby"
289
+ - "queriable_grouping"
290
+ - "queriable_groupjoin"
291
+ - "queriable_join"
292
+ - "queriable_orderby"
293
+ - "queriable_orderbydescending"
294
+ - "queriable_select"
295
+ - "queriable_selectmany"
296
+ - "queriable_skip"
297
+ - "queriable_take"
298
+ - "queriable_thenby"
299
+ - "queriable_thenbydescending"
300
+ - "queriable_where"
301
+ - "raw_document_body"
302
+ - "regexp"
303
+ - "repeat"
304
+ - "scientific"
305
+ - "security_registry"
306
+ - "serialization_element"
307
+ - "serialization_object_identity_compare"
308
+ - "serialization_reader"
309
+ - "serialization_writer_ref"
310
+ - "serialization_writer_standin"
311
+ - "serialization_writer"
312
+ - "session_delete_expired_thread"
313
+ - "signature"
314
+ - "sourcefile"
315
+ - "sqlite_column"
316
+ - "sqlite_currentrow"
317
+ - "sqlite_db"
318
+ - "sqlite_results"
319
+ - "sqlite_session_driver_impl_entry"
320
+ - "sqlite_session_driver_impl"
321
+ - "sqlite_session_driver"
322
+ - "sqlite_table"
323
+ - "sqlite3_stmt"
324
+ - "sqlite3"
325
+ - "sys_process"
326
+ - "text_document"
327
+ - "tie"
328
+ - "timeonly"
329
+ - "tree_base"
330
+ - "tree_node"
331
+ - "tree_nullnode"
332
+ - "ucal"
333
+ - "usgcpu"
334
+ - "usgvm"
335
+ - "web_error_atend"
336
+ - "web_node_base"
337
+ - "web_node_content_representation_css_specialized"
338
+ - "web_node_content_representation_html_specialized"
339
+ - "web_node_content_representation_js_specialized"
340
+ - "web_node_content_representation_xhr_container"
341
+ - "web_node_echo"
342
+ - "web_node_root"
343
+ - "web_request_impl"
344
+ - "web_request"
345
+ - "web_response_impl"
346
+ - "web_response"
347
+ - "web_router"
348
+ - "websocket_handler"
349
+ - "worker_pool"
350
+ - "xml_attr"
351
+ - "xml_cdatasection"
352
+ - "xml_characterdata"
353
+ - "xml_comment"
354
+ - "xml_document"
355
+ - "xml_documentfragment"
356
+ - "xml_documenttype"
357
+ - "xml_domimplementation"
358
+ - "xml_element"
359
+ - "xml_entity"
360
+ - "xml_entityreference"
361
+ - "xml_namednodemap_attr"
362
+ - "xml_namednodemap_ht"
363
+ - "xml_namednodemap"
364
+ - "xml_node"
365
+ - "xml_nodelist"
366
+ - "xml_notation"
367
+ - "xml_processinginstruction"
368
+ - "xml_text"
369
+ - "xmlstream"
370
+ - "zip_file_impl"
371
+ - "zip_file"
372
+ - "zip_impl"
373
+ - "zip"
374
+ - "any"
375
+ - "formattingbase"
376
+ - "html_attributed"
377
+ - "html_element_coreattrs"
378
+ - "html_element_eventsattrs"
379
+ - "html_element_i18nattrs"
380
+ - "lassoapp_capabilities"
381
+ - "lassoapp_resource"
382
+ - "lassoapp_source"
383
+ - "queriable_asstring"
384
+ - "session_driver"
385
+ - "trait_array"
386
+ - "trait_asstring"
387
+ - "trait_backcontractible"
388
+ - "trait_backended"
389
+ - "trait_backexpandable"
390
+ - "trait_close"
391
+ - "trait_contractible"
392
+ - "trait_decompose_assignment"
393
+ - "trait_doubleended"
394
+ - "trait_each_sub"
395
+ - "trait_encodeurl"
396
+ - "trait_endedfullymutable"
397
+ - "trait_expandable"
398
+ - "trait_file"
399
+ - "trait_finite"
400
+ - "trait_finiteforeach"
401
+ - "trait_foreach"
402
+ - "trait_foreachtextelement"
403
+ - "trait_frontcontractible"
404
+ - "trait_frontended"
405
+ - "trait_frontexpandable"
406
+ - "trait_fullymutable"
407
+ - "trait_generator"
408
+ - "trait_generatorcentric"
409
+ - "trait_hashable"
410
+ - "trait_json_serialize"
411
+ - "trait_keyed"
412
+ - "trait_keyedfinite"
413
+ - "trait_keyedforeach"
414
+ - "trait_keyedmutable"
415
+ - "trait_list"
416
+ - "trait_map"
417
+ - "trait_net"
418
+ - "trait_pathcomponents"
419
+ - "trait_positionallykeyed"
420
+ - "trait_positionallysearchable"
421
+ - "trait_queriable"
422
+ - "trait_queriablelambda"
423
+ - "trait_readbytes"
424
+ - "trait_readstring"
425
+ - "trait_scalar"
426
+ - "trait_searchable"
427
+ - "trait_serializable"
428
+ - "trait_setencoding"
429
+ - "trait_setoperations"
430
+ - "trait_stack"
431
+ - "trait_treenode"
432
+ - "trait_writebytes"
433
+ - "trait_writestring"
434
+ - "trait_xml_elementcompat"
435
+ - "trait_xml_nodecompat"
436
+ - "web_connection"
437
+ - "web_node_container"
438
+ - "web_node_content_css_specialized"
439
+ - "web_node_content_document"
440
+ - "web_node_content_html_specialized"
441
+ - "web_node_content_js_specialized"
442
+ - "web_node_content_json_specialized"
443
+ - "web_node_content_representation"
444
+ - "web_node_content"
445
+ - "web_node_postable"
446
+ - "web_node"