rouge 3.3.0 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +14 -2
- data/lib/rouge.rb +45 -41
- data/lib/rouge/cli.rb +26 -2
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/xojo +13 -0
- data/lib/rouge/formatter.rb +36 -0
- data/lib/rouge/formatters/html.rb +2 -0
- data/lib/rouge/formatters/html_linewise.rb +6 -11
- data/lib/rouge/formatters/html_table.rb +20 -31
- data/lib/rouge/formatters/terminal256.rb +1 -0
- data/lib/rouge/guessers/disambiguation.rb +13 -0
- data/lib/rouge/guessers/source.rb +1 -1
- data/lib/rouge/lexer.rb +44 -13
- data/lib/rouge/lexers/c.rb +6 -29
- data/lib/rouge/lexers/coffeescript.rb +14 -6
- data/lib/rouge/lexers/common_lisp.rb +1 -1
- data/lib/rouge/lexers/console.rb +2 -2
- data/lib/rouge/lexers/coq.rb +1 -1
- data/lib/rouge/lexers/csharp.rb +0 -1
- data/lib/rouge/lexers/diff.rb +8 -4
- data/lib/rouge/lexers/docker.rb +1 -1
- data/lib/rouge/lexers/escape.rb +55 -0
- data/lib/rouge/lexers/go.rb +1 -1
- data/lib/rouge/lexers/graphql.rb +10 -0
- data/lib/rouge/lexers/html.rb +1 -0
- data/lib/rouge/lexers/java.rb +4 -0
- data/lib/rouge/lexers/javascript.rb +12 -16
- data/lib/rouge/lexers/jinja.rb +15 -1
- data/lib/rouge/lexers/julia.rb +140 -17
- data/lib/rouge/lexers/kotlin.rb +11 -4
- data/lib/rouge/lexers/markdown.rb +21 -4
- data/lib/rouge/lexers/matlab.rb +9 -2
- data/lib/rouge/lexers/objective_c.rb +7 -12
- data/lib/rouge/lexers/perl.rb +38 -6
- data/lib/rouge/lexers/powershell.rb +1 -1
- data/lib/rouge/lexers/rust.rb +1 -1
- data/lib/rouge/lexers/scala.rb +28 -2
- data/lib/rouge/lexers/shell.rb +1 -1
- data/lib/rouge/lexers/slim.rb +2 -2
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/xml.rb +1 -1
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/regex_lexer.rb +12 -12
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/token.rb +30 -22
- data/lib/rouge/version.rb +1 -1
- metadata +10 -4
data/lib/rouge/regex_lexer.rb
CHANGED
@@ -183,18 +183,18 @@ module Rouge
|
|
183
183
|
# Define a new state for this lexer with the given name.
|
184
184
|
# The block will be evaluated in the context of a {StateDSL}.
|
185
185
|
def self.state(name, &b)
|
186
|
-
name = name.
|
186
|
+
name = name.to_sym
|
187
187
|
state_definitions[name] = StateDSL.new(name, &b)
|
188
188
|
end
|
189
189
|
|
190
190
|
def self.prepend(name, &b)
|
191
|
-
name = name.
|
191
|
+
name = name.to_sym
|
192
192
|
dsl = state_definitions[name] or raise "no such state #{name.inspect}"
|
193
193
|
replace_state(name, dsl.prepended(&b))
|
194
194
|
end
|
195
195
|
|
196
196
|
def self.append(name, &b)
|
197
|
-
name = name.
|
197
|
+
name = name.to_sym
|
198
198
|
dsl = state_definitions[name] or raise "no such state #{name.inspect}"
|
199
199
|
replace_state(name, dsl.appended(&b))
|
200
200
|
end
|
@@ -204,7 +204,7 @@ module Rouge
|
|
204
204
|
return name if name.is_a? State
|
205
205
|
|
206
206
|
states[name.to_sym] ||= begin
|
207
|
-
defn = state_definitions[name.
|
207
|
+
defn = state_definitions[name.to_sym] or raise "unknown state: #{name.inspect}"
|
208
208
|
defn.to_state(self)
|
209
209
|
end
|
210
210
|
end
|
@@ -352,10 +352,10 @@ module Rouge
|
|
352
352
|
end
|
353
353
|
end
|
354
354
|
|
355
|
-
# Delegate the lex to another lexer.
|
356
|
-
#
|
357
|
-
#
|
358
|
-
#
|
355
|
+
# Delegate the lex to another lexer. We use the `continue_lex` method
|
356
|
+
# so that #reset! will not be called. In this way, a single lexer
|
357
|
+
# can be repeatedly delegated to while maintaining its own internal
|
358
|
+
# state stack.
|
359
359
|
#
|
360
360
|
# @param [#lex] lexer
|
361
361
|
# The lexer or lexer class to delegate to
|
@@ -365,7 +365,7 @@ module Rouge
|
|
365
365
|
puts " delegating to #{lexer.inspect}" if @debug
|
366
366
|
text ||= @current_stream[0]
|
367
367
|
|
368
|
-
lexer.
|
368
|
+
lexer.continue_lex(text) do |tok, val|
|
369
369
|
puts " delegated token: #{tok.inspect}, #{val.inspect}" if @debug
|
370
370
|
yield_token(tok, val)
|
371
371
|
end
|
@@ -421,15 +421,15 @@ module Rouge
|
|
421
421
|
|
422
422
|
# Check if `state_name` is in the state stack.
|
423
423
|
def in_state?(state_name)
|
424
|
-
state_name = state_name.
|
424
|
+
state_name = state_name.to_sym
|
425
425
|
stack.any? do |state|
|
426
|
-
state.name == state_name.
|
426
|
+
state.name == state_name.to_sym
|
427
427
|
end
|
428
428
|
end
|
429
429
|
|
430
430
|
# Check if `state_name` is the state on top of the state stack.
|
431
431
|
def state?(state_name)
|
432
|
-
state_name.
|
432
|
+
state_name.to_sym == state.name
|
433
433
|
end
|
434
434
|
|
435
435
|
private
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Themes
|
6
|
+
# A port of the bw style from Pygments.
|
7
|
+
# See https://bitbucket.org/birkenfeld/pygments-main/src/default/pygments/styles/bw.py
|
8
|
+
class BlackWhiteTheme < CSSTheme
|
9
|
+
name 'bw'
|
10
|
+
|
11
|
+
style Text, :fg => '#000000', :bg => '#ffffff'
|
12
|
+
|
13
|
+
style Comment, :italic => true
|
14
|
+
style Comment::Preproc, :italic => false
|
15
|
+
|
16
|
+
style Keyword, :bold => true
|
17
|
+
style Keyword::Pseudo, :bold => false
|
18
|
+
style Keyword::Type, :bold => false
|
19
|
+
|
20
|
+
style Operator, :bold => true
|
21
|
+
|
22
|
+
style Name::Class, :bold => true
|
23
|
+
style Name::Namespace, :bold => true
|
24
|
+
style Name::Exception, :bold => true
|
25
|
+
style Name::Entity, :bold => true
|
26
|
+
style Name::Tag, :bold => true
|
27
|
+
|
28
|
+
style Literal::String, :italic => true
|
29
|
+
style Literal::String::Interpol, :bold => true
|
30
|
+
style Literal::String::Escape, :bold => true
|
31
|
+
|
32
|
+
style Generic::Heading, :bold => true
|
33
|
+
style Generic::Subheading, :bold => true
|
34
|
+
style Generic::Emph, :italic => true
|
35
|
+
style Generic::Strong, :bold => true
|
36
|
+
style Generic::Prompt, :bold => true
|
37
|
+
|
38
|
+
style Error, :fg => '#FF0000'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/rouge/token.rb
CHANGED
@@ -80,8 +80,9 @@ module Rouge
|
|
80
80
|
token :Whitespace, 'w'
|
81
81
|
end
|
82
82
|
|
83
|
-
token :
|
84
|
-
token :
|
83
|
+
token :Escape, 'esc'
|
84
|
+
token :Error, 'err'
|
85
|
+
token :Other, 'x'
|
85
86
|
|
86
87
|
token :Keyword, 'k' do
|
87
88
|
token :Constant, 'kc'
|
@@ -103,7 +104,9 @@ module Rouge
|
|
103
104
|
token :Decorator, 'nd'
|
104
105
|
token :Entity, 'ni'
|
105
106
|
token :Exception, 'ne'
|
106
|
-
token :Function, 'nf'
|
107
|
+
token :Function, 'nf' do
|
108
|
+
token :Magic, 'fm'
|
109
|
+
end
|
107
110
|
token :Property, 'py'
|
108
111
|
token :Label, 'nl'
|
109
112
|
token :Namespace, 'nn'
|
@@ -113,34 +116,37 @@ module Rouge
|
|
113
116
|
token :Class, 'vc'
|
114
117
|
token :Global, 'vg'
|
115
118
|
token :Instance, 'vi'
|
119
|
+
token :Magic, 'vm'
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
119
123
|
token :Literal, 'l' do
|
120
124
|
token :Date, 'ld'
|
121
125
|
|
122
|
-
token :String,
|
123
|
-
token :
|
124
|
-
token :
|
125
|
-
token :
|
126
|
-
token :
|
127
|
-
token :
|
128
|
-
token :
|
129
|
-
token :
|
130
|
-
token :
|
131
|
-
token :
|
132
|
-
token :
|
133
|
-
token :
|
126
|
+
token :String, 's' do
|
127
|
+
token :Affix, 'sa'
|
128
|
+
token :Backtick, 'sb'
|
129
|
+
token :Char, 'sc'
|
130
|
+
token :Delimiter, 'dl'
|
131
|
+
token :Doc, 'sd'
|
132
|
+
token :Double, 's2'
|
133
|
+
token :Escape, 'se'
|
134
|
+
token :Heredoc, 'sh'
|
135
|
+
token :Interpol, 'si'
|
136
|
+
token :Other, 'sx'
|
137
|
+
token :Regex, 'sr'
|
138
|
+
token :Single, 's1'
|
139
|
+
token :Symbol, 'ss'
|
134
140
|
end
|
135
141
|
|
136
142
|
token :Number, 'm' do
|
143
|
+
token :Bin, 'mb'
|
137
144
|
token :Float, 'mf'
|
138
145
|
token :Hex, 'mh'
|
139
146
|
token :Integer, 'mi' do
|
140
147
|
token :Long, 'il'
|
141
148
|
end
|
142
149
|
token :Oct, 'mo'
|
143
|
-
token :Bin, 'mb'
|
144
150
|
token :Other, 'mx'
|
145
151
|
end
|
146
152
|
end
|
@@ -153,12 +159,14 @@ module Rouge
|
|
153
159
|
token :Indicator, 'pi'
|
154
160
|
end
|
155
161
|
|
156
|
-
token :Comment,
|
157
|
-
token :
|
158
|
-
token :
|
159
|
-
token :
|
160
|
-
token :
|
161
|
-
token :
|
162
|
+
token :Comment, 'c' do
|
163
|
+
token :Hashbang, 'ch'
|
164
|
+
token :Doc, 'cd'
|
165
|
+
token :Multiline, 'cm'
|
166
|
+
token :Preproc, 'cp'
|
167
|
+
token :PreprocFile, 'cpf'
|
168
|
+
token :Single, 'c1'
|
169
|
+
token :Special, 'cs'
|
162
170
|
end
|
163
171
|
|
164
172
|
token :Generic, 'g' do
|
data/lib/rouge/version.rb
CHANGED
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: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeanine Adkisson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-11 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:
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/rouge/demos/elm
|
57
57
|
- lib/rouge/demos/erb
|
58
58
|
- lib/rouge/demos/erlang
|
59
|
+
- lib/rouge/demos/escape
|
59
60
|
- lib/rouge/demos/factor
|
60
61
|
- lib/rouge/demos/fortran
|
61
62
|
- lib/rouge/demos/fsharp
|
@@ -142,6 +143,7 @@ files:
|
|
142
143
|
- lib/rouge/demos/sml
|
143
144
|
- lib/rouge/demos/sqf
|
144
145
|
- lib/rouge/demos/sql
|
146
|
+
- lib/rouge/demos/supercollider
|
145
147
|
- lib/rouge/demos/swift
|
146
148
|
- lib/rouge/demos/tap
|
147
149
|
- lib/rouge/demos/tcl
|
@@ -161,6 +163,7 @@ files:
|
|
161
163
|
- lib/rouge/demos/vue
|
162
164
|
- lib/rouge/demos/wollok
|
163
165
|
- lib/rouge/demos/xml
|
166
|
+
- lib/rouge/demos/xojo
|
164
167
|
- lib/rouge/demos/yaml
|
165
168
|
- lib/rouge/formatter.rb
|
166
169
|
- lib/rouge/formatters/html.rb
|
@@ -214,6 +217,7 @@ files:
|
|
214
217
|
- lib/rouge/lexers/elm.rb
|
215
218
|
- lib/rouge/lexers/erb.rb
|
216
219
|
- lib/rouge/lexers/erlang.rb
|
220
|
+
- lib/rouge/lexers/escape.rb
|
217
221
|
- lib/rouge/lexers/factor.rb
|
218
222
|
- lib/rouge/lexers/fortran.rb
|
219
223
|
- lib/rouge/lexers/fsharp.rb
|
@@ -307,6 +311,7 @@ files:
|
|
307
311
|
- lib/rouge/lexers/sqf.rb
|
308
312
|
- lib/rouge/lexers/sqf/commands.rb
|
309
313
|
- lib/rouge/lexers/sql.rb
|
314
|
+
- lib/rouge/lexers/supercollider.rb
|
310
315
|
- lib/rouge/lexers/swift.rb
|
311
316
|
- lib/rouge/lexers/tap.rb
|
312
317
|
- lib/rouge/lexers/tcl.rb
|
@@ -328,6 +333,7 @@ files:
|
|
328
333
|
- lib/rouge/lexers/vue.rb
|
329
334
|
- lib/rouge/lexers/wollok.rb
|
330
335
|
- lib/rouge/lexers/xml.rb
|
336
|
+
- lib/rouge/lexers/xojo.rb
|
331
337
|
- lib/rouge/lexers/yaml.rb
|
332
338
|
- lib/rouge/plugins/redcarpet.rb
|
333
339
|
- lib/rouge/regex_lexer.rb
|
@@ -335,6 +341,7 @@ files:
|
|
335
341
|
- lib/rouge/text_analyzer.rb
|
336
342
|
- lib/rouge/theme.rb
|
337
343
|
- lib/rouge/themes/base16.rb
|
344
|
+
- lib/rouge/themes/bw.rb
|
338
345
|
- lib/rouge/themes/colorful.rb
|
339
346
|
- lib/rouge/themes/github.rb
|
340
347
|
- lib/rouge/themes/gruvbox.rb
|
@@ -371,8 +378,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
371
378
|
- !ruby/object:Gem::Version
|
372
379
|
version: '0'
|
373
380
|
requirements: []
|
374
|
-
|
375
|
-
rubygems_version: 2.6.14.1
|
381
|
+
rubygems_version: 3.0.3
|
376
382
|
signing_key:
|
377
383
|
specification_version: 4
|
378
384
|
summary: A pure-ruby colorizer based on pygments
|