rouge 3.13.0 → 3.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rouge.rb +65 -50
- data/lib/rouge/cli.rb +18 -1
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/formatters/terminal256.rb +22 -6
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/lexer.rb +5 -3
- data/lib/rouge/lexers/apache.rb +4 -8
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/cmake.rb +1 -0
- data/lib/rouge/lexers/coffeescript.rb +47 -15
- data/lib/rouge/lexers/console.rb +88 -35
- data/lib/rouge/lexers/cpp.rb +12 -5
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/d.rb +4 -4
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/dot.rb +2 -2
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +1 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +1 -1
- data/lib/rouge/lexers/io.rb +2 -2
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +4 -5
- data/lib/rouge/lexers/jinja.rb +5 -3
- data/lib/rouge/lexers/json.rb +3 -0
- data/lib/rouge/lexers/json_doc.rb +5 -3
- data/lib/rouge/lexers/kotlin.rb +4 -0
- data/lib/rouge/lexers/lasso.rb +4 -9
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +1 -1
- data/lib/rouge/lexers/llvm.rb +55 -46
- data/lib/rouge/lexers/lua.rb +40 -2
- data/lib/rouge/lexers/m68k.rb +2 -2
- data/lib/rouge/lexers/magik.rb +1 -1
- data/lib/rouge/lexers/markdown.rb +9 -5
- data/lib/rouge/lexers/mathematica.rb +1 -1
- data/lib/rouge/lexers/matlab.rb +3 -4
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/nasm.rb +42 -168
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +1 -1
- data/lib/rouge/lexers/objective_c.rb +3 -172
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/pascal.rb +1 -1
- data/lib/rouge/lexers/php.rb +47 -32
- data/lib/rouge/lexers/pony.rb +1 -1
- data/lib/rouge/lexers/powershell.rb +5 -0
- data/lib/rouge/lexers/protobuf.rb +1 -1
- data/lib/rouge/lexers/python.rb +68 -58
- data/lib/rouge/lexers/racket.rb +24 -1
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/ruby.rb +16 -3
- data/lib/rouge/lexers/rust.rb +3 -11
- data/lib/rouge/lexers/scala.rb +4 -4
- data/lib/rouge/lexers/shell.rb +1 -1
- data/lib/rouge/lexers/sieve.rb +1 -1
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sqf.rb +2 -2
- data/lib/rouge/lexers/swift.rb +2 -1
- data/lib/rouge/lexers/terraform.rb +15 -0
- data/lib/rouge/lexers/toml.rb +39 -1
- data/lib/rouge/lexers/typescript.rb +11 -0
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/verilog.rb +1 -1
- data/lib/rouge/lexers/viml.rb +1 -1
- data/lib/rouge/lexers/vue.rb +4 -1
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/version.rb +1 -1
- metadata +37 -6
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
- data/lib/rouge/lexers/matlab/builtins.yml +0 -3515
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 579264110ed9ae2f82195af1d9d83d2ebf6288f8ce3cd6909c2a9d563ae0e1d5
|
4
|
+
data.tar.gz: 25a1809f05ec5aab6f04ee7b885a17cf8b1388e1247284e773bc166d13a9e296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 832c13a7236b814d53a5a6b170fc00b4961efb2cdee91053bfc3a6386a9bc6c7b071f9fa51606321e94249b57c6f549f6e4bb420e7647ab68ca6a3c6e49d8c63
|
7
|
+
data.tar.gz: 5889f29c2788788120fd698ec004b847c5bafb7df0b22af36c9f1d2a78218c81e7fd136b359b586ed8f586e0a65eceb156721efcb95d95e3af7df34d0b174038
|
data/lib/rouge.rb
CHANGED
@@ -6,6 +6,10 @@ require 'pathname'
|
|
6
6
|
|
7
7
|
# The containing module for Rouge
|
8
8
|
module Rouge
|
9
|
+
# cache value in a constant since `__dir__` allocates a new string
|
10
|
+
# on every call.
|
11
|
+
LIB_DIR = __dir__.freeze
|
12
|
+
|
9
13
|
class << self
|
10
14
|
def reload!
|
11
15
|
Object.send :remove_const, :Rouge
|
@@ -31,62 +35,73 @@ module Rouge
|
|
31
35
|
|
32
36
|
formatter.format(lexer.lex(text), &b)
|
33
37
|
end
|
34
|
-
end
|
35
|
-
end
|
36
38
|
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
# Load a file relative to the `lib/rouge` path.
|
40
|
+
#
|
41
|
+
# @api private
|
42
|
+
def load_file(path)
|
43
|
+
load File.join(LIB_DIR, "rouge/#{path}.rb")
|
44
|
+
end
|
41
45
|
|
42
|
-
|
43
|
-
|
46
|
+
# Load the lexers in the `lib/rouge/lexers` directory.
|
47
|
+
#
|
48
|
+
# @api private
|
49
|
+
def load_lexers
|
50
|
+
# The trailing slash is necessary to avoid lexers being loaded multiple
|
51
|
+
# times by `Lexers.load_lexer`
|
52
|
+
lexer_dir = File.join(LIB_DIR, "rouge/lexers/")
|
53
|
+
Dir.glob(File.join(lexer_dir, '*.rb')).each do |f|
|
54
|
+
Lexers.load_lexer(f.sub(lexer_dir, ''))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
44
58
|
end
|
45
59
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
60
|
+
Rouge.load_file 'version'
|
61
|
+
Rouge.load_file 'util'
|
62
|
+
Rouge.load_file 'text_analyzer'
|
63
|
+
Rouge.load_file 'token'
|
50
64
|
|
51
|
-
|
52
|
-
|
53
|
-
|
65
|
+
Rouge.load_file 'lexer'
|
66
|
+
Rouge.load_file 'regex_lexer'
|
67
|
+
Rouge.load_file 'template_lexer'
|
54
68
|
|
55
|
-
|
69
|
+
Rouge.load_lexers
|
56
70
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
71
|
+
Rouge.load_file 'guesser'
|
72
|
+
Rouge.load_file 'guessers/util'
|
73
|
+
Rouge.load_file 'guessers/glob_mapping'
|
74
|
+
Rouge.load_file 'guessers/modeline'
|
75
|
+
Rouge.load_file 'guessers/filename'
|
76
|
+
Rouge.load_file 'guessers/mimetype'
|
77
|
+
Rouge.load_file 'guessers/source'
|
78
|
+
Rouge.load_file 'guessers/disambiguation'
|
65
79
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
80
|
+
Rouge.load_file 'formatter'
|
81
|
+
Rouge.load_file 'formatters/html'
|
82
|
+
Rouge.load_file 'formatters/html_table'
|
83
|
+
Rouge.load_file 'formatters/html_pygments'
|
84
|
+
Rouge.load_file 'formatters/html_legacy'
|
85
|
+
Rouge.load_file 'formatters/html_linewise'
|
86
|
+
Rouge.load_file 'formatters/html_line_table'
|
87
|
+
Rouge.load_file 'formatters/html_inline'
|
88
|
+
Rouge.load_file 'formatters/terminal256'
|
89
|
+
Rouge.load_file 'formatters/terminal_truecolor'
|
90
|
+
Rouge.load_file 'formatters/tex'
|
91
|
+
Rouge.load_file 'formatters/null'
|
77
92
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
+
Rouge.load_file 'theme'
|
94
|
+
Rouge.load_file 'tex_theme_renderer'
|
95
|
+
Rouge.load_file 'themes/thankful_eyes'
|
96
|
+
Rouge.load_file 'themes/colorful'
|
97
|
+
Rouge.load_file 'themes/base16'
|
98
|
+
Rouge.load_file 'themes/github'
|
99
|
+
Rouge.load_file 'themes/igor_pro'
|
100
|
+
Rouge.load_file 'themes/monokai'
|
101
|
+
Rouge.load_file 'themes/molokai'
|
102
|
+
Rouge.load_file 'themes/monokai_sublime'
|
103
|
+
Rouge.load_file 'themes/gruvbox'
|
104
|
+
Rouge.load_file 'themes/tulip'
|
105
|
+
Rouge.load_file 'themes/pastie'
|
106
|
+
Rouge.load_file 'themes/bw'
|
107
|
+
Rouge.load_file 'themes/magritte'
|
data/lib/rouge/cli.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
# not required by the main lib.
|
5
5
|
# to use this module, require 'rouge/cli'.
|
6
6
|
|
7
|
+
require 'rbconfig'
|
8
|
+
|
7
9
|
module Rouge
|
8
10
|
class FileReader
|
9
11
|
attr_reader :input
|
@@ -200,9 +202,22 @@ module Rouge
|
|
200
202
|
yield %[ delimiters. implies --escape]
|
201
203
|
end
|
202
204
|
|
205
|
+
# There is no consistent way to do this, but this is used elsewhere,
|
206
|
+
# and we provide explicit opt-in and opt-out with $COLORTERM
|
207
|
+
def self.supports_truecolor?
|
208
|
+
return true if %w(24bit truecolor).include?(ENV['COLORTERM'])
|
209
|
+
return false if ENV['COLORTERM'] && ENV['COLORTERM'] =~ /256/
|
210
|
+
|
211
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
212
|
+
ENV['ConEmuANSI'] == 'ON' && !ENV['ANSICON']
|
213
|
+
else
|
214
|
+
ENV['TERM'] !~ /(^rxvt)|(-color$)/
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
203
218
|
def self.parse(argv)
|
204
219
|
opts = {
|
205
|
-
:formatter => 'terminal256',
|
220
|
+
:formatter => supports_truecolor? ? 'terminal-truecolor' : 'terminal256',
|
206
221
|
:theme => 'thankful_eyes',
|
207
222
|
:css_class => 'codehilite',
|
208
223
|
:input_file => '-',
|
@@ -299,8 +314,10 @@ module Rouge
|
|
299
314
|
|
300
315
|
theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}"
|
301
316
|
|
317
|
+
# TODO: document this in --help
|
302
318
|
@formatter = case opts[:formatter]
|
303
319
|
when 'terminal256' then Formatters::Terminal256.new(theme)
|
320
|
+
when 'terminal-truecolor' then Formatters::TerminalTruecolor.new(theme)
|
304
321
|
when 'html' then Formatters::HTML.new
|
305
322
|
when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
|
306
323
|
when 'html-inline' then Formatters::HTMLInline.new(theme)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
Get_Variable("EUSER","ENV","USERNAME");
|
3
|
+
|
4
|
+
Message("Le Login Windows est : %EUSER%");
|
5
|
+
|
6
|
+
Get_Variable("st","JOB","FOLDER1.date_err.SYSTEM.STATUS");
|
7
|
+
|
8
|
+
|
9
|
+
AFFECT("filter1", '%%/"t"');
|
10
|
+
AFFECT("filter2", '%%/"pi"');
|
11
|
+
JSONTOSQL("%{jsonpath}%/file.json", "",
|
12
|
+
" JSONPATH like '%filter1%' ", "a = JSONVALUE",
|
13
|
+
" JSONPATH like '%filter2%' ", "b = JSONVALUE; output(json_data, a, b)");
|
14
|
+
|
15
|
+
|
16
|
+
Affect(VAR1,'%TEST%'); //Créer et affecter la variable VAR1 avec une chaîne
|
17
|
+
select * from TABLE1 where COL1 like %VAR1%; //utiliser la variable VAR1 dans une requête
|
18
|
+
|
19
|
+
select * from TEST_TABLE; //exécution d'une requête Select pour ramener des valeurs
|
20
|
+
Affect_LastColumns("TEST1"); //création du paramètre TEST1
|
21
|
+
|
data/lib/rouge/demos/ecl
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
/*
|
2
|
+
Example code - use without restriction.
|
3
|
+
*/
|
4
|
+
Layout_Person := RECORD
|
5
|
+
UNSIGNED1 PersonID;
|
6
|
+
STRING15 FirstName;
|
7
|
+
STRING25 LastName;
|
8
|
+
END;
|
9
|
+
|
10
|
+
allPeople := DATASET([ {1,'Fred','Smith'},
|
11
|
+
{2,'Joe','Blow'},
|
12
|
+
{3,'Jane','Smith'}],Layout_Person);
|
13
|
+
|
14
|
+
somePeople := allPeople(LastName = 'Smith');
|
15
|
+
|
16
|
+
// Outputs ---
|
17
|
+
somePeople;
|
18
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
include "MUMPS"
|
2
|
+
|
3
|
+
// Parameters
|
4
|
+
func f = 1.;
|
5
|
+
|
6
|
+
// Mesh
|
7
|
+
int nn = 25; //Mesh quality
|
8
|
+
mesh Th = square(nn, nn);
|
9
|
+
|
10
|
+
// Fespace
|
11
|
+
func Pk = P2;
|
12
|
+
fespace Uh(Th, Pk);
|
13
|
+
Uh u;
|
14
|
+
|
15
|
+
// Plot
|
16
|
+
plot(u, nbiso=30, fill=true, value=true, cmm="A");
|
@@ -0,0 +1,23 @@
|
|
1
|
+
[lvl_s4t3_entry() // [R1]
|
2
|
+
{ info_tbls: [(c4uB,
|
3
|
+
label: lvl_s4t3_info
|
4
|
+
rep: HeapRep 1 ptrs { Thunk }
|
5
|
+
srt: Nothing)]
|
6
|
+
stack_info: arg_space: 8 updfr_space: Just 8
|
7
|
+
}
|
8
|
+
{offset
|
9
|
+
c4uB: // global
|
10
|
+
if ((Sp + -32) < SpLim) (likely: False) goto c4uC; else goto c4uD;
|
11
|
+
c4uC: // global
|
12
|
+
R1 = R1;
|
13
|
+
call (stg_gc_enter_1)(R1) args: 8, res: 0, upd: 8;
|
14
|
+
c4uD: // global
|
15
|
+
I64[Sp - 16] = stg_upd_frame_info;
|
16
|
+
P64[Sp - 8] = R1;
|
17
|
+
R2 = P64[R1 + 16];
|
18
|
+
I64[Sp - 32] = stg_ap_p_info;
|
19
|
+
P64[Sp - 24] = Main.fib3_closure+1;
|
20
|
+
Sp = Sp - 32;
|
21
|
+
call GHC.Num.fromInteger_info(R2) args: 40, res: 0, upd: 24;
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Rec {
|
2
|
+
-- RHS size: {terms: 24, types: 3, coercions: 0, joins: 0/0}
|
3
|
+
Main.fib_fib [Occ=LoopBreaker] :: Integer -> Integer
|
4
|
+
[GblId, Arity=1, Str=<S,U>, Unf=OtherCon []]
|
5
|
+
Main.fib_fib
|
6
|
+
= \ (ds_d2OU :: Integer) ->
|
7
|
+
case integer-gmp-1.0.2.0:GHC.Integer.Type.eqInteger#
|
8
|
+
ds_d2OU Main.fib1
|
9
|
+
of {
|
10
|
+
__DEFAULT ->
|
11
|
+
case integer-gmp-1.0.2.0:GHC.Integer.Type.eqInteger#
|
12
|
+
ds_d2OU Main.fib3
|
13
|
+
of {
|
14
|
+
__DEFAULT ->
|
15
|
+
integer-gmp-1.0.2.0:GHC.Integer.Type.plusInteger
|
16
|
+
(Main.fib_fib
|
17
|
+
(integer-gmp-1.0.2.0:GHC.Integer.Type.minusInteger
|
18
|
+
ds_d2OU Main.fib3))
|
19
|
+
(Main.fib_fib
|
20
|
+
(integer-gmp-1.0.2.0:GHC.Integer.Type.minusInteger
|
21
|
+
ds_d2OU Main.fib2));
|
22
|
+
1# -> Main.fib3
|
23
|
+
};
|
24
|
+
1# -> Main.fib1
|
25
|
+
}
|
26
|
+
end Rec }
|
data/lib/rouge/demos/nasm
CHANGED
@@ -10,12 +10,12 @@
|
|
10
10
|
extern irq_handler
|
11
11
|
|
12
12
|
irq_common_stub:
|
13
|
-
pusha
|
14
|
-
mov
|
15
|
-
push
|
16
|
-
mov
|
17
|
-
mov
|
18
|
-
call
|
13
|
+
pusha ; push all general-purpose registers
|
14
|
+
mov ax, ds ; lower 16-bits of eax = ds
|
15
|
+
push eax ; save the data segment descriptor
|
16
|
+
mov ax, 0x10 ; load the kernel data segment descriptor
|
17
|
+
mov edx, eax
|
18
|
+
call irq_handler
|
19
19
|
|
20
20
|
%assign i 0
|
21
21
|
%rep 8
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.bank 0
|
2
|
+
.org $C000
|
3
|
+
Reset:
|
4
|
+
jsr WaitSync ; wait for VSYNC
|
5
|
+
jsr ClearRAM ; clear RAM
|
6
|
+
jsr WaitSync ; wait for VSYNC (and PPU warmup)
|
7
|
+
|
8
|
+
lda #$3f ; $3F -> A register
|
9
|
+
ldy #$00 ; $00 -> Y register
|
10
|
+
sta PPU_ADDR ; write #HIGH byte first
|
11
|
+
sty PPU_ADDR ; $3F00 -> PPU address
|
@@ -0,0 +1,17 @@
|
|
1
|
+
@import Foundation;
|
2
|
+
#import <array>
|
3
|
+
#include <vector>
|
4
|
+
|
5
|
+
@interface IntegerArray : NSObject {
|
6
|
+
std::vector<NSUInteger> _numbers;
|
7
|
+
}
|
8
|
+
@property(readonly) NSUInteger count;
|
9
|
+
|
10
|
+
- (instancetype)initWithNumbers:(NSUInteger *)numbers count:(NSUInteger)count;
|
11
|
+
- (NSUInteger)numberAtIndex:(NSUInteger)index;
|
12
|
+
@end
|
13
|
+
|
14
|
+
int main(int argc, char **argv) {
|
15
|
+
auto numbers = std::array<NSUInteger, 3>{1, 2, 3};
|
16
|
+
NSLog(@"%@", [[IntegerArray alloc] initWithNumbers:numbers.data() count:numbers.size()]);
|
17
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
pragma solidity ~0.4.15;
|
2
|
+
|
3
|
+
interface IMirror {
|
4
|
+
function reflect() external payable returns(bool /* ain't I pretty?.. */);
|
5
|
+
}
|
6
|
+
|
7
|
+
contract Mirror is IMirror {
|
8
|
+
event logMessage(address indexed sender, uint256 value, uint256 gas, bytes data);
|
9
|
+
|
10
|
+
function () { // no funny stuff
|
11
|
+
revert();
|
12
|
+
}
|
13
|
+
}
|
data/lib/rouge/demos/vcl
ADDED
@@ -24,10 +24,7 @@ module Rouge
|
|
24
24
|
|
25
25
|
def stream(tokens, &b)
|
26
26
|
tokens.each do |tok, val|
|
27
|
-
|
28
|
-
yield escape.style_string
|
29
|
-
yield val.gsub("\n", "#{escape.reset_string}\n#{escape.style_string}")
|
30
|
-
yield escape.reset_string
|
27
|
+
escape_sequence(tok).stream_value(val, &b)
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|
@@ -85,6 +82,14 @@ module Rouge
|
|
85
82
|
@bg = style.bg && self.class.color_index(style.bg)
|
86
83
|
end
|
87
84
|
|
85
|
+
|
86
|
+
def stream_value(val, &b)
|
87
|
+
yield style_string
|
88
|
+
yield val.gsub("\e", "\\e")
|
89
|
+
.gsub("\n", "#{reset_string}\n#{style_string}")
|
90
|
+
yield reset_string
|
91
|
+
end
|
92
|
+
|
88
93
|
def style_string
|
89
94
|
@style_string ||= begin
|
90
95
|
attrs = []
|
@@ -157,12 +162,23 @@ module Rouge
|
|
157
162
|
end
|
158
163
|
end
|
159
164
|
|
165
|
+
class Unescape < EscapeSequence
|
166
|
+
def initialize(*) end
|
167
|
+
def style_string(*) '' end
|
168
|
+
def reset_string(*) '' end
|
169
|
+
def stream_value(val) yield val end
|
170
|
+
end
|
171
|
+
|
160
172
|
# private
|
161
173
|
def escape_sequence(token)
|
162
|
-
return
|
174
|
+
return Unescape.new if escape?(token)
|
163
175
|
@escape_sequences ||= {}
|
164
176
|
@escape_sequences[token.qualname] ||=
|
165
|
-
|
177
|
+
make_escape_sequence(get_style(token))
|
178
|
+
end
|
179
|
+
|
180
|
+
def make_escape_sequence(style)
|
181
|
+
EscapeSequence.new(style)
|
166
182
|
end
|
167
183
|
|
168
184
|
def get_style(token)
|