rouge 3.27.0 → 3.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/lib/rouge/cli.rb +23 -20
  4. data/lib/rouge/demos/brainfuck +1 -1
  5. data/lib/rouge/demos/brightscript +1 -1
  6. data/lib/rouge/demos/bsl +1 -1
  7. data/lib/rouge/demos/cfscript +1 -1
  8. data/lib/rouge/demos/coq +1 -1
  9. data/lib/rouge/demos/csvs +1 -1
  10. data/lib/rouge/demos/datastudio +0 -1
  11. data/lib/rouge/demos/ecl +0 -1
  12. data/lib/rouge/demos/erlang +1 -1
  13. data/lib/rouge/demos/fluent +13 -0
  14. data/lib/rouge/demos/fsharp +1 -1
  15. data/lib/rouge/demos/glsl +1 -1
  16. data/lib/rouge/demos/haxe +0 -1
  17. data/lib/rouge/demos/idris +13 -0
  18. data/lib/rouge/demos/isabelle +16 -0
  19. data/lib/rouge/demos/lean +8 -0
  20. data/lib/rouge/demos/meson +10 -0
  21. data/lib/rouge/demos/nesasm +1 -1
  22. data/lib/rouge/demos/nial +35 -0
  23. data/lib/rouge/demos/opentype_feature_file +0 -1
  24. data/lib/rouge/demos/plsql +2 -0
  25. data/lib/rouge/demos/smarty +0 -1
  26. data/lib/rouge/demos/stan +13 -0
  27. data/lib/rouge/demos/stata +14 -0
  28. data/lib/rouge/demos/syzlang +15 -0
  29. data/lib/rouge/demos/syzprog +8 -0
  30. data/lib/rouge/formatters/html_inline.rb +0 -1
  31. data/lib/rouge/guessers/disambiguation.rb +7 -0
  32. data/lib/rouge/lexer.rb +2 -2
  33. data/lib/rouge/lexers/apache/keywords.rb +1 -1
  34. data/lib/rouge/lexers/apple_script.rb +1 -1
  35. data/lib/rouge/lexers/c.rb +12 -2
  36. data/lib/rouge/lexers/console.rb +1 -1
  37. data/lib/rouge/lexers/cpp.rb +7 -4
  38. data/lib/rouge/lexers/cypher.rb +8 -0
  39. data/lib/rouge/lexers/dart.rb +10 -9
  40. data/lib/rouge/lexers/docker.rb +4 -0
  41. data/lib/rouge/lexers/eiffel.rb +0 -1
  42. data/lib/rouge/lexers/fluent.rb +74 -0
  43. data/lib/rouge/lexers/gherkin/keywords.rb +1 -1
  44. data/lib/rouge/lexers/groovy.rb +1 -1
  45. data/lib/rouge/lexers/handlebars.rb +1 -1
  46. data/lib/rouge/lexers/hcl.rb +1 -0
  47. data/lib/rouge/lexers/hylang.rb +0 -1
  48. data/lib/rouge/lexers/idris.rb +210 -0
  49. data/lib/rouge/lexers/isabelle.rb +251 -0
  50. data/lib/rouge/lexers/javascript.rb +1 -1
  51. data/lib/rouge/lexers/jsx.rb +1 -2
  52. data/lib/rouge/lexers/kotlin.rb +3 -1
  53. data/lib/rouge/lexers/lasso/keywords.rb +1 -1
  54. data/lib/rouge/lexers/lean.rb +164 -0
  55. data/lib/rouge/lexers/llvm/keywords.rb +1 -1
  56. data/lib/rouge/lexers/lua/keywords.rb +1 -1
  57. data/lib/rouge/lexers/mathematica/keywords.rb +1 -1
  58. data/lib/rouge/lexers/matlab/keywords.rb +1 -1
  59. data/lib/rouge/lexers/matlab.rb +3 -2
  60. data/lib/rouge/lexers/meson.rb +159 -0
  61. data/lib/rouge/lexers/nial.rb +166 -0
  62. data/lib/rouge/lexers/ocl.rb +0 -1
  63. data/lib/rouge/lexers/pascal.rb +2 -1
  64. data/lib/rouge/lexers/php/keywords.rb +1 -1
  65. data/lib/rouge/lexers/php.rb +7 -5
  66. data/lib/rouge/lexers/plsql.rb +578 -0
  67. data/lib/rouge/lexers/prometheus.rb +0 -1
  68. data/lib/rouge/lexers/python.rb +3 -1
  69. data/lib/rouge/lexers/q.rb +0 -1
  70. data/lib/rouge/lexers/rust.rb +9 -5
  71. data/lib/rouge/lexers/sparql.rb +5 -4
  72. data/lib/rouge/lexers/sqf/keywords.rb +1 -1
  73. data/lib/rouge/lexers/stan.rb +451 -0
  74. data/lib/rouge/lexers/stata.rb +165 -0
  75. data/lib/rouge/lexers/supercollider.rb +0 -1
  76. data/lib/rouge/lexers/syzlang.rb +317 -0
  77. data/lib/rouge/lexers/syzprog.rb +122 -0
  78. data/lib/rouge/lexers/tap.rb +0 -1
  79. data/lib/rouge/lexers/toml.rb +16 -9
  80. data/lib/rouge/lexers/tsx.rb +0 -1
  81. data/lib/rouge/lexers/tulip.rb +0 -1
  82. data/lib/rouge/lexers/viml/keywords.rb +1 -1
  83. data/lib/rouge/version.rb +1 -1
  84. metadata +28 -6
@@ -0,0 +1,166 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Nial < RegexLexer
7
+ title 'Nial'
8
+ desc 'The Nial programming language (nial-array-language.org)'
9
+ tag 'nial'
10
+ filenames '*.ndf', '*.nlg'
11
+
12
+ def self.keywords
13
+ @keywords ||= Set.new ["is", "gets", "op", "tr", ";",
14
+ "if", "then", "elseif", "else",
15
+ "endif", "case", "from", "endcase",
16
+ "begin", "end", "for", "with",
17
+ "endfor", "while", "do", "endwhile",
18
+ "repeat", "until", "endrepeat"]
19
+ end
20
+
21
+ def self.operators
22
+ @operators||= Set.new [".", "!", "#", "+", "*", "-", "<<",
23
+ "/", "<", ">>", "<=", ">", "=", ">=", "@", "|", "~="]
24
+ end
25
+
26
+ def self.punctuations
27
+ @punctuations ||= Set.new [ "{", "}", "[", "]", ",", "(", ")", ":=", ":", ";"]
28
+ end
29
+
30
+ def self.transformers
31
+ @transformers ||= Set.new ["accumulate", "across",
32
+ "bycols", "bykey", "byrows",
33
+ "converse", "down",
34
+ "eachboth", "eachall", "each",
35
+ "eachleft", "eachright",
36
+ "filter", "fold", "fork",
37
+ "grade", "inner", "iterate",
38
+ "leaf", "no_tr", "outer",
39
+ "partition", "rank", "recur",
40
+ "reduce", "reducecols", "reducerows",
41
+ "sort", "team", "timeit", "twig"]
42
+ end
43
+
44
+ def self.funcs
45
+ @funcs ||= Set.new ["operation", "expression", "and", "abs",
46
+ "allbools", "allints", "allchars", "allin",
47
+ "allreals", "allnumeric", "append",
48
+ "arcsin", "arccos", "appendfile", "apply",
49
+ "arctan", "atomic", "assign", "atversion",
50
+ "axes", "cart", "break", "blend", "breaklist",
51
+ "breakin", "bye", "callstack", "choose", "char",
52
+ "ceiling", "catenate", "charrep", "check_socket",
53
+ "cos", "content", "close", "clearws",
54
+ "clearprofile", "cols", "continue", "copyright",
55
+ "cosh", "cull", "count", "diverse", "deepplace",
56
+ "cutall", "cut", "display", "deparse",
57
+ "deepupdate", "descan", "depth", "diagram",
58
+ "div", "divide", "drop", "dropright", "edit",
59
+ "empty", "expression", "exit", "except", "erase",
60
+ "equal", "eval", "eraserecord", "execute", "exp",
61
+ "external", "exprs", "findall", "find",
62
+ "fault", "falsehood", "filestatus", "filelength",
63
+ "filepath", "filetally", "floor", "first",
64
+ "flip", "fuse", "fromraw", "front",
65
+ "gage", "getfile", "getdef", "getcommandline",
66
+ "getenv", "getname", "hitch", "grid", "getsyms",
67
+ "gradeup", "gt", "gte", "host", "in", "inverse",
68
+ "innerproduct", "inv", "ip", "ln", "link", "isboolean",
69
+ "isinteger", "ischar", "isfault", "isreal", "isphrase",
70
+ "isstring", "istruthvalue", "last", "laminate",
71
+ "like", "libpath", "library", "list", "load",
72
+ "loaddefs", "nonlocal", "max", "match", "log",
73
+ "lt", "lower", "lte", "mate", "min", "maxlength",
74
+ "mod", "mix", "minus", "nialroot", "mold", "not",
75
+ "numeric", "no_op", "no_expr", "notin",
76
+ "operation", "open", "or", "opposite", "opp",
77
+ "operators", "plus", "pick", "pack", "pass", "pair", "parse",
78
+ "paste", "phrase", "place", "picture", "placeall",
79
+ "power", "positions", "post", "quotient", "putfile",
80
+ "profile", "prod", "product", "profiletree",
81
+ "profiletable", "quiet_fault", "raise", "reach",
82
+ "random", "reciprocal", "read", "readfile",
83
+ "readchar", "readarray", "readfield",
84
+ "readscreen", "readrecord", "recip", "reshape",
85
+ "seek", "second", "rest", "reverse", "restart",
86
+ "return_status", "scan", "save", "rows", "rotate",
87
+ "seed", "see", "sublist", "sin", "simple", "shape",
88
+ "setformat", "setdeftrace", "set", "seeusercalls",
89
+ "seeprimcalls", "separator", "setwidth", "settrigger",
90
+ "setmessages", "setlogname", "setinterrupts",
91
+ "setprompt", "setprofile", "sinh", "single",
92
+ "sqrt", "solitary", "sketch", "sleep",
93
+ "socket_listen", "socket_accept", "socket_close",
94
+ "socket_bind", "socket_connect", "socket_getline",
95
+ "socket_receive", "socket_peek", "socket_read",
96
+ "socket_send", "socket_write", "solve", "split",
97
+ "sortup", "string", "status", "take", "symbols",
98
+ "sum", "system", "tan", "tally", "takeright",
99
+ "tanh", "tell", "tr", "times", "third", "time",
100
+ "toupper", "tolower", "timestamp", "tonumber",
101
+ "toraw", "toplevel", "transformer", "type",
102
+ "transpose", "trs", "truth", "unequal",
103
+ "variable", "valence", "up", "updateall",
104
+ "update", "vacate", "value", "version", "vars",
105
+ "void", "watch", "watchlist", "write", "writechars",
106
+ "writearray", "writefile", "writefield",
107
+ "writescreen", "writerecord"]
108
+ end
109
+
110
+ def self.consts
111
+ @consts ||= Set.new %w(false null pi true)
112
+ end
113
+
114
+ state :root do
115
+ rule %r/'/, Str::Single, :str
116
+ rule %r/\b[lo]+\b/, Num::Bin
117
+ rule %r/-?\d+((\.\d*)?[eE][+-]?\d|\.)\d*/, Num::Float
118
+ rule %r/\-?\d+/, Num::Integer
119
+ rule %r/`./, Str::Char
120
+ rule %r/"[^\s()\[\]{}#,;]*/, Str::Symbol
121
+ rule %r/\?[^\s()\[\]{}#,;]*/, Generic::Error
122
+ rule %r/%[^;]+;/, Comment::Multiline
123
+ rule %r/^#(.+\n)+\n/, Comment::Multiline
124
+ rule %r/:=|[\{\}\[\]\(\),:;]/ do |m|
125
+ if self.class.punctuations.include?(m[0])
126
+ token Punctuation
127
+ else
128
+ token Text
129
+ end
130
+ end
131
+ # [".", "!", "#", "+", "*", "-", "<<",
132
+ # "/", "<", ">>", "<=", ">", "=", ">=", "@", "|", "~="]
133
+ rule %r'>>|>=|<=|~=|[\.!#+*\-=></|@]' do |m|
134
+ if self.class.operators.include?(m[0])
135
+ token Operator
136
+ else
137
+ token Text
138
+ end
139
+ end
140
+
141
+ rule %r/\b[_A-Za-z]\w*\b/ do |m|
142
+ lower = m[0].downcase
143
+ if self.class.keywords.include?(lower)
144
+ token Keyword
145
+ elsif self.class.funcs.include?(lower)
146
+ token Keyword::Pseudo
147
+ elsif self.class.transformers.include?(lower)
148
+ token Name::Builtin
149
+ elsif self.class.consts.include?(lower)
150
+ token Keyword::Constant
151
+ else
152
+ token Name::Variable
153
+ end
154
+ end
155
+
156
+ rule %r/\s+/, Text
157
+ end
158
+
159
+ state :str do
160
+ rule %r/''/, Str::Escape
161
+ rule %r/[^']+/, Str::Single
162
+ rule %r/'|$/, Str::Single, :pop!
163
+ end
164
+ end
165
+ end
166
+ end
@@ -82,4 +82,3 @@ module Rouge
82
82
  end
83
83
  end
84
84
  end
85
-
@@ -7,7 +7,7 @@ module Rouge
7
7
  tag 'pascal'
8
8
  title "Pascal"
9
9
  desc 'a procedural programming language commonly used as a teaching language.'
10
- filenames '*.pas', '*.lpr'
10
+ filenames '*.pas', '*.lpr', '*.pp'
11
11
 
12
12
  mimetypes 'text/x-pascal'
13
13
 
@@ -55,6 +55,7 @@ module Rouge
55
55
  mixin :whitespace
56
56
 
57
57
  rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
58
+ rule %r/\$[0-9A-Fa-f]+/, Num::Hex
58
59
  rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
59
60
  rule %r{'([^']|'')*'}, Str
60
61
  rule %r/(true|false|nil)\b/i, Name::Builtin
@@ -199,4 +199,4 @@ module Rouge
199
199
  end
200
200
  end
201
201
  end
202
- end
202
+ end
@@ -39,12 +39,12 @@ module Rouge
39
39
  old_function cfunction
40
40
  __class__ __dir__ __file__ __function__ __halt_compiler __line__
41
41
  __method__ __namespace__ __trait__ abstract and array as break case
42
- catch clone continue declare default die do echo else elseif
42
+ catch clone continue declare default die do echo else elseif empty
43
43
  enddeclare endfor endforeach endif endswitch endwhile eval exit
44
44
  extends final finally fn for foreach global goto if implements
45
- include include_once instanceof insteadof isset list new or parent
46
- print private protected public require require_once return self
47
- static switch throw try var while xor yield
45
+ include include_once instanceof insteadof isset list match new or
46
+ parent print private protected public readonly require require_once
47
+ return self static switch throw try unset var while xor yield
48
48
  )
49
49
  end
50
50
 
@@ -305,6 +305,7 @@ module Rouge
305
305
  rule %r/,/, Punctuation
306
306
  rule %r/[.]{3}/, Punctuation
307
307
  rule %r/=/, Operator, :in_assign
308
+ rule %r/\b(?:public|protected|private|readonly)\b/i, Keyword
308
309
  rule %r/\??#{id}/, Keyword::Type, :in_assign
309
310
  mixin :escape
310
311
  mixin :whitespace
@@ -366,7 +367,8 @@ module Rouge
366
367
  end
367
368
 
368
369
  state :in_visibility do
369
- rule %r/(?=(abstract|const|function|static)\b)/i, Keyword, :pop!
370
+ rule %r/\b(?:readonly|static)\b/i, Keyword
371
+ rule %r/(?=(abstract|const|function)\b)/i, Keyword, :pop!
370
372
  rule %r/\??#{id}/, Keyword::Type, :pop!
371
373
  mixin :escape
372
374
  mixin :whitespace