rouge 3.15.0 → 3.20.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/bin/rougify +2 -2
- data/lib/rouge.rb +67 -52
- data/lib/rouge/cli.rb +18 -1
- data/lib/rouge/demos/augeas +16 -0
- data/lib/rouge/demos/bibtex +12 -0
- 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/ghc-cmm +23 -0
- data/lib/rouge/demos/hlsl +20 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/livescript +15 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/velocity +9 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/demos/zig +6 -0
- data/lib/rouge/formatters/terminal256.rb +22 -6
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/lexer.rb +4 -2
- data/lib/rouge/lexers/apache.rb +22 -12
- data/lib/rouge/lexers/apache/keywords.rb +24 -0
- data/lib/rouge/lexers/augeas.rb +93 -0
- data/lib/rouge/lexers/bibtex.rb +115 -0
- data/lib/rouge/lexers/cmake.rb +1 -0
- data/lib/rouge/lexers/coffeescript.rb +47 -15
- data/lib/rouge/lexers/console.rb +53 -37
- data/lib/rouge/lexers/cpp.rb +18 -5
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/d.rb +3 -3
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +1 -1
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/fsharp.rb +1 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/gherkin.rb +1 -1
- data/lib/rouge/lexers/gherkin/keywords.rb +9 -6
- data/lib/rouge/lexers/haskell.rb +27 -19
- data/lib/rouge/lexers/hlsl.rb +166 -0
- data/lib/rouge/lexers/html.rb +1 -1
- 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/javascript.rb +1 -3
- data/lib/rouge/lexers/json.rb +3 -0
- data/lib/rouge/lexers/json_doc.rb +1 -0
- data/lib/rouge/lexers/jsx.rb +47 -59
- data/lib/rouge/lexers/kotlin.rb +14 -2
- data/lib/rouge/lexers/lasso.rb +11 -12
- data/lib/rouge/lexers/lasso/keywords.rb +20 -0
- data/lib/rouge/lexers/livescript.rb +310 -0
- data/lib/rouge/lexers/llvm.rb +6 -33
- data/lib/rouge/lexers/llvm/keywords.rb +25 -0
- data/lib/rouge/lexers/lua.rb +41 -3
- data/lib/rouge/lexers/lua/keywords.rb +28 -0
- data/lib/rouge/lexers/markdown.rb +9 -5
- data/lib/rouge/lexers/mathematica.rb +2 -2
- data/lib/rouge/lexers/mathematica/keywords.rb +17 -0
- data/lib/rouge/lexers/matlab.rb +3 -4
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/matlab/keywords.rb +15 -0
- data/lib/rouge/lexers/nasm.rb +42 -168
- data/lib/rouge/lexers/objective_c/common.rb +2 -2
- data/lib/rouge/lexers/opentype_feature_file.rb +27 -42
- data/lib/rouge/lexers/pascal.rb +1 -1
- data/lib/rouge/lexers/php.rb +48 -33
- data/lib/rouge/lexers/php/keywords.rb +202 -0
- data/lib/rouge/lexers/powershell.rb +7 -2
- data/lib/rouge/lexers/python.rb +58 -57
- 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 +2 -10
- data/lib/rouge/lexers/scala.rb +1 -1
- data/lib/rouge/lexers/shell.rb +1 -1
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +5 -4
- data/lib/rouge/lexers/sqf.rb +2 -2
- data/lib/rouge/lexers/sqf/keywords.rb +12 -0
- data/lib/rouge/lexers/terraform.rb +15 -0
- data/lib/rouge/lexers/toml.rb +23 -0
- data/lib/rouge/lexers/tsx.rb +10 -3
- data/lib/rouge/lexers/turtle.rb +1 -1
- data/lib/rouge/lexers/typescript.rb +1 -1
- data/lib/rouge/lexers/typescript/common.rb +18 -4
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/velocity.rb +71 -0
- data/lib/rouge/lexers/viml.rb +6 -38
- data/lib/rouge/lexers/viml/keywords.rb +11 -4
- data/lib/rouge/lexers/vue.rb +4 -1
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/lexers/zig.rb +139 -0
- data/lib/rouge/version.rb +1 -1
- metadata +43 -9
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
- data/lib/rouge/lexers/lua/builtins.rb +0 -24
- data/lib/rouge/lexers/mathematica/builtins.rb +0 -13
- data/lib/rouge/lexers/matlab/builtins.yml +0 -3515
- data/lib/rouge/lexers/php/builtins.rb +0 -203
- data/lib/rouge/lexers/sqf/commands.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a0ad085dddf353cc95e795e5f556b4f2d9821068cceeeaab4cb34cb11f3ad776
|
|
4
|
+
data.tar.gz: f70271022198b1d7e95df35d856274234720d54d4ef3f1a42c782246e2cf4c47
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 473cfdc4ce0c458d0a7b0c3b1e6684723ceb7c15dea4d1080baf201786ecd149e9d21cd25f65735edbbf4b4f763a5d7d1854a4d909bef6902b7d609d30ebcc2b
|
|
7
|
+
data.tar.gz: 579d31241b2fe8d4f2b9471dd6bb97b5621051811260d02b21a012e9e35ccf34d83e0e998981e959aa0ce6a1b00932c06f7ed8b8b093fde95d53c7a8ebbb67ce
|
data/bin/rougify
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
require 'pathname'
|
|
5
5
|
ROOT_DIR = Pathname.new(__FILE__).dirname.parent
|
|
6
|
-
load ROOT_DIR.join('lib/rouge.rb')
|
|
7
|
-
load ROOT_DIR.join('lib/rouge/cli.rb')
|
|
6
|
+
Kernel::load ROOT_DIR.join('lib/rouge.rb')
|
|
7
|
+
Kernel::load ROOT_DIR.join('lib/rouge/cli.rb')
|
|
8
8
|
Signal.trap('PIPE', 'SYSTEM_DEFAULT') if Signal.list.include? 'PIPE'
|
|
9
9
|
|
|
10
10
|
begin
|
data/lib/rouge.rb
CHANGED
|
@@ -6,10 +6,14 @@ 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
|
-
Object
|
|
12
|
-
load __FILE__
|
|
15
|
+
Object::send :remove_const, :Rouge
|
|
16
|
+
Kernel::load __FILE__
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
# Highlight some text with a given lexer and formatter.
|
|
@@ -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
|
+
Kernel::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,16 @@
|
|
|
1
|
+
(*
|
|
2
|
+
This is a comment
|
|
3
|
+
*)
|
|
4
|
+
module Foo =
|
|
5
|
+
autoload xfm
|
|
6
|
+
|
|
7
|
+
let a = b | c . d
|
|
8
|
+
|
|
9
|
+
let lns = a*
|
|
10
|
+
|
|
11
|
+
let filter = incl "/path/to/file"
|
|
12
|
+
. incl "/path/to/other_file"
|
|
13
|
+
. Util.stdexcl
|
|
14
|
+
|
|
15
|
+
(* xmf is the transform *)
|
|
16
|
+
let xmf = transform lns filter
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@article{Witten:1988hf,
|
|
2
|
+
author = "Witten, Edward",
|
|
3
|
+
title = "{Quantum Field Theory and the Jones Polynomial}",
|
|
4
|
+
journal = "Commun. Math. Phys.",
|
|
5
|
+
volume = "121",
|
|
6
|
+
year = "1989",
|
|
7
|
+
pages = "351-399",
|
|
8
|
+
doi = "10.1007/BF01217730",
|
|
9
|
+
note = "[,233(1988)]",
|
|
10
|
+
reportNumber = "IASSNS-HEP-88-33",
|
|
11
|
+
SLACcitation = "%%CITATION = CMPHA,121,351;%%"
|
|
12
|
+
}
|
|
@@ -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,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,20 @@
|
|
|
1
|
+
struct PSInput
|
|
2
|
+
{
|
|
3
|
+
float4 position : SV_POSITION;
|
|
4
|
+
float4 color : COLOR;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// Vertex shader
|
|
8
|
+
PSInput VSMain(float4 position : POSITION, float4 color : COLOR)
|
|
9
|
+
{
|
|
10
|
+
PSInput result;
|
|
11
|
+
result.position = position;
|
|
12
|
+
result.color = color;
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Pixel shader
|
|
17
|
+
float4 PSMain(PSInput input) : SV_TARGET
|
|
18
|
+
{
|
|
19
|
+
return input.color;
|
|
20
|
+
}
|
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,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