rouge 3.19.0 → 3.20.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.
@@ -12,24 +12,30 @@ module Rouge
12
12
 
13
13
  def self.keywords
14
14
  @keywords ||= %w(
15
- Ascender Attach CapHeight CaretOffset CodePageRange Descender FontRevision FSType
16
- GlyphClassDef HorizAxis.BaseScriptList HorizAxis.BaseTagList HorizAxis.MinMax
17
- IgnoreBaseGlyphs IgnoreLigatures IgnoreMarks LigatureCaretByDev LigatureCaretByIndex
18
- LigatureCaretByPos LineGap MarkAttachClass MarkAttachmentType NULL Panose RightToLeft
19
- TypoAscender TypoDescender TypoLineGap UnicodeRange UseMarkFilteringSet Vendor
20
- VertAdvanceY VertAxis.BaseScriptList VertAxis.BaseTagList VertAxis.MinMax VertOriginY
21
- VertTypoAscender VertTypoDescender VertTypoLineGap WeightClass WidthClass XHeight
22
-
23
- anchorDef anchor anonymous anon by contour cursive device enumerate enum
24
- exclude_dflt featureNames feature from ignore include_dflt include languagesystem
25
- language lookupflag lookup markClass mark nameid name parameters position pos required
26
- reversesub rsub script sizemenuname substitute subtable sub table useExtension
15
+ Ascender Attach AxisValue CapHeight CaretOffset CodePageRange
16
+ DesignAxis Descender ElidedFallbackName ElidedFallbackNameID
17
+ ElidableAxisValueName FeatUILabelNameID FeatUITooltipTextNameID
18
+ FontRevision FSType GlyphClassDef HorizAxis.BaseScriptList
19
+ HorizAxis.BaseTagList HorizAxis.MinMax IgnoreBaseGlyphs
20
+ IgnoreLigatures IgnoreMarks LigatureCaretByDev LigatureCaretByIndex
21
+ LigatureCaretByPos LineGap MarkAttachClass MarkAttachmentType NULL
22
+ OlderSiblingFontAttribute Panose ParamUILabelNameID RightToLeft
23
+ SampleTextNameID TypoAscender TypoDescender TypoLineGap UnicodeRange
24
+ UseMarkFilteringSet Vendor VertAdvanceY VertAxis.BaseScriptList
25
+ VertAxis.BaseTagList VertAxis.MinMax VertOriginY VertTypoAscender
26
+ VertTypoDescender VertTypoLineGap WeightClass WidthClass XHeight
27
+
28
+ anchorDef anchor anonymous anon by contour cursive device enumerate
29
+ enum exclude_dflt featureNames feature flag from ignore include_dflt
30
+ include languagesystem language location lookupflag lookup markClass
31
+ mark nameid name parameters position pos required reversesub rsub
32
+ script sizemenuname substitute subtable sub table useExtension
27
33
  valueRecordDef winAscent winDescent
28
34
  )
29
35
  end
30
36
 
31
37
 
32
- identifier = %r/[a-z_][a-z0-9\/_]*/i
38
+ identifier = %r/[a-z_][a-z0-9\/_.-]*/i
33
39
 
34
40
  state :root do
35
41
  rule %r/\s+/m, Text::Whitespace
@@ -41,17 +47,18 @@ module Rouge
41
47
  push :featurename
42
48
  end
43
49
  # } <tag> ;
44
- rule %r/(\})((?:\s)*)/ do
50
+ rule %r/(\})((?:\s))/ do
45
51
  groups Punctuation, Text
46
52
  push :featurename
47
53
  end
48
54
  # solve include( ../path)
49
- rule %r/(include)/i, Keyword, :includepath
55
+ rule %r/include\b/i, Keyword, :includepath
50
56
 
51
57
  rule %r/[\-\[\]\/(){},.:;=%*<>']/, Punctuation
52
58
 
53
59
  rule %r/`.*?/, Str::Backtick
54
- rule %r/\"/, Str, :dqs
60
+ rule %r/\"/, Str, :strings
61
+ rule %r/\\[^.*\s]+/i, Str::Escape
55
62
 
56
63
  # classes, start with @<nameOfClass>
57
64
  rule %r/@#{identifier}/, Name::Class
@@ -66,6 +73,7 @@ module Rouge
66
73
  end
67
74
 
68
75
  rule identifier, Name
76
+ rule %r/(?:0x|\\)[0-9A-Fa-f]+/, Num::Hex
69
77
  rule %r/-?\d+/, Num::Integer
70
78
  end
71
79
 
@@ -77,37 +85,14 @@ module Rouge
77
85
  rule %r/\s+/, Text::Whitespace
78
86
  rule %r/\)/, Punctuation, :pop!
79
87
  rule %r/\(/, Punctuation
80
- rule %r/[a-z0-9\/_.]*/i, Str
88
+ rule %r/[^\s()]+/, Str
81
89
  end
82
90
 
83
91
  state :strings do
84
- rule %r/(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, Str
85
- end
86
-
87
- state :strings_double do
88
- rule %r/[^\\"%\n]+/, Str
89
- mixin :strings
90
- end
91
-
92
- state :escape do
93
- rule %r(\\
94
- ( [\\abfnrtv"']
95
- | \n
96
- | N{[a-zA-z][a-zA-Z ]+[a-zA-Z]}
97
- | u[a-fA-F0-9]{4}
98
- | U[a-fA-F0-9]{8}
99
- | x[a-fA-F0-9]{2}
100
- | [0-7]{1,3}
101
- )
102
- )x, Str::Escape
103
- end
104
-
105
- state :dqs do
106
92
  rule %r/"/, Str, :pop!
107
- mixin :escape
108
- mixin :strings_double
93
+ rule %r/[^"%\n]+/, Str
94
+ rule %r/(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, Str
109
95
  end
110
-
111
96
  end
112
97
  end
113
98
  end
@@ -201,7 +201,7 @@ module Rouge
201
201
  rule %r/(?:#{KEYWORDS})\b(?![-.])/i, Keyword::Reserved
202
202
 
203
203
  rule %r/-{1,2}\w+/, Name::Tag
204
-
204
+
205
205
  rule %r/(\.)?([-\w]+)(\[)/ do |m|
206
206
  groups Operator, Name::Function, Punctuation
207
207
  push :bracket
@@ -209,12 +209,12 @@ module Rouge
209
209
 
210
210
  rule %r/([\/\\~\w][-.:\/\\~\w]*)(\n)?/ do |m|
211
211
  groups Name::Function, Text::Whitespace
212
- push :parameters unless m[2]
212
+ push :parameters
213
213
  end
214
214
 
215
215
  rule %r/(\.)?([-\w]+)(?:(\()|(\n))?/ do |m|
216
216
  groups Operator, Name::Function, Punctuation, Text::Whitespace
217
- push :parameters unless m[3]
217
+ push :parameters unless m[3].nil?
218
218
  end
219
219
 
220
220
  rule %r/[-+*\/%=!.&|]/, Operator
@@ -7,13 +7,20 @@ module Rouge
7
7
  load_lexer 'typescript/common.rb'
8
8
 
9
9
  class TSX < JSX
10
- include TypescriptCommon
10
+ extend TypescriptCommon
11
11
 
12
- title 'TypeScript'
13
- desc 'tsx'
12
+ title 'TSX'
13
+ desc 'TypeScript-compatible JSX (www.typescriptlang.org/docs/handbook/jsx.html)'
14
14
 
15
15
  tag 'tsx'
16
16
  filenames '*.tsx'
17
+
18
+ prepend :element_name do
19
+ rule %r/(\w+)(,)/ do
20
+ groups Name::Other, Punctuation
21
+ pop! 3
22
+ end
23
+ end
17
24
  end
18
25
  end
19
26
  end
@@ -7,7 +7,7 @@ module Rouge
7
7
  load_lexer 'typescript/common.rb'
8
8
 
9
9
  class Typescript < Javascript
10
- include TypescriptCommon
10
+ extend TypescriptCommon
11
11
 
12
12
  title "TypeScript"
13
13
  desc "TypeScript, a superset of JavaScript"
@@ -18,17 +18,6 @@ module Rouge
18
18
  filenames '*.ts', '*.d.ts'
19
19
 
20
20
  mimetypes 'text/typescript'
21
-
22
- prepend :root do
23
- rule %r/[?][.]/, Punctuation
24
- end
25
-
26
- prepend :statement do
27
- rule %r/(#{Javascript.id_regex})(\??)(\s*)(:)/ do
28
- groups Name::Label, Punctuation, Text, Punctuation
29
- push :expr_start
30
- end
31
- end
32
21
  end
33
22
  end
34
23
  end
@@ -4,31 +4,45 @@
4
4
  module Rouge
5
5
  module Lexers
6
6
  module TypescriptCommon
7
- def self.keywords
7
+ def keywords
8
8
  @keywords ||= super + Set.new(%w(
9
9
  is namespace static private protected public
10
10
  implements readonly
11
11
  ))
12
12
  end
13
13
 
14
- def self.declarations
14
+ def declarations
15
15
  @declarations ||= super + Set.new(%w(
16
16
  type abstract
17
17
  ))
18
18
  end
19
19
 
20
- def self.reserved
20
+ def reserved
21
21
  @reserved ||= super + Set.new(%w(
22
22
  string any void number namespace module
23
23
  declare default interface keyof
24
24
  ))
25
25
  end
26
26
 
27
- def self.builtins
27
+ def builtins
28
28
  @builtins ||= super + %w(
29
29
  Pick Partial Readonly Record
30
30
  )
31
31
  end
32
+
33
+ def self.extended(base)
34
+ base.prepend :root do
35
+ rule %r/[?][.]/, base::Punctuation
36
+ rule %r/[?]{2}/, base::Operator
37
+ end
38
+
39
+ base.prepend :statement do
40
+ rule %r/(#{Javascript.id_regex})(\??)(\s*)(:)/ do
41
+ groups base::Name::Label, base::Punctuation, base::Text, base::Punctuation
42
+ push :expr_start
43
+ end
44
+ end
45
+ end
32
46
  end
33
47
  end
34
48
  end
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Velocity < TemplateLexer
6
+ title 'Velocity'
7
+ desc 'Velocity is a Java-based template engine (velocity.apache.org)'
8
+ tag 'velocity'
9
+ filenames '*.vm', '*.velocity', '*.fhtml'
10
+ mimetypes 'text/html+velocity'
11
+
12
+ id = /[a-z_]\w*/i
13
+
14
+ state :root do
15
+ rule %r/[^{#$]+/ do
16
+ delegate parent
17
+ end
18
+
19
+ rule %r/(#)(\*.*?\*)(#)/m, Comment::Multiline
20
+ rule %r/(##)(.*?$)/, Comment::Single
21
+
22
+ rule %r/(#\{?)(#{id})(\}?)(\s?\()/m do
23
+ groups Punctuation, Name::Function, Punctuation, Punctuation
24
+ push :directive_params
25
+ end
26
+
27
+ rule %r/(#\{?)(#{id})(\}|\b)/m do
28
+ groups Punctuation, Name::Function, Punctuation
29
+ end
30
+
31
+ rule %r/\$\{?/, Punctuation, :variable
32
+ end
33
+
34
+ state :variable do
35
+ rule %r/#{id}/, Name::Variable
36
+ rule %r/\(/, Punctuation, :func_params
37
+ rule %r/(\.)(#{id})/ do
38
+ groups Punctuation, Name::Variable
39
+ end
40
+ rule %r/\}/, Punctuation, :pop!
41
+ rule(//) { pop! }
42
+ end
43
+
44
+ state :directive_params do
45
+ rule %r/(&&|\|\||==?|!=?|[-<>+*%&|^\/])|\b(eq|ne|gt|lt|ge|le|not|in)\b/, Operator
46
+ rule %r/\[/, Operator, :range_operator
47
+ rule %r/\b#{id}\b/, Name::Function
48
+ mixin :func_params
49
+ end
50
+
51
+ state :range_operator do
52
+ rule %r/[.]{2}/, Operator
53
+ mixin :func_params
54
+ rule %r/\]/, Operator, :pop!
55
+ end
56
+
57
+ state :func_params do
58
+ rule %r/\$\{?/, Punctuation, :variable
59
+ rule %r/\s+/, Text
60
+ rule %r/,/, Punctuation
61
+ rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
62
+ rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
63
+ rule %r/0[xX][0-9a-fA-F]+[Ll]?/, Num::Hex
64
+ rule %r/\b[0-9]+\b/, Num::Integer
65
+ rule %r/(true|false|null)\b/, Keyword::Constant
66
+ rule %r/[(\[]/, Punctuation, :push!
67
+ rule %r/[)\]}]/, Punctuation, :pop!
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,139 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Zig < RegexLexer
7
+ tag 'zig'
8
+ aliases 'zir'
9
+ filenames '*.zig'
10
+ mimetypes 'text/x-zig'
11
+
12
+ title 'Zig'
13
+ desc 'The Zig programming language (ziglang.org)'
14
+
15
+ def self.keywords
16
+ @keywords ||= %w(
17
+ align linksection threadlocal struct enum union error break return
18
+ anyframe fn c_longlong c_ulonglong c_longdouble c_void comptime_float
19
+ c_short c_ushort c_int c_uint c_long c_ulong continue asm defer
20
+ errdefer const var extern packed export pub if else switch and or
21
+ orelse while for bool unreachable try catch async suspend nosuspend
22
+ await resume undefined usingnamespace test void noreturn type
23
+ anyerror usize noalias inline noinline comptime callconv volatile
24
+ allowzero
25
+ )
26
+ end
27
+
28
+ def self.builtins
29
+ @builtins ||= %w(
30
+ @addWithOverflow @as @atomicLoad @atomicStore @bitCast @breakpoint
31
+ @alignCast @alignOf @cDefine @cImport @cInclude @bitOffsetOf
32
+ @atomicRmw @bytesToSlice @byteOffsetOf @OpaqueType @panic @ptrCast
33
+ @bitReverse @Vector @sin @cUndef @canImplicitCast @clz @cmpxchgWeak
34
+ @cmpxchgStrong @compileError @compileLog @ctz @popCount @divExact
35
+ @divFloor @cos @divTrunc @embedFile @export @tagName @TagType
36
+ @errorName @call @errorReturnTrace @fence @fieldParentPtr @field
37
+ @unionInit @errorToInt @intToEnum @enumToInt @setAlignStack @frame
38
+ @Frame @exp @exp2 @log @log2 @log10 @fabs @floor @ceil @trunc @round
39
+ @floatCast @intToFloat @floatToInt @boolToInt @errSetCast @intToError
40
+ @frameAddress @import @newStackCall @asyncCall @intToPtr @intCast
41
+ @frameSize @memcpy @memset @mod @mulWithOverflow @splat @ptrToInt
42
+ @rem @returnAddress @setCold @Type @shuffle @setGlobalLinkage
43
+ @setGlobalSection @shlExact @This @hasDecl @hasField
44
+ @setRuntimeSafety @setEvalBranchQuota @setFloatMode @shlWithOverflow
45
+ @shrExact @sizeOf @bitSizeOf @sqrt @byteSwap @subWithOverflow
46
+ @sliceToBytes comptime_int @truncate @typeInfo @typeName @TypeOf
47
+ )
48
+ end
49
+
50
+ id = /[a-z_]\w*/i
51
+ escapes = /\\ ([nrt'"\\0] | x\h{2} | u\h{4} | U\h{8})/x
52
+
53
+ state :bol do
54
+ mixin :whitespace
55
+ rule %r/#\s[^\n]*/, Comment::Special
56
+ rule(//) { pop! }
57
+ end
58
+
59
+ state :attribute do
60
+ mixin :whitespace
61
+ mixin :literals
62
+ rule %r/[(,)=:]/, Name::Decorator
63
+ rule %r/\]/, Name::Decorator, :pop!
64
+ rule id, Name::Decorator
65
+ end
66
+
67
+ state :whitespace do
68
+ rule %r/\s+/, Text
69
+ rule %r(//[^\n]*), Comment
70
+ end
71
+
72
+ state :root do
73
+ rule %r/\n/, Text, :bol
74
+
75
+ mixin :whitespace
76
+
77
+ rule %r/\b(?:(i|u)[0-9]+)\b/, Keyword::Type
78
+ rule %r/\b(?:f(16|32|64|128))\b/, Keyword::Type
79
+ rule %r/\b(?:(isize|usize))\b/, Keyword::Type
80
+
81
+ mixin :literals
82
+
83
+ rule %r/'#{id}/, Name::Variable
84
+ rule %r/([.]?)(\s*)(@?#{id})(\s*)([(]?)/ do |m|
85
+ name = m[3]
86
+ t = if self.class.keywords.include? name
87
+ Keyword
88
+ elsif self.class.builtins.include? name
89
+ Name::Builtin
90
+ elsif !m[1].empty? && !m[5].empty?
91
+ Name::Function
92
+ elsif !m[1].empty?
93
+ Name::Property
94
+ else
95
+ Name
96
+ end
97
+
98
+ groups Punctuation, Text, t, Text, Punctuation
99
+ end
100
+
101
+ rule %r/[()\[\]{}|,:;]/, Punctuation
102
+ rule %r/[*\/!@~&+%^<>=\?-]|\.{1,3}/, Operator
103
+ end
104
+
105
+ state :literals do
106
+ rule %r/\b(?:true|false|null)\b/, Keyword::Constant
107
+ rule %r(
108
+ ' (?: #{escapes} | [^\\] ) '
109
+ )x, Str::Char
110
+
111
+ rule %r/"/, Str, :string
112
+ rule %r/r(#*)".*?"\1/m, Str
113
+
114
+ dot = /[.][0-9_]+/
115
+ exp = /e[-+]?[0-9_]+/
116
+
117
+ rule %r(
118
+ [0-9]+
119
+ (#{dot} #{exp}?
120
+ |#{dot}? #{exp}
121
+ )
122
+ )x, Num::Float
123
+
124
+ rule %r(
125
+ ( 0b[10_]+
126
+ | 0x[0-9a-fA-F_]+
127
+ | [0-9_]+
128
+ )
129
+ )x, Num::Integer
130
+ end
131
+
132
+ state :string do
133
+ rule %r/"/, Str, :pop!
134
+ rule escapes, Str::Escape
135
+ rule %r/[^"\\]+/m, Str
136
+ end
137
+ end
138
+ end
139
+ end