rouge 4.5.1 → 4.6.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 +3 -0
- data/LICENSE +2 -1
- data/lib/rouge/demos/bicep +10 -0
- data/lib/rouge/guessers/disambiguation.rb +12 -2
- data/lib/rouge/lexers/ada.rb +4 -4
- data/lib/rouge/lexers/bicep.rb +111 -0
- data/lib/rouge/lexers/cpp.rb +4 -3
- data/lib/rouge/lexers/csharp.rb +37 -34
- data/lib/rouge/lexers/css.rb +191 -150
- data/lib/rouge/lexers/docker.rb +1 -1
- data/lib/rouge/lexers/html.rb +1 -1
- data/lib/rouge/lexers/java.rb +1 -1
- data/lib/rouge/lexers/mojo.rb +1 -1
- data/lib/rouge/lexers/python.rb +56 -29
- data/lib/rouge/lexers/sass/common.rb +1 -1
- data/lib/rouge/lexers/svelte.rb +1 -1
- data/lib/rouge/lexers/terraform.rb +1 -1
- data/lib/rouge/lexers/toml.rb +1 -0
- data/lib/rouge/version.rb +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a7fb3b7ebd844675016c5515295713f72c36ded464d0a9bdb64e5929ab40f18
|
4
|
+
data.tar.gz: 19d434e8b8fa8ad3c12483ad03fe74b09ca46b76f7d2ba0b8867d7e0303bfc85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc2d202d4258acaffdaf0bee314049bf55876ee89384ef5e8d5625df1994f4789c893b2119721c1e3f71afed4040e3988774fa9e71ae8f7996fd90cff158ae22
|
7
|
+
data.tar.gz: f93bbd478d426253369e29b3b2a7b806bc68a6397e78dcf73061ca0c5295ee800691aee291cef9ff7caeca610b98292c1b18bc67f54b214660b36edbb187b565
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
@@ -21,8 +21,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
21
|
THE SOFTWARE.
|
22
22
|
|
23
23
|
# SPECIAL NOTE:
|
24
|
+
|
24
25
|
Many of the lexers in this project are adaptations of those in Pygments
|
25
|
-
(pygments.org).
|
26
|
+
(pygments.org). The license for Pygments is as follows:
|
26
27
|
|
27
28
|
# BEGIN pygments/LICENSE #
|
28
29
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
targetScope = 'subscription' // To create a resource group
|
2
|
+
|
3
|
+
@description('The Azure region to create the resources in.')
|
4
|
+
param location string
|
5
|
+
|
6
|
+
// Create a resource group
|
7
|
+
resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
|
8
|
+
name: 'rg-sample'
|
9
|
+
location: location
|
10
|
+
}
|
@@ -90,14 +90,24 @@ module Rouge
|
|
90
90
|
disambiguate '*.m' do
|
91
91
|
next ObjectiveC if matches?(/@(end|implementation|protocol|property)\b/)
|
92
92
|
next ObjectiveC if contains?('@"')
|
93
|
+
|
94
|
+
# Objective-C dereferenced pointers and Mathematica comments are similar.
|
95
|
+
# Disambiguate for Mathematica by looking for any amount of whitespace (or no whitespace)
|
96
|
+
# followed by "(*" (e.g. `(* comment *)`).
|
97
|
+
next Mathematica if matches?(/^\s*\(\*/)
|
98
|
+
|
99
|
+
# Disambiguate for objc by looking for a deref'd pointer in a statement (e.g. `if (*foo == 0)`).
|
100
|
+
# This pattern is less specific than the Mathematica pattern, so its positioned after it.
|
101
|
+
next ObjectiveC if matches?(/^\s*(if|while|for|switch|do)\s*\([^)]*\*[^)]*\)/)
|
93
102
|
|
94
|
-
next Mathematica if contains?('(*')
|
95
103
|
next Mathematica if contains?(':=')
|
96
104
|
|
97
105
|
next Mason if matches?(/<%(def|method|text|doc|args|flags|attr|init|once|shared|perl|cleanup|filter)([^>]*)(>)/)
|
98
106
|
|
99
107
|
next Matlab if matches?(/^\s*?%/)
|
100
|
-
|
108
|
+
# Matlab cell array creation: data = {
|
109
|
+
next Matlab if matches?(/^\s*[a-zA-Z]\w*\s*=\s*\{/)
|
110
|
+
|
101
111
|
next Mason if matches? %r!(</?%|<&)!
|
102
112
|
end
|
103
113
|
|
data/lib/rouge/lexers/ada.rb
CHANGED
@@ -5,7 +5,7 @@ module Rouge
|
|
5
5
|
module Lexers
|
6
6
|
class Ada < RegexLexer
|
7
7
|
tag 'ada'
|
8
|
-
filenames '*.ada', '*.ads', '*.adb', '*.gpr'
|
8
|
+
filenames '*.ada', '*.ads', '*.adb', '*.adc', '*.gpr'
|
9
9
|
mimetypes 'text/x-ada'
|
10
10
|
|
11
11
|
title 'Ada'
|
@@ -26,7 +26,7 @@ module Rouge
|
|
26
26
|
abort abstract accept access aliased all array at begin body
|
27
27
|
case constant declare delay delta digits do else elsif end
|
28
28
|
exception exit for generic goto if in interface is limited
|
29
|
-
loop new null of others out overriding pragma private
|
29
|
+
loop new null of others out overriding parallel pragma private
|
30
30
|
protected raise range record renames requeue return reverse
|
31
31
|
select separate some synchronized tagged task terminate then
|
32
32
|
until use when while with
|
@@ -143,8 +143,8 @@ module Rouge
|
|
143
143
|
end
|
144
144
|
|
145
145
|
# Operators and punctuation characters.
|
146
|
-
rule %r{[+*/&<=>|]|-|=>|\.\.|\*\*|[:></]
|
147
|
-
rule %r{[.,:;()]}, Punctuation
|
146
|
+
rule %r{[+*/&<=>|]|-|=>|\.\.|\*\*|[:></]=|<<|>>|<>|@}, Operator
|
147
|
+
rule %r{[.,:;()\[\]]}, Punctuation
|
148
148
|
|
149
149
|
rule ID do |m|
|
150
150
|
t = self.class.idents[m[0].downcase]
|
@@ -0,0 +1,111 @@
|
|
1
|
+
module Rouge
|
2
|
+
module Lexers
|
3
|
+
class Bicep < Rouge::RegexLexer
|
4
|
+
tag 'bicep'
|
5
|
+
filenames '*.bicep'
|
6
|
+
|
7
|
+
title "Bicep"
|
8
|
+
desc 'Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources.'
|
9
|
+
|
10
|
+
def self.keywords
|
11
|
+
@keywords ||= Set.new %w(
|
12
|
+
as assert existing extends extension false for from func if import in metadata module
|
13
|
+
none null output param provider resource targetScope test true type using var void with
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.datatypes
|
18
|
+
@datatypes ||= Set.new %w(array bool int object string)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.functions
|
22
|
+
@functions ||= Set.new %w(
|
23
|
+
array base64 base64ToJson base64ToString bool cidrHost cidrSubnet concat contains dataUri
|
24
|
+
dataUriToString dateTimeAdd dateTimeFromEpoch dateTimeToEpoch deployer deployment empty endsWith
|
25
|
+
environment extensionResourceId fail filter first flatten format getSecret groupBy guid indexOf int
|
26
|
+
intersection items join json last lastIndexOf length list* listAccountSas listKeys listSecrets loadFileAsBase64
|
27
|
+
loadJsonContent loadTextContent loadYamlContent managementGroup managementGroupResourceId map mapValue max min
|
28
|
+
newGuid objectKeys padLeft parseCidr pickZones range readEnvironmentVariable reduce reference replace resourceGroup
|
29
|
+
resourceId shallowMerge skip sort split startsWith string subscription subscriptionResourceId substring take tenant
|
30
|
+
tenantResourceId toLogicalZone toLower toObject toPhysicalZone toUpper trim union uniqueString uri uriComponent
|
31
|
+
uriComponentToString utcNow
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
operators = %w(+ - * / % < <= > >= == != =~ !~ && || ! ?? ... .?)
|
36
|
+
|
37
|
+
punctuations = %w(( ) { } [ ] , : ; = .)
|
38
|
+
|
39
|
+
state :root do
|
40
|
+
mixin :comments
|
41
|
+
|
42
|
+
# Match strings
|
43
|
+
rule %r/'/, Str::Single, :string
|
44
|
+
|
45
|
+
# Match numbers
|
46
|
+
rule %r/\b\d+\b/, Num
|
47
|
+
|
48
|
+
# Rules for sets of reserved keywords
|
49
|
+
rule %r/\b\w+\b/ do |m|
|
50
|
+
if self.class.keywords.include? m[0]
|
51
|
+
token Keyword
|
52
|
+
elsif self.class.datatypes.include? m[0]
|
53
|
+
token Keyword::Type
|
54
|
+
elsif self.class.functions.include? m[0]
|
55
|
+
token Name::Function
|
56
|
+
else
|
57
|
+
token Name
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Match operators
|
62
|
+
rule %r/#{operators.map { |o| Regexp.escape(o) }.join('|')}/, Operator
|
63
|
+
|
64
|
+
# Enter a state when encountering an opening curly bracket
|
65
|
+
rule %r/{/, Punctuation::Indicator, :block
|
66
|
+
|
67
|
+
# Match punctuation
|
68
|
+
rule %r/#{punctuations.map { |p| Regexp.escape(p) }.join('|')}/, Punctuation
|
69
|
+
|
70
|
+
# Match identifiers
|
71
|
+
rule %r/[a-zA-Z_]\w*/, Name
|
72
|
+
|
73
|
+
# Match decorators
|
74
|
+
rule %r/@[a-zA-Z_]\w*/, Name::Decorator
|
75
|
+
|
76
|
+
# Ignore whitespace
|
77
|
+
rule %r/\s+/, Text
|
78
|
+
end
|
79
|
+
|
80
|
+
state :comments do
|
81
|
+
rule %r(//[^\n\r]+), Comment::Single
|
82
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
83
|
+
end
|
84
|
+
|
85
|
+
state :string do
|
86
|
+
rule %r/[^'$}]+/, Str::Single
|
87
|
+
rule %r/\$(?!\{)/, Str::Single
|
88
|
+
rule %r/\$[\{]/, Str::Interpol, :interp
|
89
|
+
rule %r/\'/, Str::Single, :pop!
|
90
|
+
rule %r/\$+/, Str::Single
|
91
|
+
end
|
92
|
+
|
93
|
+
state :interp do
|
94
|
+
rule %r/\}/, Str::Interpol, :pop!
|
95
|
+
mixin :root
|
96
|
+
end
|
97
|
+
|
98
|
+
# State for matching code blocks between curly brackets
|
99
|
+
state :block do
|
100
|
+
# Match property names
|
101
|
+
rule %r/\b([a-zA-Z_]\w*)\b(?=\s*:)/, Name::Property
|
102
|
+
|
103
|
+
# Match closing curly brackets
|
104
|
+
rule %r/}/, Punctuation::Indicator, :pop!
|
105
|
+
|
106
|
+
# Include the root state for nested tokens
|
107
|
+
mixin :root
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
data/lib/rouge/lexers/cpp.rb
CHANGED
@@ -62,9 +62,10 @@ module Rouge
|
|
62
62
|
rule %r/(class|struct)\b/, Keyword, :classname
|
63
63
|
rule %r/template\b/, Keyword, :template
|
64
64
|
rule %r/#{dq}(\.#{dq})?(?:y|d|h|(?:min)|s|(?:ms)|(?:us)|(?:ns)|i|(?:if)|(?:il))\b/, Num::Other
|
65
|
-
rule %r((#{dq}[.]#{dq}?|[.]#{dq})(
|
66
|
-
rule %r(#{dq}
|
67
|
-
rule %r/0x\h('?\h)*[lu]*/i, Num::Hex
|
65
|
+
rule %r((#{dq}[.]#{dq}?|[.]#{dq})([ep][+-]?#{dq})?[luf]*)i, Num::Float
|
66
|
+
rule %r(#{dq}[ep][+-]?#{dq}[luf]*)i, Num::Float
|
67
|
+
rule %r/0x\h('?\h)*([ep][+-]?#{dq})?[lu]*/i, Num::Hex
|
68
|
+
rule %r/0x\h('?\h)*[.]\h+([ep][+-]?#{dq})[luf]*/i, Num::Hex
|
68
69
|
rule %r/0b[01]+('[01]+)*/, Num::Bin
|
69
70
|
rule %r/0[0-7]('?[0-7])*[lu]*/i, Num::Oct
|
70
71
|
rule %r/#{dq}[lu]*/i, Num::Integer
|
data/lib/rouge/lexers/csharp.rb
CHANGED
@@ -12,35 +12,40 @@ module Rouge
|
|
12
12
|
title "C#"
|
13
13
|
desc 'a multi-paradigm language targeting .NET'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
15
|
+
id = /@?[_\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}]*/
|
16
|
+
|
17
|
+
# Reserved Identifiers
|
18
|
+
# Contextual Keywords
|
19
|
+
# LINQ Query Expressions
|
20
|
+
def self.keywords
|
21
|
+
@keywords ||= %w(
|
22
|
+
abstract add alias and as ascending async await base
|
23
|
+
break by case catch checked const continue default delegate
|
24
|
+
descending do else enum equals event explicit extern false
|
25
|
+
finally fixed for foreach from get global goto group
|
26
|
+
if implicit in init interface internal into is join
|
27
|
+
let lock nameof new notnull null on operator orderby
|
28
|
+
out override params partial private protected public readonly
|
29
|
+
ref remove return sealed set sizeof stackalloc static
|
30
|
+
switch this throw true try typeof unchecked unsafe
|
31
|
+
unmanaged value virtual void volatile when where while
|
32
|
+
with yield
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.keywords_type
|
37
|
+
@keywords_type ||= %w(
|
38
|
+
bool byte char decimal double dynamic float int long nint nuint
|
39
|
+
object sbyte short string uint ulong ushort var
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.cpp_keywords
|
44
|
+
@cpp_keywords ||= %w(
|
45
|
+
if endif else elif define undef line error warning region
|
46
|
+
endregion pragma nullable
|
47
|
+
)
|
48
|
+
end
|
44
49
|
|
45
50
|
state :whitespace do
|
46
51
|
rule %r/\s+/m, Text
|
@@ -91,10 +96,9 @@ module Rouge
|
|
91
96
|
)ix, Num
|
92
97
|
rule %r/\b(?:class|record|struct|interface)\b/, Keyword, :class
|
93
98
|
rule %r/\b(?:namespace|using)\b/, Keyword, :namespace
|
94
|
-
rule %r/^#[ \t]*(#{cpp_keywords.join('|')})\b.*?\n/,
|
95
|
-
|
96
|
-
rule %r/\b(#{
|
97
|
-
rule %r/\b(#{keywords_type.join('|')})\b/, Keyword::Type
|
99
|
+
rule %r/^#[ \t]*(#{CSharp.cpp_keywords.join('|')})\b.*?\n/, Comment::Preproc
|
100
|
+
rule %r/\b(#{CSharp.keywords.join('|')})\b/, Keyword
|
101
|
+
rule %r/\b(#{CSharp.keywords_type.join('|')})\b/, Keyword::Type
|
98
102
|
rule %r/#{id}(?=\s*[(])/, Name::Function
|
99
103
|
rule id, Name
|
100
104
|
end
|
@@ -109,7 +113,6 @@ module Rouge
|
|
109
113
|
rule %r/(?=[(])/, Text, :pop!
|
110
114
|
rule %r/(#{id}|[.])+/, Name::Namespace, :pop!
|
111
115
|
end
|
112
|
-
|
113
116
|
end
|
114
117
|
end
|
115
118
|
end
|
data/lib/rouge/lexers/css.rb
CHANGED
@@ -16,164 +16,200 @@ module Rouge
|
|
16
16
|
identifier = /[\p{L}_-][\p{Word}\p{Cf}-]*/
|
17
17
|
number = /-?(?:[0-9]+(\.[0-9]+)?|\.[0-9]+)/
|
18
18
|
|
19
|
-
def self.
|
20
|
-
@
|
21
|
-
align-content align-items align-self
|
22
|
-
alignment-baseline all anchor-point animation
|
23
|
-
animation-
|
24
|
-
animation-fill-mode animation-iteration-count
|
25
|
-
animation-play-state animation-timing-function
|
26
|
-
azimuth backface-visibility background
|
19
|
+
def self.properties
|
20
|
+
@properties ||= Set.new %w(
|
21
|
+
additive-symbols align-content align-items align-self
|
22
|
+
alignment-adjust alignment-baseline all anchor-point animation
|
23
|
+
animation-composition animation-delay animation-direction
|
24
|
+
animation-duration animation-fill-mode animation-iteration-count
|
25
|
+
animation-name animation-play-state animation-timing-function
|
26
|
+
appearance aspect-ratio azimuth backface-visibility background
|
27
|
+
background-attachment background-blend-mode
|
27
28
|
background-clip background-color background-image
|
28
|
-
background-origin background-position
|
29
|
-
background-size baseline-shift
|
30
|
-
bookmark-
|
31
|
-
|
32
|
-
border-bottom-
|
33
|
-
border-bottom-
|
34
|
-
border-image border-image-outset border-image-repeat
|
29
|
+
background-origin background-position
|
30
|
+
background-repeat background-size baseline-shift
|
31
|
+
binding bleed bookmark-label bookmark-level bookmark-state
|
32
|
+
bookmark-target border border-bottom border-bottom-color
|
33
|
+
border-bottom-left-radius border-bottom-right-radius
|
34
|
+
border-bottom-style border-bottom-width border-collapse
|
35
|
+
border-color border-image border-image-outset border-image-repeat
|
35
36
|
border-image-slice border-image-source border-image-width
|
36
|
-
border-left border-left-color border-left-style
|
37
|
-
border-
|
38
|
-
border-right-
|
39
|
-
border-
|
40
|
-
border-top-
|
41
|
-
|
42
|
-
box-
|
43
|
-
box-
|
44
|
-
|
45
|
-
break-inside caption-side clear clip clip-path
|
46
|
-
clip-rule color color-profile columns column-count
|
37
|
+
border-left border-left-color border-left-style border-left-width
|
38
|
+
border-radius border-right border-right-color border-right-style
|
39
|
+
border-right-width border-spacing border-style border-top
|
40
|
+
border-top-color border-top-left-radius border-top-right-radius
|
41
|
+
border-top-style border-top-width border-width bottom box-align
|
42
|
+
box-decoration-break box-direction box-flex box-flex-group
|
43
|
+
box-lines box-ordinal-group box-orient box-pack box-shadow
|
44
|
+
box-sizing break-after break-before break-inside caption-side
|
45
|
+
clear clip clip-path clip-rule color color-profile column-count
|
47
46
|
column-fill column-gap column-rule column-rule-color
|
48
|
-
column-rule-style column-rule-width column-span
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
drop-initial-after-
|
53
|
-
drop-initial-before-
|
54
|
-
drop-initial-value elevation empty-cells
|
55
|
-
fit-position flex flex-basis flex-direction flex-flow
|
56
|
-
flex-grow flex-shrink flex-wrap float float-offset
|
57
|
-
font font-family font-feature-settings
|
58
|
-
font-
|
59
|
-
font-
|
60
|
-
font-variant font-variant-
|
61
|
-
font-variant-
|
62
|
-
|
63
|
-
grid-
|
64
|
-
grid-
|
65
|
-
grid-
|
66
|
-
|
67
|
-
hyphenate-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
left letter-spacing line-break line-height
|
47
|
+
column-rule-style column-rule-width column-span column-width
|
48
|
+
columns content container container-name container-type
|
49
|
+
counter-increment counter-reset counter-set crop cue
|
50
|
+
cue-after cue-before cursor direction display dominant-baseline
|
51
|
+
drop-initial-after-adjust drop-initial-after-align
|
52
|
+
drop-initial-before-adjust drop-initial-before-align
|
53
|
+
drop-initial-size drop-initial-value elevation empty-cells fallback
|
54
|
+
filter fit fit-position flex flex-basis flex-direction flex-flow
|
55
|
+
flex-grow flex-shrink flex-wrap float float-offset font
|
56
|
+
font-display font-family font-feature-settings font-kerning
|
57
|
+
font-language-override font-size font-size-adjust font-stretch
|
58
|
+
font-style font-synthesis font-variant font-variant-alternates
|
59
|
+
font-variant-caps font-variant-east-asian font-variant-ligatures
|
60
|
+
font-variant-numeric font-variant-position font-weight gap
|
61
|
+
grid-area grid-auto-columns grid-auto-flow grid-auto-rows
|
62
|
+
grid-column grid-column-end grid-column-start grid-row
|
63
|
+
grid-row-end grid-row-start grid-template grid-template-areas
|
64
|
+
grid-template-columns grid-template-rows hanging-punctuation
|
65
|
+
height hyphenate-after hyphenate-before hyphenate-character
|
66
|
+
hyphenate-lines hyphenate-resource hyphens icon image-orientation
|
67
|
+
image-rendering image-resolution ime-mode inherits initial-value
|
68
|
+
inline-box-align inset isolation justify-content justify-items
|
69
|
+
justify-self left letter-spacing line-break line-height
|
72
70
|
line-stacking line-stacking-ruby line-stacking-shift
|
73
71
|
line-stacking-strategy list-style list-style-image
|
74
|
-
list-style-position list-style-type margin
|
75
|
-
margin-
|
76
|
-
|
77
|
-
marquee-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
page-break-
|
88
|
-
pause-before perspective perspective-origin
|
89
|
-
phonemes pitch pitch-range
|
90
|
-
position presentation-level
|
91
|
-
rendering-intent resize rest
|
92
|
-
richness right rotation rotation-point
|
93
|
-
ruby-overhang ruby-position ruby-span
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
72
|
+
list-style-position list-style-type margin margin-bottom
|
73
|
+
margin-left margin-right margin-top mark mark-after mark-before
|
74
|
+
marker-offset marks marquee-direction marquee-loop
|
75
|
+
marquee-play-count marquee-speed marquee-style
|
76
|
+
mask mask-clip mask-composite mask-image mask-mode
|
77
|
+
mask-origin mask-position mask-repeat mask-size mask-type
|
78
|
+
max-height max-width min-height min-width mix-blend-mode
|
79
|
+
move-to nav-down nav-index nav-left nav-right nav-up negative
|
80
|
+
object-fit object-position offset offset-anchor offset-distance
|
81
|
+
offset-path offset-position offset-rotate opacity order orphans
|
82
|
+
outline outline-color outline-offset outline-style outline-width
|
83
|
+
overflow overflow-style overflow-wrap overflow-x overflow-y pad
|
84
|
+
padding padding-bottom padding-left padding-right padding-top page
|
85
|
+
page-break-after page-break-before page-break-inside page-policy
|
86
|
+
pause pause-after pause-before perspective perspective-origin
|
87
|
+
phonemes pitch pitch-range place-content place-items place-self
|
88
|
+
play-during pointer-events position prefix presentation-level
|
89
|
+
punctuation-trim quotes range rendering-intent resize rest
|
90
|
+
rest-after rest-before richness right rotate rotation rotation-point
|
91
|
+
row-gap ruby-align ruby-overhang ruby-position ruby-span scale
|
92
|
+
scroll-behavior scroll-margin scroll-margin-block
|
93
|
+
scroll-margin-block-end scroll-margin-block-start
|
94
|
+
scroll-margin-bottom scroll-margin-inline scroll-margin-inline-end
|
95
|
+
scroll-margin-inline-start scroll-margin-left scroll-margin-right
|
96
|
+
scroll-margin-top scroll-padding-top scroll-padding-right
|
97
|
+
scroll-padding-bottom scroll-padding-left scroll-padding
|
98
|
+
scroll-padding-block-end scroll-padding-block-start
|
99
|
+
scroll-padding-block scroll-padding-inline-end
|
100
|
+
scroll-padding-inline-start scroll-padding-inline
|
101
|
+
scroll-snap-type scroll-snap-align scroll-snap-stop
|
102
|
+
shape-outside shape-margin shape-image-threshold shape-rendering
|
103
|
+
size speak speak-as speak-header speak-numeral speak-punctuation
|
104
|
+
speech-rate src stress string-set suffix symbols syntax system
|
105
|
+
tab-size table-layout target target-name target-new target-position
|
106
|
+
text-align text-align-last text-combine-horizontal
|
107
|
+
text-decoration text-decoration-color text-decoration-line
|
108
|
+
text-decoration-skip text-decoration-style text-emphasis
|
109
|
+
text-emphasis-color text-emphasis-position text-emphasis-style
|
110
|
+
text-height text-indent text-justify text-orientation
|
111
|
+
text-outline text-overflow text-rendering text-shadow
|
112
|
+
text-space-collapse text-transform text-underline-position
|
113
|
+
text-wrap top transform transform-origin transform-style
|
109
114
|
transition transition-delay transition-duration
|
110
|
-
transition-property transition-timing-function
|
111
|
-
unicode-bidi vertical-align
|
112
|
-
|
113
|
-
voice-
|
114
|
-
|
115
|
-
|
116
|
-
word-spacing word-wrap writing-mode z-index
|
115
|
+
transition-property transition-timing-function translate
|
116
|
+
unicode-bidi vertical-align visibility voice-balance
|
117
|
+
voice-duration voice-family voice-pitch voice-pitch-range
|
118
|
+
voice-range voice-rate voice-stress voice-volume volume
|
119
|
+
white-space widows width word-break word-spacing word-wrap
|
120
|
+
writing-mode z-index
|
117
121
|
)
|
118
122
|
end
|
119
123
|
|
120
124
|
def self.builtins
|
121
125
|
@builtins ||= Set.new %w(
|
122
|
-
above absolute
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
126
|
+
above absolute accumulate add additive all alpha alphabetic
|
127
|
+
alternate alternate-reverse always armenian aural auto auto-fill
|
128
|
+
auto-fit avoid backwards balance baseline behind below bidi-override
|
129
|
+
blink block bold bolder border-box both bottom bottom break-spaces
|
130
|
+
capitalize center center-left center-right circle cjk-ideographic
|
131
|
+
close-quote closest-corner closest-side collapse
|
132
|
+
color color-burn color-dodge column column-reverse
|
133
|
+
condensed contain content content-box continuous cover crop cross
|
134
|
+
crosshair cursive cyclic darken dashed decimal decimal-leading-zero
|
135
|
+
default difference digits disc dotted double e-resize
|
136
|
+
ease ease-in ease-in-out ease-out embed end exclude exclusion
|
137
|
+
expanded extends extra-condensed extra-expanded fantasy
|
138
|
+
farthest-corner farthest-side far-left far-right
|
139
|
+
fast faster fill fixed flat flex flex-end flex-start
|
140
|
+
forwards georgian grid groove hard-light hebrew help hidden
|
141
|
+
hide high higher hiragana hiragana-iroha horizontal hue icon
|
142
|
+
infinite inherit inline inline-block inline-flex inline-grid
|
143
|
+
inline-size inline-table inset inside intersect isolate italic
|
144
|
+
justify katakana katakana-iroha landscape large larger left
|
145
|
+
left-side leftwards level lighten lighter line-through linear
|
133
146
|
list-item loud low lower lower-alpha lower-greek lower-roman
|
134
|
-
lowercase ltr
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
147
|
+
lowercase ltr luminance luminosity mandatory match-source medium
|
148
|
+
message-box middle mix monospace multiply n-resize narrower
|
149
|
+
ne-resize no-close-quote no-open-quote no-repeat none normal
|
150
|
+
nowrap numeric nw-resize oblique once open-quote outset outside
|
151
|
+
overlay overline paused pointer portrait pre preserve-3d pre-line
|
152
|
+
pre-wrap proximity px relative repeat-x repeat-y replace reverse
|
153
|
+
ridge right right-side rightwards row row-reverse rtl running
|
154
|
+
s-resize sans-serif saturation scale-down screen scroll
|
139
155
|
se-resize semi-condensed semi-expanded separate serif show
|
140
|
-
silent slow slower small-caps small-caption smaller
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
156
|
+
sides silent size slow slower small-caps small-caption smaller
|
157
|
+
smooth soft soft-light solid space-aroun space-between
|
158
|
+
space-evenly span spell-out square start static status-bar sticky
|
159
|
+
stretch sub subtract super sw-resize swap symbolic table
|
160
|
+
table-caption table-cell table-column table-column-group
|
161
|
+
table-footer-group table-header-group table-row table-row-group
|
162
|
+
text text-bottom text-top thick thin top transparent
|
163
|
+
ultra-condensed ultra-expanded underline upper-alpha upper-latin
|
164
|
+
upper-roman uppercase vertical visible w-resize wait wider wrap
|
165
|
+
wrap-reverse x x-fast x-high x-large x-loud x-low x-small x-soft
|
166
|
+
xx-large xx-small yes y z
|
148
167
|
)
|
149
168
|
end
|
150
169
|
|
151
|
-
def self.
|
152
|
-
@
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
170
|
+
def self.colors
|
171
|
+
@colors ||= Set.new %w(
|
172
|
+
aliceblue antiquewhite aqua aquamarine azure beige bisque black
|
173
|
+
blanchedalmond blue blueviolet brown burlywood cadetblue
|
174
|
+
chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
|
175
|
+
darkblue darkcyan darkgoldenrod darkgray darkgreen darkkhaki
|
176
|
+
darkmagenta darkolivegreen darkorange darkorchid darkred
|
177
|
+
darksalmon darkseagreen darkslateblue darkslategray darkturquoise
|
178
|
+
darkviolet deeppink deepskyblue dimgray dodgerblue firebrick
|
179
|
+
floralwhite forestgreen fuchsia gainsboro ghostwhite gold
|
180
|
+
goldenrod gray green greenyellow honeydew hotpink indianred
|
181
|
+
indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon
|
182
|
+
lightblue lightcoral lightcyan lightgoldenrodyellow lightgreen
|
183
|
+
lightgrey lightpink lightsalmon lightseagreen lightskyblue
|
184
|
+
lightslategray lightsteelblue lightyellow lime limegreen linen
|
185
|
+
magenta maroon mediumaquamarine mediumblue mediumorchid
|
186
|
+
mediumpurple mediumseagreen mediumslateblue mediumspringgreen
|
187
|
+
mediumturquoise mediumvioletred midnightblue mintcream mistyrose
|
188
|
+
moccasin navajowhite navy oldlace olive olivedrab orange
|
189
|
+
orangered orchid palegoldenrod palegreen paleturquoise
|
190
|
+
palevioletred papayawhip peachpuff peru pink plum powderblue
|
191
|
+
purple red rosybrown royalblue saddlebrown salmon sandybrown
|
192
|
+
seagreen seashell sienna silver skyblue slateblue slategray snow
|
193
|
+
springgreen steelblue tan teal thistle tomato
|
194
|
+
turquoise violet wheat white whitesmoke yellow yellowgreen
|
195
|
+
)
|
196
|
+
end
|
197
|
+
|
198
|
+
def self.functions
|
199
|
+
@functions ||= Set.new %w(
|
200
|
+
abs acos annotation asin atan atan2 attr blur brightness calc
|
201
|
+
character-variant circle clamp color color-mix conic-gradient
|
202
|
+
contrast cos counter counters cubic-bezier drop-shadow ellipse
|
203
|
+
env exp fit-content format grayscale hsl hsla hue-rotate hwb hypot
|
204
|
+
image-set inset invert lab lch linear linear-gradient log matrix
|
205
|
+
matrix3d max min minmax mod oklab oklch opacity ornaments path
|
206
|
+
perspective polygon pow radial-gradient ray rect rem repeat
|
207
|
+
repeating-conic-gradient repeating-linear-gradient
|
208
|
+
repeating-radial-gradient rgb rgba rotate rotate3d rotatex
|
209
|
+
rotatey rotatez round saturate scale scale3d scalex scaley scalez
|
210
|
+
sepia sign sin skewx skewy sqrt steps styleset
|
211
|
+
stylistic swash tan translate translate3d translatex translatey
|
212
|
+
translatez url var xywh
|
177
213
|
)
|
178
214
|
end
|
179
215
|
|
@@ -196,21 +232,26 @@ module Rouge
|
|
196
232
|
rule %r([~^*!%&\[\]()<>|+=@:;,./?-]), Operator
|
197
233
|
rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
|
198
234
|
rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
|
235
|
+
rule %r/[0-9]{1,3}\%/, Num
|
199
236
|
end
|
200
237
|
|
201
238
|
state :value do
|
202
239
|
mixin :basics
|
203
|
-
rule %r/
|
204
|
-
rule %r/#
|
205
|
-
rule %r
|
206
|
-
rule %r/[\[\]():\/.,]/, Punctuation
|
240
|
+
rule %r/#[0-9a-f]{3,8}/i, Name::Other # colors
|
241
|
+
rule %r/#{number}(?:%|(?:px|pt|pc|in|cm|mm|Q|em|rem|ex|ch|vw|vh|vmin|vmax|fr|dpi|dpcm|dppx|deg|grad|rad|turn|s|ms|Hz|kHz)\b)?/, Num
|
242
|
+
rule %r/[\[\]():.,]/, Punctuation
|
207
243
|
rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
|
208
244
|
rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
|
245
|
+
rule %r/(true|false)/i, Name::Constant
|
246
|
+
rule %r/\-\-#{identifier}/, Literal
|
247
|
+
rule %r([*+/-]), Operator
|
209
248
|
rule(identifier) do |m|
|
210
|
-
if self.class.
|
211
|
-
token Name::
|
212
|
-
elsif self.class.builtins.include? m[0]
|
249
|
+
if self.class.colors.include? m[0].downcase
|
250
|
+
token Name::Other
|
251
|
+
elsif self.class.builtins.include? m[0].downcase
|
213
252
|
token Name::Builtin
|
253
|
+
elsif self.class.functions.include? m[0].downcase
|
254
|
+
token Name::Function
|
214
255
|
else
|
215
256
|
token Name
|
216
257
|
end
|
@@ -250,7 +291,7 @@ module Rouge
|
|
250
291
|
mixin :basics
|
251
292
|
rule %r/}/, Punctuation, :pop!
|
252
293
|
rule %r/(#{identifier})(\s*)(:)/m do |m|
|
253
|
-
name_tok = if self.class.
|
294
|
+
name_tok = if self.class.properties.include? m[1]
|
254
295
|
Name::Label
|
255
296
|
elsif self.class.vendor_prefixes.any? { |p| m[1].start_with?(p) }
|
256
297
|
Name::Label
|
data/lib/rouge/lexers/docker.rb
CHANGED
@@ -8,7 +8,7 @@ module Rouge
|
|
8
8
|
desc "Dockerfile syntax"
|
9
9
|
tag 'docker'
|
10
10
|
aliases 'dockerfile', 'Dockerfile', 'containerfile', 'Containerfile'
|
11
|
-
filenames 'Dockerfile', '*.Dockerfile', '*.docker', 'Containerfile', '*.Containerfile'
|
11
|
+
filenames 'Dockerfile', 'Dockerfile.*', '*.Dockerfile', '*.docker', 'Containerfile', 'Containerfile.*', '*.Containerfile'
|
12
12
|
mimetypes 'text/x-dockerfile-config'
|
13
13
|
|
14
14
|
KEYWORDS = %w(
|
data/lib/rouge/lexers/html.rb
CHANGED
@@ -7,7 +7,7 @@ module Rouge
|
|
7
7
|
title "HTML"
|
8
8
|
desc "HTML, the markup language of the web"
|
9
9
|
tag 'html'
|
10
|
-
filenames '*.htm', '*.html', '*.xhtml', '*.cshtml'
|
10
|
+
filenames '*.htm', '*.html', '*.xhtml', '*.cshtml', '*.razor'
|
11
11
|
mimetypes 'text/html', 'application/xhtml+xml'
|
12
12
|
|
13
13
|
def self.detect?(text)
|
data/lib/rouge/lexers/java.rb
CHANGED
@@ -51,7 +51,7 @@ module Rouge
|
|
51
51
|
rule %r/(?:#{declarations.join('|')})\b/, Keyword::Declaration
|
52
52
|
rule %r/(?:#{types.join('|')})\b/, Keyword::Type
|
53
53
|
rule %r/(?:true|false|null)\b/, Keyword::Constant
|
54
|
-
rule %r/(?:class|interface)\b/, Keyword::Declaration, :class
|
54
|
+
rule %r/(?:class|interface|record)\b/, Keyword::Declaration, :class
|
55
55
|
rule %r/(?:import|package)\b/, Keyword::Namespace, :import
|
56
56
|
rule %r/"""\s*\n.*?(?<!\\)"""/m, Str::Heredoc
|
57
57
|
rule %r/"(\\\\|\\"|[^"])*"/, Str
|
data/lib/rouge/lexers/mojo.rb
CHANGED
data/lib/rouge/lexers/python.rb
CHANGED
@@ -20,22 +20,24 @@ module Rouge
|
|
20
20
|
@keywords ||= %w(
|
21
21
|
assert break continue del elif else except exec
|
22
22
|
finally for global if lambda pass print raise
|
23
|
-
return try while yield as with from import
|
23
|
+
return try while yield as with from import
|
24
24
|
async await nonlocal
|
25
25
|
)
|
26
26
|
end
|
27
27
|
|
28
28
|
def self.builtins
|
29
29
|
@builtins ||= %w(
|
30
|
-
__import__ abs all any apply ascii
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
__import__ abs aiter all anext any apply ascii
|
31
|
+
basestring bin bool buffer breakpoint bytearray bytes
|
32
|
+
callable chr classmethod cmp coerce compile complex
|
33
|
+
delattr dict dir divmod enumerate eval exec execfile exit
|
34
|
+
file filter float format frozenset getattr globals
|
35
|
+
hasattr hash help hex
|
36
|
+
id input int intern isinstance issubclass iter len list locals long
|
37
|
+
map max memoryview min next object oct open ord pow print property
|
38
|
+
range raw_input reduce reload repr reversed round set setattr slice
|
39
|
+
sorted staticmethod str sum super tuple type unichr unicode vars
|
40
|
+
xrange zip
|
39
41
|
)
|
40
42
|
end
|
41
43
|
|
@@ -45,25 +47,26 @@ module Rouge
|
|
45
47
|
|
46
48
|
def self.exceptions
|
47
49
|
@exceptions ||= %w(
|
48
|
-
ArithmeticError AssertionError AttributeError
|
49
|
-
|
50
|
-
BytesWarning ChildProcessError ConnectionAbortedError
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
NotADirectoryError NotImplemented NotImplementedError
|
59
|
-
OverflowError OverflowWarning PendingDeprecationWarning
|
60
|
-
ProcessLookupError
|
61
|
-
RuntimeError RuntimeWarning
|
62
|
-
StopIteration SyntaxError SyntaxWarning
|
63
|
-
TabError TimeoutError TypeError
|
64
|
-
UnicodeEncodeError UnicodeError
|
65
|
-
UnicodeWarning UserWarning ValueError VMSError
|
66
|
-
WindowsError
|
50
|
+
ArithmeticError AssertionError AttributeError BaseException
|
51
|
+
BaseExceptionGroup BlockingIOError BrokenPipeError BufferError
|
52
|
+
BytesWarning ChildProcessError ConnectionAbortedError ConnectionError
|
53
|
+
ConnectionRefusedError ConnectionResetError DeprecationWarning
|
54
|
+
EOFError EnvironmentError EncodingWarning Exception ExceptionGroup
|
55
|
+
FileExistsError FileNotFoundError FloatingPointError FutureWarning
|
56
|
+
GeneratorExit IOError ImportError ImportWarning IndentationError
|
57
|
+
IndexError InterruptedError IsADirectoryError
|
58
|
+
KeyError KeyboardInterrupt LookupError
|
59
|
+
MemoryError ModuleNotFoundError
|
60
|
+
NameError NotADirectoryError NotImplemented NotImplementedError
|
61
|
+
OSError OverflowError OverflowWarning PendingDeprecationWarning
|
62
|
+
PermissionError ProcessLookupError PythonFinalizationError
|
63
|
+
RecursionError ReferenceError ResourceWarning RuntimeError RuntimeWarning
|
64
|
+
StandardError StopAsyncIteration StopIteration SyntaxError SyntaxWarning
|
65
|
+
SystemError SystemExit TabError TimeoutError TypeError
|
66
|
+
UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError
|
67
|
+
UnicodeTranslateError UnicodeWarning UserWarning ValueError VMSError
|
68
|
+
Warning WindowsError
|
69
|
+
ZeroDivisionError
|
67
70
|
)
|
68
71
|
end
|
69
72
|
|
@@ -127,6 +130,8 @@ module Rouge
|
|
127
130
|
push :generic_string
|
128
131
|
end
|
129
132
|
|
133
|
+
mixin :soft_keywords
|
134
|
+
|
130
135
|
# using negative lookbehind so we don't match property names
|
131
136
|
rule %r/(?<!\.)#{identifier}/ do |m|
|
132
137
|
if self.class.keywords.include? m[0]
|
@@ -166,6 +171,28 @@ module Rouge
|
|
166
171
|
rule identifier, Name::Class, :pop!
|
167
172
|
end
|
168
173
|
|
174
|
+
state :soft_keywords do
|
175
|
+
rule %r/
|
176
|
+
(^[ \t]*)
|
177
|
+
(match|case)\b
|
178
|
+
(?![ \t]*
|
179
|
+
(?:[:,;=^&|@~)\]}] |
|
180
|
+
(?:#{Python.keywords.join('|')})\b))
|
181
|
+
/x do |m|
|
182
|
+
token Text::Whitespace, m[1]
|
183
|
+
token Keyword, m[2]
|
184
|
+
push :soft_keywords_inner
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
state :soft_keywords_inner do
|
189
|
+
rule %r((\s+)([^\n_]*)(_\b)) do |m|
|
190
|
+
groups Text::Whitespace, Text, Keyword
|
191
|
+
end
|
192
|
+
|
193
|
+
rule(//) { pop! }
|
194
|
+
end
|
195
|
+
|
169
196
|
state :raise do
|
170
197
|
rule %r/from\b/, Keyword
|
171
198
|
rule %r/raise\b/, Keyword
|
data/lib/rouge/lexers/svelte.rb
CHANGED
data/lib/rouge/lexers/toml.rb
CHANGED
data/lib/rouge/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rouge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeanine Adkisson
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
12
|
description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
|
14
13
|
email:
|
@@ -36,6 +35,7 @@ files:
|
|
36
35
|
- lib/rouge/demos/batchfile
|
37
36
|
- lib/rouge/demos/bbcbasic
|
38
37
|
- lib/rouge/demos/bibtex
|
38
|
+
- lib/rouge/demos/bicep
|
39
39
|
- lib/rouge/demos/biml
|
40
40
|
- lib/rouge/demos/bpf
|
41
41
|
- lib/rouge/demos/brainfuck
|
@@ -284,6 +284,7 @@ files:
|
|
284
284
|
- lib/rouge/lexers/batchfile.rb
|
285
285
|
- lib/rouge/lexers/bbcbasic.rb
|
286
286
|
- lib/rouge/lexers/bibtex.rb
|
287
|
+
- lib/rouge/lexers/bicep.rb
|
287
288
|
- lib/rouge/lexers/biml.rb
|
288
289
|
- lib/rouge/lexers/bpf.rb
|
289
290
|
- lib/rouge/lexers/brainfuck.rb
|
@@ -542,7 +543,6 @@ metadata:
|
|
542
543
|
changelog_uri: https://github.com/rouge-ruby/rouge/blob/master/CHANGELOG.md
|
543
544
|
documentation_uri: https://rouge-ruby.github.io/docs/
|
544
545
|
source_code_uri: https://github.com/rouge-ruby/rouge
|
545
|
-
post_install_message:
|
546
546
|
rdoc_options: []
|
547
547
|
require_paths:
|
548
548
|
- lib
|
@@ -557,8 +557,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
557
557
|
- !ruby/object:Gem::Version
|
558
558
|
version: '0'
|
559
559
|
requirements: []
|
560
|
-
rubygems_version: 3.
|
561
|
-
signing_key:
|
560
|
+
rubygems_version: 3.6.7
|
562
561
|
specification_version: 4
|
563
562
|
summary: A pure-ruby colorizer based on pygments
|
564
563
|
test_files: []
|