rouge 4.5.2 → 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/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/csharp.rb +37 -34
- data/lib/rouge/lexers/docker.rb +1 -1
- data/lib/rouge/lexers/python.rb +56 -29
- 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
@@ -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/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/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/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/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: []
|