rouge 3.26.1 → 3.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -1
- data/lib/rouge/demos/brainfuck +1 -1
- data/lib/rouge/demos/brightscript +1 -1
- data/lib/rouge/demos/bsl +1 -1
- data/lib/rouge/demos/cfscript +1 -1
- data/lib/rouge/demos/coq +1 -1
- data/lib/rouge/demos/csvs +1 -1
- data/lib/rouge/demos/dafny +16 -0
- data/lib/rouge/demos/datastudio +0 -1
- data/lib/rouge/demos/ecl +0 -1
- data/lib/rouge/demos/erlang +1 -1
- data/lib/rouge/demos/fluent +13 -0
- data/lib/rouge/demos/fsharp +1 -1
- data/lib/rouge/demos/glsl +1 -1
- data/lib/rouge/demos/haxe +0 -1
- data/lib/rouge/demos/idris +13 -0
- data/lib/rouge/demos/lean +8 -0
- data/lib/rouge/demos/nesasm +1 -1
- data/lib/rouge/demos/opentype_feature_file +0 -1
- data/lib/rouge/demos/plsql +2 -0
- data/lib/rouge/demos/smarty +0 -1
- data/lib/rouge/demos/stan +13 -0
- data/lib/rouge/demos/stata +14 -0
- data/lib/rouge/demos/syzlang +15 -0
- data/lib/rouge/demos/syzprog +8 -0
- data/lib/rouge/formatters/html_inline.rb +0 -1
- data/lib/rouge/lexer.rb +2 -2
- data/lib/rouge/lexers/apache/keywords.rb +1 -1
- data/lib/rouge/lexers/c.rb +12 -2
- data/lib/rouge/lexers/ceylon.rb +2 -2
- data/lib/rouge/lexers/console.rb +1 -1
- data/lib/rouge/lexers/cpp.rb +6 -4
- data/lib/rouge/lexers/cypher.rb +8 -0
- data/lib/rouge/lexers/dafny.rb +128 -0
- data/lib/rouge/lexers/dart.rb +8 -8
- data/lib/rouge/lexers/docker.rb +4 -0
- data/lib/rouge/lexers/eex.rb +2 -2
- data/lib/rouge/lexers/eiffel.rb +0 -1
- data/lib/rouge/lexers/fluent.rb +74 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +1 -1
- data/lib/rouge/lexers/handlebars.rb +1 -1
- data/lib/rouge/lexers/hcl.rb +1 -0
- data/lib/rouge/lexers/hylang.rb +0 -1
- data/lib/rouge/lexers/idris.rb +210 -0
- data/lib/rouge/lexers/jsx.rb +1 -2
- data/lib/rouge/lexers/kotlin.rb +3 -1
- data/lib/rouge/lexers/lasso/keywords.rb +1 -1
- data/lib/rouge/lexers/lean.rb +164 -0
- data/lib/rouge/lexers/llvm/keywords.rb +1 -1
- data/lib/rouge/lexers/lua/keywords.rb +1 -1
- data/lib/rouge/lexers/mathematica/keywords.rb +1 -1
- data/lib/rouge/lexers/matlab/keywords.rb +1 -1
- data/lib/rouge/lexers/matlab.rb +3 -2
- data/lib/rouge/lexers/ocl.rb +0 -1
- data/lib/rouge/lexers/php/keywords.rb +1 -1
- data/lib/rouge/lexers/plsql.rb +578 -0
- data/lib/rouge/lexers/prometheus.rb +0 -1
- data/lib/rouge/lexers/python.rb +3 -1
- data/lib/rouge/lexers/q.rb +0 -1
- data/lib/rouge/lexers/rust.rb +82 -19
- data/lib/rouge/lexers/sparql.rb +5 -4
- data/lib/rouge/lexers/sqf/keywords.rb +1 -1
- data/lib/rouge/lexers/sql.rb +7 -7
- data/lib/rouge/lexers/stan.rb +451 -0
- data/lib/rouge/lexers/stata.rb +165 -0
- data/lib/rouge/lexers/supercollider.rb +0 -1
- data/lib/rouge/lexers/swift.rb +3 -3
- data/lib/rouge/lexers/syzlang.rb +317 -0
- data/lib/rouge/lexers/syzprog.rb +122 -0
- data/lib/rouge/lexers/tap.rb +0 -1
- data/lib/rouge/lexers/toml.rb +8 -6
- data/lib/rouge/lexers/tsx.rb +0 -1
- data/lib/rouge/lexers/tulip.rb +0 -1
- data/lib/rouge/lexers/viml/keywords.rb +1 -1
- data/lib/rouge/version.rb +1 -1
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15e78361e4f2dde8ae802ffcd36cc0b1e8e9124c2bbe0d3182a767244047a9e0
|
4
|
+
data.tar.gz: 661838ffd5b8c6ff8ac894312293aa6c46b36abed76ccc8f0932358e6478c8b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21f210c421a0a0137d57f2c7fd3b3d931a1b481a276e6fe6eb296a5e1572ccb7ffd3912a8455e98c362b863ab52773b27c7d9135e2cddaa7b75b5fa324f4036e
|
7
|
+
data.tar.gz: 9bb3d495c856a8e790cc38736afb4e187b5b34fa8d1f0c1b99ff60af63cec60a9312ee4a69a642e31938dd4586647e224f311afdde6d343bcafa35b64110f2a3
|
data/Gemfile
CHANGED
@@ -11,7 +11,8 @@ gem 'minitest-power_assert'
|
|
11
11
|
gem 'power_assert', '~> 1.2'
|
12
12
|
|
13
13
|
gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
|
14
|
-
gem 'rubocop', '~> 0.
|
14
|
+
gem 'rubocop', '~> 1.0', '<= 1.11'
|
15
|
+
gem 'rubocop-performance'
|
15
16
|
|
16
17
|
# don't try to install redcarpet under jruby
|
17
18
|
gem 'redcarpet', :platforms => :ruby
|
@@ -37,5 +38,8 @@ group :development do
|
|
37
38
|
else
|
38
39
|
gem 'sinatra'
|
39
40
|
end
|
41
|
+
|
42
|
+
# Ruby 3 no longer ships with a web server
|
43
|
+
gem 'puma' if RUBY_VERSION >= '3'
|
40
44
|
gem 'shotgun'
|
41
45
|
end
|
data/lib/rouge/demos/brainfuck
CHANGED
data/lib/rouge/demos/bsl
CHANGED
data/lib/rouge/demos/cfscript
CHANGED
data/lib/rouge/demos/coq
CHANGED
data/lib/rouge/demos/csvs
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module A {
|
2
|
+
const i: int := 56_78
|
3
|
+
}
|
4
|
+
|
5
|
+
method m(b: bool, s: string) {
|
6
|
+
var x: string;
|
7
|
+
var i: int;
|
8
|
+
if b then i := 1; else i := 2;
|
9
|
+
i := if b 1 else 2;
|
10
|
+
assert b;
|
11
|
+
assume b;
|
12
|
+
print s;
|
13
|
+
expect b;
|
14
|
+
}
|
15
|
+
|
16
|
+
function f(i: int): int { i + 1 }
|
data/lib/rouge/demos/datastudio
CHANGED
data/lib/rouge/demos/ecl
CHANGED
data/lib/rouge/demos/erlang
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Simple things are simple.
|
2
|
+
hello-user = Hello, {$userName}!
|
3
|
+
|
4
|
+
# Complex things are possible.
|
5
|
+
shared-photos =
|
6
|
+
{$userName} {$photoCount ->
|
7
|
+
[one] added a new photo
|
8
|
+
*[other] added {$photoCount} new photos
|
9
|
+
} to {$userGender ->
|
10
|
+
[male] his stream
|
11
|
+
[female] her stream
|
12
|
+
*[other] their stream
|
13
|
+
}.
|
data/lib/rouge/demos/fsharp
CHANGED
data/lib/rouge/demos/glsl
CHANGED
data/lib/rouge/demos/haxe
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
import Data.Vect
|
2
|
+
|
3
|
+
insert : Ord elem =>
|
4
|
+
(x : elem) -> (xsSorted : Vect len elem) -> Vect (S len) elem
|
5
|
+
insert x [] = [x]
|
6
|
+
insert x (y :: xs) = case x < y of
|
7
|
+
True => x :: y :: xs
|
8
|
+
False => y :: insert x xs
|
9
|
+
|
10
|
+
insSort : Ord elem => Vect n elem -> Vect n elem
|
11
|
+
insSort [] = []
|
12
|
+
insSort (x :: xs) = let xsSorted = insSort xs in
|
13
|
+
insert x xsSorted
|
data/lib/rouge/demos/nesasm
CHANGED
data/lib/rouge/demos/smarty
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
* Run a series of linear regressions
|
2
|
+
sysuse auto, clear
|
3
|
+
foreach v of varlist mpg weight-turn {
|
4
|
+
regress price `v', robust
|
5
|
+
}
|
6
|
+
|
7
|
+
regress price i.foreign
|
8
|
+
local num_obs = e(N)
|
9
|
+
global myglobal = 4
|
10
|
+
|
11
|
+
* Generate and manipulate variables
|
12
|
+
generate newvar1 = "string"
|
13
|
+
generate newvar2 = 34 - `num_obs'
|
14
|
+
replace newvar2 = $myglobal
|
@@ -0,0 +1,15 @@
|
|
1
|
+
include <linux/test.h>
|
2
|
+
|
3
|
+
resource fd_test[fd]
|
4
|
+
|
5
|
+
openat$test(fd const[AT_FDCWD], file ptr[in, string["/dev/test"]], flags flags[open_flags], mode const[0]) fd_test
|
6
|
+
|
7
|
+
ioctl$TEST(fd fd_test, cmd const[TEST], arg ptr[in, test])
|
8
|
+
|
9
|
+
test {
|
10
|
+
number int32
|
11
|
+
size len[data, int32]
|
12
|
+
data array[int8]
|
13
|
+
}
|
14
|
+
|
15
|
+
_ = TEST
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Source: https://github.com/google/syzkaller/blob/master/sys/linux/test/vusb_hid
|
2
|
+
|
3
|
+
r0 = syz_usb_connect$hid(0x0, 0x36, &(0x7f0000000040)=ANY=[@ANYBLOB="12010000000018105e04da07000000000001090224000100000000090400000903000000092100000001222200090581030800000000"], 0x0)
|
4
|
+
syz_usb_control_io$hid(r0, 0x0, 0x0)
|
5
|
+
syz_usb_control_io$hid(r0, &(0x7f00000001c0)={0x24, 0x0, 0x0, &(0x7f0000000000)={0x0, 0x22, 0x22, {[@global=@item_012={0x2, 0x1, 0x9, "2313"}, @global=@item_012={0x2, 0x1, 0x0, "e53f"}, @global=@item_4={0x3, 0x1, 0x0, '\f\x00'}, @local=@item_012={0x2, 0x2, 0x2, "9000"}, @global=@item_4={0x3, 0x1, 0x0, "0900be00"}, @main=@item_4={0x3, 0x0, 0x8, '\x00'}, @local=@item_4={0x3, 0x2, 0x0, "09007a15"}, @local=@item_4={0x3, 0x2, 0x0, "5d8c3dda"}]}}, 0x0}, 0x0)
|
6
|
+
syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
|
7
|
+
syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
|
8
|
+
syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
|
data/lib/rouge/lexer.rb
CHANGED
@@ -293,8 +293,8 @@ module Rouge
|
|
293
293
|
|
294
294
|
# @private
|
295
295
|
def assert_utf8!(str)
|
296
|
-
encoding = str.encoding
|
297
|
-
return if encoding ==
|
296
|
+
encoding = str.encoding
|
297
|
+
return if encoding == Encoding::US_ASCII || encoding == Encoding::UTF_8 || encoding == Encoding::BINARY
|
298
298
|
|
299
299
|
raise EncodingError.new(
|
300
300
|
"Bad encoding: #{str.encoding.names.join(',')}. " +
|
data/lib/rouge/lexers/c.rb
CHANGED
@@ -170,12 +170,22 @@ module Rouge
|
|
170
170
|
end
|
171
171
|
|
172
172
|
state :macro do
|
173
|
-
|
174
|
-
rule %r/\n/, Comment::Preproc, :pop!
|
173
|
+
mixin :include
|
175
174
|
rule %r([^/\n\\]+), Comment::Preproc
|
176
175
|
rule %r/\\./m, Comment::Preproc
|
177
176
|
mixin :inline_whitespace
|
178
177
|
rule %r(/), Comment::Preproc
|
178
|
+
# NB: pop! goes back to :bol
|
179
|
+
rule %r/\n/, Comment::Preproc, :pop!
|
180
|
+
end
|
181
|
+
|
182
|
+
state :include do
|
183
|
+
rule %r/(include)(\s*)(<[^>]+>)([^\n]*)/ do
|
184
|
+
groups Comment::Preproc, Text, Comment::PreprocFile, Comment::Single
|
185
|
+
end
|
186
|
+
rule %r/(include)(\s*)("[^"]+")([^\n]*)/ do
|
187
|
+
groups Comment::Preproc, Text, Comment::PreprocFile, Comment::Single
|
188
|
+
end
|
179
189
|
end
|
180
190
|
|
181
191
|
state :if_0 do
|
data/lib/rouge/lexers/ceylon.rb
CHANGED
@@ -51,8 +51,8 @@ module Rouge
|
|
51
51
|
|
52
52
|
rule %r("(\\\\|\\"|[^"])*"), Literal::String
|
53
53
|
rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
|
54
|
-
rule %r("
|
55
|
-
rule %r(\.)([a-z_]\w*)) do
|
54
|
+
rule %r("[^`]*``[^`]*``[^`]*"), Literal::String::Interpol
|
55
|
+
rule %r((\.)([a-z_]\w*)) do
|
56
56
|
groups Operator, Name::Attribute
|
57
57
|
end
|
58
58
|
rule %r([a-zA-Z_]\w*:), Name::Label
|
data/lib/rouge/lexers/console.rb
CHANGED
data/lib/rouge/lexers/cpp.rb
CHANGED
@@ -22,12 +22,14 @@ module Rouge
|
|
22
22
|
|
23
23
|
def self.keywords
|
24
24
|
@keywords ||= super + Set.new(%w(
|
25
|
-
asm auto catch
|
25
|
+
asm auto catch char8_t concept
|
26
|
+
consteval constexpr constinit const_cast co_await co_return co_yield
|
27
|
+
delete dynamic_cast explicit export friend
|
26
28
|
mutable namespace new operator private protected public
|
27
|
-
reinterpret_cast restrict size_of static_cast this throw throws
|
29
|
+
reinterpret_cast requires restrict size_of static_cast this throw throws
|
28
30
|
typeid typename using virtual final override
|
29
31
|
|
30
|
-
alignas alignof
|
32
|
+
alignas alignof decltype noexcept static_assert
|
31
33
|
thread_local try
|
32
34
|
))
|
33
35
|
end
|
@@ -68,7 +70,7 @@ module Rouge
|
|
68
70
|
rule %r/#{dq}[lu]*/i, Num::Integer
|
69
71
|
rule %r/\bnullptr\b/, Name::Builtin
|
70
72
|
rule %r/(?:u8|u|U|L)?R"([a-zA-Z0-9_{}\[\]#<>%:;.?*\+\-\/\^&|~!=,"']{,16})\(.*?\)\1"/m, Str
|
71
|
-
rule %r
|
73
|
+
rule %r/(::|<=>)/, Operator
|
72
74
|
end
|
73
75
|
|
74
76
|
state :classname do
|
data/lib/rouge/lexers/cypher.rb
CHANGED
@@ -45,6 +45,7 @@ module Rouge
|
|
45
45
|
state :root do
|
46
46
|
rule %r/[\s]+/, Text
|
47
47
|
rule %r(//.*?$), Comment::Single
|
48
|
+
rule %r(/\*), Comment::Multiline, :multiline_comments
|
48
49
|
|
49
50
|
rule %r([*+\-<>=&|~%^]), Operator
|
50
51
|
rule %r/[{}),;\[\]]/, Str::Symbol
|
@@ -103,6 +104,13 @@ module Rouge
|
|
103
104
|
rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
|
104
105
|
rule %r/`(\\\\|\\`|[^`])*`/, Str::Backtick
|
105
106
|
end
|
107
|
+
|
108
|
+
state :multiline_comments do
|
109
|
+
rule %r(/[*]), Comment::Multiline, :multiline_comments
|
110
|
+
rule %r([*]/), Comment::Multiline, :pop!
|
111
|
+
rule %r([^/*]+), Comment::Multiline
|
112
|
+
rule %r([/*]), Comment::Multiline
|
113
|
+
end
|
106
114
|
end
|
107
115
|
end
|
108
116
|
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Dafny < RegexLexer
|
7
|
+
title "Dafny"
|
8
|
+
desc "The Dafny programming language (github.com/dafny-lang/dafny)"
|
9
|
+
tag "dafny"
|
10
|
+
filenames "*.dfy"
|
11
|
+
mimetypes "text/x-dafny"
|
12
|
+
|
13
|
+
keywords = %w(
|
14
|
+
abstract allocated assert assume
|
15
|
+
break by
|
16
|
+
calc case class codatatype const constructor
|
17
|
+
datatype decreases downto
|
18
|
+
else ensures exists expect export extends
|
19
|
+
false for forall fresh function
|
20
|
+
ghost greatest
|
21
|
+
if import include invariant iterator
|
22
|
+
label least lemma
|
23
|
+
match method modifies modify module
|
24
|
+
nameonly new newtype null
|
25
|
+
old opened
|
26
|
+
predicate print provides
|
27
|
+
reads refines requires return returns reveal reveals
|
28
|
+
static
|
29
|
+
then this to trait true twostate type
|
30
|
+
unchanged
|
31
|
+
var
|
32
|
+
while witness
|
33
|
+
yield yields
|
34
|
+
)
|
35
|
+
|
36
|
+
literals = %w{ true false null }
|
37
|
+
|
38
|
+
textOperators = %w{ as is in }
|
39
|
+
|
40
|
+
types = %w(bool char int real string nat
|
41
|
+
array array? object object? ORDINAL
|
42
|
+
seq set iset map imap multiset )
|
43
|
+
|
44
|
+
idstart = /[0-9a-zA-Z?]/
|
45
|
+
idchar = /[0-9a-zA-Z_'?]/
|
46
|
+
id = /#{idstart}#{idchar}*/
|
47
|
+
|
48
|
+
arrayType = /array(?:1[0-9]+|[2-9][0-9]*)\??(?!#{idchar})/
|
49
|
+
bvType = /bv(?:0|[1-9][0-9]*)(?!#{idchar})/
|
50
|
+
|
51
|
+
digit = /\d/
|
52
|
+
digits = /#{digit}+(?:_#{digit}+)*/
|
53
|
+
bin_digits = /[01]+(?:_[01]+)*/
|
54
|
+
hex_digit = /(?:[0-9a-fA-F])/
|
55
|
+
hex_digits = /#{hex_digit}+(?:_#{hex_digit}+)*/
|
56
|
+
|
57
|
+
cchar = /(?:[^\\'\n\r]|\\["'ntr\\0])/
|
58
|
+
schar = /(?:[^\\"\n\r]|\\["'ntr\\0])/
|
59
|
+
uchar = /(?:\\u#{hex_digit}{4})/
|
60
|
+
|
61
|
+
## IMPORTANT: Rules are ordered, which allows later rules to be
|
62
|
+
## simpler than they would otherwise be
|
63
|
+
state :root do
|
64
|
+
rule %r(/\*), Comment::Multiline, :comment
|
65
|
+
rule %r(//.*?$), Comment::Single
|
66
|
+
rule %r(\*/), Error # should not have closing comment in :root
|
67
|
+
# is an improperly nested comment
|
68
|
+
|
69
|
+
rule %r/'#{cchar}'/, Str::Char # standard or escape char
|
70
|
+
rule %r/'#{uchar}'/, Str::Char # unicode char
|
71
|
+
rule %r/'[^'\n\r]*'/, Error # bad any other enclosed char
|
72
|
+
rule %r/'[^'\n\r]*$/, Error # bad unclosed char
|
73
|
+
|
74
|
+
rule %r/"(?:#{schar}|#{uchar})*"/, Str::Double # valid string
|
75
|
+
rule %r/".*"/, Error # anything else that is closed
|
76
|
+
rule %r/".*$/, Error # bad unclosed string
|
77
|
+
|
78
|
+
rule %r/@"([^"]|"")*"/, Str::Other # valid verbatim string
|
79
|
+
rule %r/@".*/m, Error # anything else , multiline unclosed
|
80
|
+
|
81
|
+
|
82
|
+
rule %r/#{digits}\.#{digits}(?!#{idchar})/, Num::Float
|
83
|
+
rule %r/0b#{bin_digits}(?!#{idchar})/, Num::Bin
|
84
|
+
rule %r/0b#{idchar}*/, Error
|
85
|
+
rule %r/0x#{hex_digits}(?!#{idchar})/, Num::Hex
|
86
|
+
rule %r/0x#{idchar}*/, Error
|
87
|
+
rule %r/#{digits}(?!#{idchar})/, Num::Integer
|
88
|
+
rule %r/_(?!#{idchar})/, Name
|
89
|
+
rule %r/_[0-9_]+[_]?(?!#{idchar})/, Error
|
90
|
+
rule %r/[0-9_]+_(?!#{idchar})/, Error
|
91
|
+
rule %r/[0-9]#{idchar}+/, Error
|
92
|
+
|
93
|
+
rule %r/#{arrayType}/, Keyword::Type
|
94
|
+
rule %r/#{bvType}/, Keyword::Type
|
95
|
+
|
96
|
+
rule id do |m|
|
97
|
+
if types.include?(m[0])
|
98
|
+
token Keyword::Type
|
99
|
+
elsif literals.include?(m[0])
|
100
|
+
token Keyword::Constant
|
101
|
+
elsif textOperators.include?(m[0])
|
102
|
+
token Operator::Word
|
103
|
+
elsif keywords.include?(m[0])
|
104
|
+
token Keyword::Reserved
|
105
|
+
else
|
106
|
+
token Name
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
rule %r/\.\./, Operator
|
111
|
+
rule %r/[*!%&<>\|^+=:.\/-]/, Operator
|
112
|
+
rule %r/[\[\](){},;`]/, Punctuation
|
113
|
+
|
114
|
+
rule %r/[^\S\n]+/, Text
|
115
|
+
rule %r/\n/, Text
|
116
|
+
rule %r/./, Error # Catchall
|
117
|
+
end
|
118
|
+
|
119
|
+
state :comment do
|
120
|
+
rule %r(\*/), Comment::Multiline, :pop!
|
121
|
+
rule %r(/\*), Comment::Multiline, :comment
|
122
|
+
rule %r([^*/]+), Comment::Multiline
|
123
|
+
rule %r(.), Comment::Multiline
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
data/lib/rouge/lexers/dart.rb
CHANGED
@@ -5,25 +5,25 @@ module Rouge
|
|
5
5
|
module Lexers
|
6
6
|
class Dart < RegexLexer
|
7
7
|
title "Dart"
|
8
|
-
desc "The Dart programming language (
|
8
|
+
desc "The Dart programming language (dart.dev)"
|
9
9
|
|
10
10
|
tag 'dart'
|
11
11
|
filenames '*.dart'
|
12
12
|
mimetypes 'text/x-dart'
|
13
13
|
|
14
14
|
keywords = %w(
|
15
|
-
as assert break case catch continue default do else finally for
|
16
|
-
if in is new rethrow return super switch this throw try while with
|
15
|
+
as assert await break case catch continue default do else finally for
|
16
|
+
if in is new rethrow return super switch this throw try while with yield
|
17
17
|
)
|
18
18
|
|
19
19
|
declarations = %w(
|
20
|
-
abstract dynamic const external extends factory final get
|
21
|
-
native operator set static typedef var
|
20
|
+
abstract async dynamic const covariant external extends factory final get
|
21
|
+
implements late native on operator required set static sync typedef var
|
22
22
|
)
|
23
23
|
|
24
|
-
types = %w(bool double Dynamic enum int num Object Set String void)
|
24
|
+
types = %w(bool Comparable double Dynamic enum Function int List Map Never Null num Object Pattern Set String Symbol Type Uri void)
|
25
25
|
|
26
|
-
imports = %w(import export library part\s*of part source)
|
26
|
+
imports = %w(import deferred export library part\s*of part source)
|
27
27
|
|
28
28
|
id = /[a-zA-Z_]\w*/
|
29
29
|
|
@@ -53,7 +53,7 @@ module Rouge
|
|
53
53
|
rule %r/(?:#{declarations.join('|')})\b/, Keyword::Declaration
|
54
54
|
rule %r/(?:#{types.join('|')})\b/, Keyword::Type
|
55
55
|
rule %r/(?:true|false|null)\b/, Keyword::Constant
|
56
|
-
rule %r/(?:class|interface)\b/, Keyword::Declaration, :class
|
56
|
+
rule %r/(?:class|interface|mixin)\b/, Keyword::Declaration, :class
|
57
57
|
rule %r/(?:#{imports.join('|')})\b/, Keyword::Namespace, :import
|
58
58
|
rule %r/(\.)(#{id})/ do
|
59
59
|
groups Operator, Name::Attribute
|
data/lib/rouge/lexers/docker.rb
CHANGED
@@ -20,6 +20,10 @@ module Rouge
|
|
20
20
|
state :root do
|
21
21
|
rule %r/\s+/, Text
|
22
22
|
|
23
|
+
rule %r/^(FROM)(\s+)(.*)(\s+)(AS)(\s+)(.*)/io do
|
24
|
+
groups Keyword, Text::Whitespace, Str, Text::Whitespace, Keyword, Text::Whitespace, Str
|
25
|
+
end
|
26
|
+
|
23
27
|
rule %r/^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do
|
24
28
|
groups Keyword, Text::Whitespace, Keyword, Str
|
25
29
|
end
|
data/lib/rouge/lexers/eex.rb
CHANGED
data/lib/rouge/lexers/eiffel.rb
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Fluent < RegexLexer
|
7
|
+
title 'Fluent'
|
8
|
+
desc 'Fluent localization files'
|
9
|
+
tag 'fluent'
|
10
|
+
aliases 'ftl'
|
11
|
+
filenames '*.ftl'
|
12
|
+
|
13
|
+
state :root do
|
14
|
+
rule %r{( *)(\=)( *)} do
|
15
|
+
groups Text::Whitespace, Punctuation, Text::Whitespace
|
16
|
+
push :template
|
17
|
+
end
|
18
|
+
|
19
|
+
rule %r{(?:\s*\n)+}m, Text::Whitespace
|
20
|
+
rule %r{\#{1,3}(?: .*)?$}, Comment::Single
|
21
|
+
rule %r{[a-zA-Z][a-zA-Z0-9_-]*}, Name::Constant
|
22
|
+
rule %r{\-[a-zA-Z][a-zA-Z0-9_-]*}, Name::Entity
|
23
|
+
rule %r{\s*\.[a-zA-Z][a-zA-Z0-9_-]*}, Name::Attribute
|
24
|
+
rule %r{\s+(?=[^\s\.])}, Text::Whitespace, :template
|
25
|
+
end
|
26
|
+
|
27
|
+
state :template do
|
28
|
+
rule %r{\n}m, Text::Whitespace, :pop!
|
29
|
+
rule %r{[^\{\n\}\*]+}, Text
|
30
|
+
rule %r{\{}, Punctuation, :placeable
|
31
|
+
rule %r{(?=\})}, Punctuation, :pop!
|
32
|
+
end
|
33
|
+
|
34
|
+
state :placeable do
|
35
|
+
rule %r{\s+}m, Text::Whitespace
|
36
|
+
rule %r{\{}, Punctuation, :placeable
|
37
|
+
rule %r{\}}, Punctuation, :pop!
|
38
|
+
rule %r{\$[a-zA-Z][a-zA-Z0-9_-]*}, Name::Variable
|
39
|
+
rule %r{\-[a-zA-Z][a-zA-Z0-9_-]*}, Name::Entity
|
40
|
+
rule %r{\.[a-zA-Z][a-zA-Z0-9_-]*}, Name::Attribute
|
41
|
+
rule %r{[A-Z]+}, Name::Builtin
|
42
|
+
rule %r{[a-zA-Z][a-zA-Z0-9_-]*}, Name::Constant
|
43
|
+
rule %r{[\(\),\:]}, Punctuation
|
44
|
+
rule %r{->}, Punctuation
|
45
|
+
rule %r{\*}, Punctuation::Indicator
|
46
|
+
rule %r{\-?\d+\.\d+?}, Literal::Number::Float
|
47
|
+
rule %r{\-?\d+}, Literal::Number::Integer
|
48
|
+
rule %r{"}, Str::Double, :string
|
49
|
+
|
50
|
+
rule %r{(\[)(\-?\d+\.\d+)(\])} do
|
51
|
+
groups Punctuation, Literal::Number::Float, Punctuation
|
52
|
+
push :template
|
53
|
+
end
|
54
|
+
|
55
|
+
rule %r{(\[)(\-?\d+)(\])} do
|
56
|
+
groups Punctuation, Literal::Number::Integer, Punctuation
|
57
|
+
push :template
|
58
|
+
end
|
59
|
+
|
60
|
+
rule %r{(\[)([a-zA-Z][a-zA-Z0-9_-]+)(\])} do
|
61
|
+
groups Punctuation, Str::Symbol, Punctuation
|
62
|
+
push :template
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
state :string do
|
67
|
+
rule %r{\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{6}}, Str::Escape
|
68
|
+
rule %r{\\.}, Str::Escape
|
69
|
+
rule %r{[^\"\\]}, Str::Double
|
70
|
+
rule %r{"}, Str::Double, :pop!
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|