rouge 3.26.1 → 3.29.0
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.
- 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
|