rouge 4.1.0 → 4.1.1

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.
@@ -66,7 +66,7 @@ module Rouge
66
66
 
67
67
  id = /[\p{L}_][\p{L}\p{N}_]*/
68
68
  ns = /(?:#{id}\\)+/
69
- id_with_ns = /(?:#{ns})?#{id}/
69
+ id_with_ns = /\\?(?:#{ns})?#{id}/
70
70
 
71
71
  start do
72
72
  case @start_inline
@@ -273,7 +273,7 @@ module Rouge
273
273
  state :in_catch do
274
274
  rule %r/\(/, Punctuation
275
275
  rule %r/\|/, Operator
276
- rule id, Name::Class
276
+ rule id_with_ns, Name::Class
277
277
  mixin :escape
278
278
  mixin :whitespace
279
279
  mixin :return
@@ -80,6 +80,8 @@ module Rouge
80
80
  groups Punctuation, Text, Str::Doc
81
81
  end
82
82
 
83
+ rule %r/\.\.\.\B$/, Name::Builtin::Pseudo
84
+
83
85
  rule %r/[^\S\n]+/, Text
84
86
  rule %r(#(.*)?\n?), Comment::Single
85
87
  rule %r/[\[\]{}:(),;.]/, Punctuation
@@ -88,6 +90,8 @@ module Rouge
88
90
 
89
91
  rule %r/@#{dotted_identifier}/i, Name::Decorator
90
92
 
93
+ rule %r/(>>>|\.\.\.)\B/, Generic::Prompt
94
+
91
95
  rule %r/(in|is|and|or|not)\b/, Operator::Word
92
96
  rule %r/(<<|>>|\/\/|\*\*)=?/, Operator
93
97
  rule %r/[-~+\/*%=<>&^|@]=?|!=/, Operator
@@ -120,7 +124,7 @@ module Rouge
120
124
  # TODO: not in python 3
121
125
  rule %r/`.*?`/, Str::Backtick
122
126
  rule %r/([rfbu]{0,2})('''|"""|['"])/i do |m|
123
- groups Str::Affix, Str
127
+ groups Str::Affix, Str::Heredoc
124
128
  current_string.register type: m[1].downcase, delim: m[2]
125
129
  push :generic_string
126
130
  end
@@ -178,11 +182,12 @@ module Rouge
178
182
  end
179
183
 
180
184
  state :generic_string do
181
- rule %r/[^'"\\{]+/, Str
185
+ rule %r/>>>|\.\.\./, Generic::Prompt, :doctest
186
+ rule %r/[^'"\\{]+?/, Str
182
187
  rule %r/{{/, Str
183
188
 
184
189
  rule %r/'''|"""|['"]/ do |m|
185
- token Str
190
+ token Str::Heredoc
186
191
  if current_string.delim? m[0]
187
192
  current_string.remove
188
193
  pop!
@@ -220,6 +225,17 @@ module Rouge
220
225
  rule %r/\\./, Str, :pop!
221
226
  end
222
227
 
228
+ state :doctest do
229
+ rule %r/\n\n/, Text, :pop!
230
+
231
+ rule %r/'''|"""/ do
232
+ token Str::Heredoc
233
+ pop!(2) if in_state?(:generic_string) # pop :doctest and :generic_string
234
+ end
235
+
236
+ mixin :root
237
+ end
238
+
223
239
  state :generic_interpol do
224
240
  rule %r/[^{}!:]+/ do |m|
225
241
  recurse m[0]
@@ -42,7 +42,7 @@ module Rouge
42
42
  rule %r/%([rqswQWxiI])?([^\w\s])/ do |m|
43
43
  open = Regexp.escape(m[2])
44
44
  close = Regexp.escape(delimiter_map[m[2]] || m[2])
45
- interp = /[rQWxI]/ === m[1]
45
+ interp = /[rQWxI]/ === m[1] || !m[1]
46
46
  toktype = Str::Other
47
47
 
48
48
  puts " open: #{open.inspect}" if @debug
@@ -188,6 +188,7 @@ module Rouge
188
188
 
189
189
  rule %r/(?:#{keywords.join('|')})(?=\W|$)/, Keyword, :expr_start
190
190
  rule %r/(?:#{keywords_pseudo.join('|')})\b/, Keyword::Pseudo, :expr_start
191
+ rule %r/(not|and|or)\b/, Operator::Word, :expr_start
191
192
 
192
193
  rule %r(
193
194
  (module)
@@ -35,17 +35,18 @@ module Rouge
35
35
  def self.builtins
36
36
  @builtins ||= Set.new %w(
37
37
  Add BitAnd BitOr BitXor bool c_char c_double c_float char
38
- c_int clock_t c_long c_longlong Cons Const Copy c_schar c_short
38
+ c_int clock_t c_long c_longlong Copy c_schar c_short
39
39
  c_uchar c_uint c_ulong c_ulonglong c_ushort c_void dev_t DIR
40
- dirent Div Either Eq Err f32 f64 Failure FILE float fpos_t
41
- i16 i32 i64 i8 isize Index ino_t int intptr_t Left mode_t Modulo Mul
42
- Neg Nil None Num off_t Ok Option Ord Owned pid_t Ptr ptrdiff_t
43
- Right Send Shl Shr size_t Some ssize_t str Sub Success time_t
40
+ dirent Div Eq Err f32 f64 FILE float fpos_t
41
+ i16 i32 i64 i8 isize Index ino_t int intptr_t mode_t Mul
42
+ Neg None off_t Ok Option Ord Owned pid_t ptrdiff_t
43
+ Send Shl Shr size_t Some ssize_t str Sub time_t
44
44
  u16 u32 u64 u8 usize uint uintptr_t
45
- Box Vec String Gc Rc Arc
45
+ Box Vec String Rc Arc
46
46
  u128 i128 Result Sync Pin Unpin Sized Drop drop Fn FnMut FnOnce
47
47
  Clone PartialEq PartialOrd AsMut AsRef From Into Default
48
48
  DoubleEndedIterator ExactSizeIterator Extend IntoIterator Iterator
49
+ FromIterator ToOwned ToString TryFrom TryInto
49
50
  )
50
51
  end
51
52
 
@@ -9,8 +9,11 @@ module Rouge
9
9
 
10
10
  tag 'shell'
11
11
  aliases 'bash', 'zsh', 'ksh', 'sh'
12
- filenames '*.sh', '*.bash', '*.zsh', '*.ksh', '.bashrc', '.zshrc',
13
- '.kshrc', '.profile', 'APKBUILD', 'PKGBUILD', '*.ebuild',
12
+ filenames '*.sh', '*.bash', '*.zsh', '*.ksh', '.bashrc',
13
+ '.kshrc', '.profile',
14
+ '.zshenv', '.zprofile', '.zshrc', '.zlogin', '.zlogout',
15
+ 'zshenv', 'zprofile', 'zshrc', 'zlogin', 'zlogout',
16
+ 'APKBUILD', 'PKGBUILD', '*.ebuild',
14
17
  '*.eclass', '*.exheres-0', '*.exlib'
15
18
 
16
19
  mimetypes 'application/x-sh', 'application/x-shellscript', 'text/x-sh',
@@ -18,6 +21,7 @@ module Rouge
18
21
 
19
22
  def self.detect?(text)
20
23
  return true if text.shebang?(/(ba|z|k)?sh/)
24
+ return true if text.start_with?('#compdef', '#autoload')
21
25
  end
22
26
 
23
27
  KEYWORDS = %w(
@@ -16,24 +16,24 @@ module Rouge
16
16
  mimetypes 'application/x-twig', 'text/html+twig'
17
17
 
18
18
  def self.keywords
19
- @@keywords ||= %w(as do extends flush from import include use else starts
20
- ends with without autoescape endautoescape block
21
- endblock embed endembed filter endfilter for endfor
22
- if endif macro endmacro sandbox endsandbox set endset
23
- spaceless endspaceless)
19
+ @keywords ||= %w(as do extends flush from import include use else starts
20
+ ends with without autoescape endautoescape block
21
+ endblock embed endembed filter endfilter for endfor
22
+ if endif macro endmacro sandbox endsandbox set endset
23
+ spaceless endspaceless)
24
24
  end
25
25
 
26
26
  def self.tests
27
- @@tests ||= %w(constant defined divisibleby empty even iterable null odd
28
- sameas)
27
+ @tests ||= %w(constant defined divisibleby empty even iterable null odd
28
+ sameas)
29
29
  end
30
30
 
31
31
  def self.pseudo_keywords
32
- @@pseudo_keywords ||= %w(true false none)
32
+ @pseudo_keywords ||= %w(true false none)
33
33
  end
34
34
 
35
35
  def self.word_operators
36
- @@word_operators ||= %w(b-and b-or b-xor is in and or not)
36
+ @word_operators ||= %w(b-and b-or b-xor is in and or not)
37
37
  end
38
38
  end
39
39
  end
data/lib/rouge/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "4.1.0"
6
+ "4.1.1"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouge
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeanine Adkisson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-12 00:00:00.000000000 Z
11
+ date: 2023-05-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
14
14
  email:
@@ -543,7 +543,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
543
543
  - !ruby/object:Gem::Version
544
544
  version: '0'
545
545
  requirements: []
546
- rubygems_version: 3.1.6
546
+ rubygems_version: 3.4.12
547
547
  signing_key:
548
548
  specification_version: 4
549
549
  summary: A pure-ruby colorizer based on pygments