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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e05ab679798a94f2f0eb8c949c3cd9bedcebb041d41cdaad5531d58782747ba4
4
- data.tar.gz: 8885464dab437455ef92b154b22fc142783620a1e8f5c5259e398cbbd5a575a4
3
+ metadata.gz: 7a7fb3b7ebd844675016c5515295713f72c36ded464d0a9bdb64e5929ab40f18
4
+ data.tar.gz: 19d434e8b8fa8ad3c12483ad03fe74b09ca46b76f7d2ba0b8867d7e0303bfc85
5
5
  SHA512:
6
- metadata.gz: '0781c8f63f7e851cb6248ffbd713630e00206730ec3b590e41cbd5fc019597113ea5b2bb1108fff504c1055f9245716bbf9bcf69c89cd5259665e31ac96b6b4c'
7
- data.tar.gz: 67e402cb9f3ff585824b8a888d5cf7be538f32ded5613af14f2381661c74b2c426d215d5e9f886577eca61233d7f7ac884c11e12fe9b191e18e3ea9063d03945
6
+ metadata.gz: fc2d202d4258acaffdaf0bee314049bf55876ee89384ef5e8d5625df1994f4789c893b2119721c1e3f71afed4040e3988774fa9e71ae8f7996fd90cff158ae22
7
+ data.tar.gz: f93bbd478d426253369e29b3b2a7b806bc68a6397e78dcf73061ca0c5295ee800691aee291cef9ff7caeca610b98292c1b18bc67f54b214660b36edbb187b565
data/Gemfile CHANGED
@@ -35,4 +35,7 @@ group :development do
35
35
  # Ruby 3 no longer ships with a web server
36
36
  gem 'puma' if RUBY_VERSION >= '3'
37
37
  gem 'shotgun'
38
+
39
+ gem "mutex_m" if RUBY_VERSION >= '3.4'
40
+ gem "base64" if RUBY_VERSION >= '3.4'
38
41
  end
@@ -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
 
@@ -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{[+*/&<=>|]|-|=>|\.\.|\*\*|[:></]=|<<|>>|<>}, Operator
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
@@ -12,35 +12,40 @@ module Rouge
12
12
  title "C#"
13
13
  desc 'a multi-paradigm language targeting .NET'
14
14
 
15
- # TODO: support more of unicode
16
- id = /@?[_a-z]\w*/i
17
-
18
- #Reserved Identifiers
19
- #Contextual Keywords
20
- #LINQ Query Expressions
21
- keywords = %w(
22
- abstract as base break case catch checked const continue
23
- default delegate do else enum event explicit extern false
24
- finally fixed for foreach goto if implicit in interface
25
- internal is lock new null operator out override params private
26
- protected public readonly ref return sealed sizeof stackalloc
27
- static switch this throw true try typeof unchecked unsafe
28
- virtual void volatile while
29
- add alias async await get global partial remove set value where
30
- yield nameof notnull
31
- ascending by descending equals from group in init into join let
32
- on orderby select unmanaged when and not or with
33
- )
34
-
35
- keywords_type = %w(
36
- bool byte char decimal double dynamic float int long nint nuint
37
- object sbyte short string uint ulong ushort var
38
- )
39
-
40
- cpp_keywords = %w(
41
- if endif else elif define undef line error warning region
42
- endregion pragma nullable
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
- Comment::Preproc
96
- rule %r/\b(#{keywords.join('|')})\b/, Keyword
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
@@ -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(
@@ -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 yield
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 basestring bin bool buffer
31
- bytearray bytes callable chr classmethod cmp coerce compile
32
- complex delattr dict dir divmod enumerate eval execfile exit
33
- file filter float format frozenset getattr globals hasattr hash hex id
34
- input int intern isinstance issubclass iter len list locals
35
- long map max memoryview min next object oct open ord pow property range
36
- raw_input reduce reload repr reversed round set setattr slice
37
- sorted staticmethod str sum super tuple type unichr unicode
38
- vars xrange zip
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
- BaseException BlockingIOError BrokenPipeError BufferError
50
- BytesWarning ChildProcessError ConnectionAbortedError
51
- ConnectionError ConnectionRefusedError ConnectionResetError
52
- DeprecationWarning EOFError EnvironmentError
53
- Exception FileExistsError FileNotFoundError
54
- FloatingPointError FutureWarning GeneratorExit IOError
55
- ImportError ImportWarning IndentationError IndexError
56
- InterruptedError IsADirectoryError KeyError KeyboardInterrupt
57
- LookupError MemoryError ModuleNotFoundError NameError
58
- NotADirectoryError NotImplemented NotImplementedError OSError
59
- OverflowError OverflowWarning PendingDeprecationWarning
60
- ProcessLookupError RecursionError ReferenceError ResourceWarning
61
- RuntimeError RuntimeWarning StandardError StopAsyncIteration
62
- StopIteration SyntaxError SyntaxWarning SystemError SystemExit
63
- TabError TimeoutError TypeError UnboundLocalError UnicodeDecodeError
64
- UnicodeEncodeError UnicodeError UnicodeTranslateError
65
- UnicodeWarning UserWarning ValueError VMSError Warning
66
- WindowsError ZeroDivisionError
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
@@ -11,7 +11,7 @@ module Rouge
11
11
 
12
12
  tag 'terraform'
13
13
  aliases 'tf'
14
- filenames '*.tf'
14
+ filenames '*.tf', '*.tfvars'
15
15
 
16
16
  def self.keywords
17
17
  @keywords ||= Set.new %w(
@@ -67,6 +67,7 @@ module Rouge
67
67
  mixin :esc_str
68
68
  rule %r/\,/, Punctuation
69
69
  rule %r/\[/, Punctuation, :array
70
+ rule %r/\{/, Punctuation, :inline
70
71
  end
71
72
 
72
73
  state :dq do
data/lib/rouge/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "4.5.2"
6
+ "4.6.0"
7
7
  end
8
8
  end
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.5.2
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: 2025-04-28 00:00:00.000000000 Z
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.5.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: []