livetext 0.9.20 → 0.9.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.lt3 +2 -0
- data/README.md +330 -339
- data/bin/livetext +0 -2
- data/imports/markdown.rb +6 -6
- data/imports/markdown_importable.rb +33 -34
- data/imports/tutorial.rb +1 -1
- data/lib/cmdargs.rb +26 -17
- data/lib/formatline.rb +4 -4
- data/lib/helpers.rb +30 -4
- data/lib/livetext.rb +1 -1
- data/lib/parser/general.rb +1 -1
- data/lib/parser/set.rb +2 -2
- data/lib/parser/string.rb +9 -8
- data/lib/processor.rb +19 -11
- data/lib/standard.rb +1 -1
- data/lib/userapi.rb +2 -2
- data/plugin/markdown.rb +6 -6
- data/plugin/tutorial.rb +4 -3
- data/test/snapshots/subset.txt +84 -0
- data/test/snapshots.rb +25 -38
- data/test/unit/parser/set.rb +17 -15
- data/test/unit/parser/string.rb +45 -6
- metadata +2 -11
- data/test/affirm/kbks.jpg +0 -0
- data/test/affirm/lm-kbks.lt +0 -19
- data/test/cleanup +0 -1
- data/test/newtest +0 -14
- data/test/sdtest +0 -6
- data/test/snapshots/OMIT.txt +0 -11
- data/test/snapshots/clusion.txt +0 -84
- data/test/snapshots/crap +0 -16
- data/test/snapshots/fixit +0 -6
data/test/snapshots.rb
CHANGED
@@ -65,15 +65,17 @@ class TestingLivetext < MiniTest::Test
|
|
65
65
|
TestDirs = Dir.entries(".").reject {|fname| ! File.directory?(fname) } - %w[. ..]
|
66
66
|
|
67
67
|
|
68
|
-
def self.filter
|
69
|
-
|
70
|
-
|
71
|
-
|
68
|
+
def self.filter
|
69
|
+
all = Dir.entries(".").reject {|fname| ! File.directory?(fname) } - %w[. ..]
|
70
|
+
@included, @excluded = all, []
|
71
|
+
@reasons = []
|
72
72
|
@iflag, @eflag = true, false # defaults to INCLUDE
|
73
|
-
control = File.new("
|
74
|
-
control.each_line do |
|
73
|
+
control = File.new("subset.txt")
|
74
|
+
control.each_line do |raw_line|
|
75
|
+
line = raw_line.dup
|
75
76
|
line.sub!(/#.*/, "")
|
76
77
|
line.strip!
|
78
|
+
line.chomp!
|
77
79
|
lower = line.downcase
|
78
80
|
dejavu = false
|
79
81
|
case
|
@@ -85,28 +87,32 @@ puts "Data = #{Data}"
|
|
85
87
|
dejavu = true
|
86
88
|
when lower == "default exclude all"
|
87
89
|
raise "Only one 'default' allowed" if dejavu
|
90
|
+
@included = []
|
88
91
|
@iflag, @eflag = false, true
|
89
92
|
dejavu = true
|
90
93
|
when lower == "quit"
|
91
94
|
break
|
92
|
-
when lower[0] == "i"
|
95
|
+
when lower[0] == "i" && lower[1] == " "
|
93
96
|
TTY.puts "Warning: Can't include with 'i' when that is default" if @iflag
|
94
|
-
|
95
|
-
|
97
|
+
val = raw_line.split(" ", 2)[1]
|
98
|
+
@included << val unless val.nil? # add to @included
|
99
|
+
when lower[0] == "x" && lower[1] == " "
|
96
100
|
TTY.puts "Warning: Can't exclude with 'x' when that is default" if @eflag
|
97
|
-
|
98
|
-
# add to excluded
|
101
|
+
val, why = raw_line.split(" ", 3).values_at(1, 2)
|
102
|
+
@excluded << val unless val.nil? # add to @excluded
|
103
|
+
@reasons << why.chomp
|
99
104
|
end
|
100
|
-
[included, excluded]
|
101
105
|
end
|
106
|
+
unless @excluded.empty?
|
107
|
+
puts "\nExcluded:\n "
|
108
|
+
@excluded.each.with_index do |name, num|
|
109
|
+
printf " %-20s %s\n", name, @reasons[num]
|
110
|
+
end
|
111
|
+
puts
|
112
|
+
end
|
113
|
+
@included - @excluded
|
102
114
|
end
|
103
115
|
|
104
|
-
i, e = self.filter
|
105
|
-
p i
|
106
|
-
p e
|
107
|
-
|
108
|
-
exit
|
109
|
-
|
110
116
|
def initialize(base, assertion = nil)
|
111
117
|
@assertion = assertion
|
112
118
|
@base = base
|
@@ -185,26 +191,7 @@ puts "Data = #{Data}"
|
|
185
191
|
end
|
186
192
|
end
|
187
193
|
|
188
|
-
|
189
|
-
selected = File.readlines("subset.txt").map(&:chomp)
|
190
|
-
omitfile = "OMIT.txt"
|
191
|
-
omitted = File.readlines(omitfile).map(&:chomp)
|
192
|
-
omitted.reject! {|line| line.start_with?("#") }
|
193
|
-
omit_names = omitted.map {|line| line.split.first }
|
194
|
-
STDERR.puts
|
195
|
-
STDERR.puts " >>> Warning: Omitting #{omitted.size} snapshot tests:\n "
|
196
|
-
indented = " "*7
|
197
|
-
omitted.each do |line|
|
198
|
-
STDERR.print indented
|
199
|
-
name, info = line.split(" ", 2)
|
200
|
-
STDERR.printf "%-20s %s\n", name, info
|
201
|
-
end
|
202
|
-
STDERR.puts
|
203
|
-
wanted = selected.empty? ? TestDirs : selected
|
204
|
-
Subset = wanted - omit_names
|
205
|
-
else
|
206
|
-
Subset = args
|
207
|
-
end
|
194
|
+
Subset = Snapshot.filter
|
208
195
|
|
209
196
|
Subset.each do |tdir|
|
210
197
|
define_method("test_#{tdir}") do
|
data/test/unit/parser/set.rb
CHANGED
@@ -13,7 +13,7 @@ class TestParseSet < MiniTest::Test
|
|
13
13
|
def teardown
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def test_one_unquoted
|
17
17
|
set = ParseSet.new('my_var_123 = 789').parse
|
18
18
|
pair = set.first
|
19
19
|
assert_equal pair, %w[my_var_123 789]
|
@@ -23,38 +23,37 @@ class TestParseSet < MiniTest::Test
|
|
23
23
|
assert_equal pair, %w[var_234 naked_string]
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def test_one_single_quoted
|
27
27
|
set = ParseSet.new("fancy.var.name = 'simple string'").parse
|
28
28
|
pair = set.first
|
29
29
|
assert_equal pair, ["fancy.var.name", "simple string"]
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def test_one_double_quoted
|
33
33
|
set = ParseSet.new('fancy.var2 = "another string"').parse
|
34
34
|
pair = set.first
|
35
35
|
assert_equal pair, ["fancy.var2", "another string"]
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
puts __method__
|
38
|
+
def test_multiple_unquoted
|
40
39
|
pair1, pair2 = ParseSet.new("this=345, that=678").parse
|
41
40
|
assert_equal pair1, %w[this 345]
|
42
41
|
assert_equal pair2, %w[that 678]
|
43
42
|
end
|
44
43
|
|
45
|
-
def
|
44
|
+
def test_multiple_unquoted_quoted
|
46
45
|
pair1, pair2 = ParseSet.new('alpha = 567, beta = "oh well"').parse
|
47
46
|
assert_equal pair1, %w[alpha 567]
|
48
47
|
assert_equal pair2, ["beta", "oh well"]
|
49
48
|
end
|
50
49
|
|
51
|
-
def
|
50
|
+
def test_quote_embedded_comma
|
52
51
|
set = ParseSet.new('gamma = "oh, well"').parse
|
53
52
|
pair = set.first
|
54
53
|
assert_equal pair, ["gamma", "oh, well"]
|
55
54
|
end
|
56
55
|
|
57
|
-
def
|
56
|
+
def test_get_var
|
58
57
|
@parse = ParseSet.new("foo=345")
|
59
58
|
assert_equal @parse.get_var, "foo"
|
60
59
|
@parse = ParseSet.new("foo = 345")
|
@@ -79,7 +78,7 @@ puts __method__
|
|
79
78
|
assert_raises(BadVariableName) { @parse.get_var }
|
80
79
|
end
|
81
80
|
|
82
|
-
def
|
81
|
+
def test_skip_equal
|
83
82
|
@parse = ParseSet.new("=")
|
84
83
|
assert_nil @parse.skip_equal
|
85
84
|
@parse = ParseSet.new(" = ")
|
@@ -97,7 +96,7 @@ puts __method__
|
|
97
96
|
assert_raises(NoEqualSign) { @parse.skip_equal }
|
98
97
|
end
|
99
98
|
|
100
|
-
def
|
99
|
+
def test_quoted_value
|
101
100
|
@parse = ParseSet.new(%['this'])
|
102
101
|
assert_equal @parse.quoted_value, "this"
|
103
102
|
@parse = ParseSet.new(%["that"])
|
@@ -119,7 +118,7 @@ puts __method__
|
|
119
118
|
# - allow (escaped?) comma in quoted string
|
120
119
|
end
|
121
120
|
|
122
|
-
def
|
121
|
+
def test_unquoted_value
|
123
122
|
# Note: an unquoted value is still a string!
|
124
123
|
@parse = ParseSet.new(%[342 ])
|
125
124
|
assert_equal @parse.unquoted_value, "342"
|
@@ -140,19 +139,22 @@ puts __method__
|
|
140
139
|
|
141
140
|
# BUG: FormatLine doesn't know variables in this context!
|
142
141
|
|
143
|
-
def
|
142
|
+
def test_var_eq_var
|
144
143
|
set = ParseSet.new("file = $File").parse
|
144
|
+
set = set.first # [["var", "value"]]
|
145
145
|
assert_equal set.first, "file"
|
146
|
-
|
146
|
+
refute set.last =~ /undefined/, "Found 'undefined' for variable value"
|
147
147
|
end
|
148
148
|
|
149
149
|
# BUG: ...or functions.
|
150
150
|
# (Additional bug: Failing silently seems wrong.)
|
151
151
|
|
152
|
-
def
|
152
|
+
def test_var_eq_func
|
153
153
|
set = ParseSet.new("date = $$date").parse
|
154
|
+
set = set.first # [["var", "value"]]
|
154
155
|
assert_equal set.first, "date"
|
155
|
-
|
156
|
+
refute set.last =~ /undefined/, "Found 'undefined' for variable value"
|
157
|
+
assert set.last =~ /^\d\d.\d\d.\d\d/, "Did not find 6-digit date with two separators"
|
156
158
|
end
|
157
159
|
|
158
160
|
def test_two_strings
|
data/test/unit/parser/string.rb
CHANGED
@@ -58,7 +58,7 @@ class TestStringParser < MiniTest::Test
|
|
58
58
|
assert @zero.eos?
|
59
59
|
|
60
60
|
@one.grab
|
61
|
-
assert @one.eos?
|
61
|
+
assert @one.eos? # FIXME??
|
62
62
|
@one.grab
|
63
63
|
assert @one.eos?
|
64
64
|
|
@@ -81,19 +81,15 @@ class TestStringParser < MiniTest::Test
|
|
81
81
|
assert_nil char1
|
82
82
|
assert_nil char2
|
83
83
|
assert @zero.i == 0
|
84
|
-
assert @zero.last?
|
85
84
|
assert @zero.eos?
|
86
85
|
|
87
|
-
refute @one.last? # FIXME??
|
88
86
|
char1 = @one.peek
|
89
|
-
refute @one.last? # FIXME??
|
90
87
|
char2 = @one.grab
|
91
88
|
char3 = @one.peek
|
92
89
|
assert char1
|
93
90
|
assert char2 == char1
|
94
91
|
assert char3 == @str1[1]
|
95
92
|
assert @one.i == 1
|
96
|
-
assert @one.last?
|
97
93
|
assert @one.eos? # FIXME??
|
98
94
|
|
99
95
|
char1 = @many.peek
|
@@ -103,7 +99,6 @@ class TestStringParser < MiniTest::Test
|
|
103
99
|
assert char2 == char1
|
104
100
|
assert char3 == @strN[1]
|
105
101
|
assert @many.i == 1
|
106
|
-
refute @many.last?
|
107
102
|
refute @many.eos?
|
108
103
|
end
|
109
104
|
|
@@ -126,5 +121,49 @@ class TestStringParser < MiniTest::Test
|
|
126
121
|
refute some.peek == " "
|
127
122
|
assert_equal some.peek, "x"
|
128
123
|
assert_equal some.i, 3
|
124
|
+
|
125
|
+
some = StringParser.new("abc 123")
|
126
|
+
3.times { some.grab }
|
127
|
+
assert_equal some.peek, " "
|
128
|
+
some.skip_spaces
|
129
|
+
refute some.peek == " "
|
130
|
+
assert_equal some.peek, "1"
|
131
|
+
assert_equal some.i, 6
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_ungrab
|
135
|
+
parse = StringParser.new("abcdef")
|
136
|
+
assert_equal parse.i, 0
|
137
|
+
assert_equal parse.peek, "a"
|
138
|
+
3.times { parse.grab }
|
139
|
+
assert_equal parse.i, 3
|
140
|
+
assert_equal parse.peek, "d"
|
141
|
+
parse.ungrab
|
142
|
+
assert_equal parse.i, 2
|
143
|
+
assert_equal parse.peek, "c"
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_next_bang
|
147
|
+
parse = StringParser.new("abcdef")
|
148
|
+
assert_equal parse.peek, "a"
|
149
|
+
assert_equal parse.next!, "b"
|
150
|
+
assert_equal parse.i, 0
|
151
|
+
3.times { parse.grab }
|
152
|
+
before = parse.i
|
153
|
+
assert_equal parse.next!, "e"
|
154
|
+
after = parse.i
|
155
|
+
assert_equal before, after
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_prev
|
159
|
+
parse = StringParser.new("abcdef")
|
160
|
+
assert_nil parse.prev
|
161
|
+
assert_equal parse.i, 0
|
162
|
+
3.times { parse.grab }
|
163
|
+
before = parse.i
|
164
|
+
assert_equal parse.prev, "c"
|
165
|
+
after = parse.i
|
166
|
+
assert_equal before, after
|
129
167
|
end
|
168
|
+
|
130
169
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: livetext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|
@@ -54,21 +54,14 @@ files:
|
|
54
54
|
- plugin/markdown.rb
|
55
55
|
- plugin/pyggish.rb
|
56
56
|
- plugin/tutorial.rb
|
57
|
-
- test/affirm/kbks.jpg
|
58
|
-
- test/affirm/lm-kbks.lt
|
59
57
|
- test/all.rb
|
60
|
-
- test/cleanup
|
61
|
-
- test/newtest
|
62
|
-
- test/sdtest
|
63
58
|
- test/snapshots.rb
|
64
|
-
- test/snapshots/OMIT.txt
|
65
59
|
- test/snapshots/basic_formatting/expected-error.txt
|
66
60
|
- test/snapshots/basic_formatting/expected-output.txt
|
67
61
|
- test/snapshots/basic_formatting/source.lt3
|
68
62
|
- test/snapshots/block_comment/expected-error.txt
|
69
63
|
- test/snapshots/block_comment/expected-output.txt
|
70
64
|
- test/snapshots/block_comment/source.lt3
|
71
|
-
- test/snapshots/clusion.txt
|
72
65
|
- test/snapshots/comments_ignored_1/expected-error.txt
|
73
66
|
- test/snapshots/comments_ignored_1/expected-output.txt
|
74
67
|
- test/snapshots/comments_ignored_1/source.lt3
|
@@ -76,7 +69,6 @@ files:
|
|
76
69
|
- test/snapshots/copy_is_raw/expected-output.txt
|
77
70
|
- test/snapshots/copy_is_raw/rawtext.inc
|
78
71
|
- test/snapshots/copy_is_raw/source.lt3
|
79
|
-
- test/snapshots/crap
|
80
72
|
- test/snapshots/def_method/expected-error.txt
|
81
73
|
- test/snapshots/def_method/expected-output.txt
|
82
74
|
- test/snapshots/def_method/source.lt3
|
@@ -114,7 +106,6 @@ files:
|
|
114
106
|
- test/snapshots/example_alpha2/expected-error.txt
|
115
107
|
- test/snapshots/example_alpha2/expected-output.txt
|
116
108
|
- test/snapshots/example_alpha2/source.lt3
|
117
|
-
- test/snapshots/fixit
|
118
109
|
- test/snapshots/functions/expected-error.txt
|
119
110
|
- test/snapshots/functions/expected-output.txt
|
120
111
|
- test/snapshots/functions/source.lt3
|
data/test/affirm/kbks.jpg
DELETED
Binary file
|
data/test/affirm/lm-kbks.lt
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
.mixin livemagick
|
2
|
-
|
3
|
-
.nopass
|
4
|
-
|
5
|
-
.image 300 100 lightgray
|
6
|
-
.canvas green 1 0
|
7
|
-
.pen red red
|
8
|
-
.font 80 Arial
|
9
|
-
|
10
|
-
.rectangle 100,50 300x300 green 9
|
11
|
-
|
12
|
-
.text! 100,50 100x100
|
13
|
-
K B K Z
|
14
|
-
.end
|
15
|
-
.draw
|
16
|
-
.save! myfile.jpg
|
17
|
-
|
18
|
-
.def foobar
|
19
|
-
|
data/test/cleanup
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
find testfiles -name actual-*.txt | xargs rm
|
data/test/newtest
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
mkdir test/data/$1
|
2
|
-
|
3
|
-
# actual-error.txt actual-output.txt expected-error.txt expected-output.txt source.lt3
|
4
|
-
|
5
|
-
cd test/data/$1
|
6
|
-
|
7
|
-
touch expected-output.txt expected-error.txt
|
8
|
-
|
9
|
-
vi source.lt3
|
10
|
-
|
11
|
-
livetext source.lt3 >expected-output.txt 2>expected-error.txt
|
12
|
-
|
13
|
-
vi -O source.lt3 expected-output.txt expected-error.txt
|
14
|
-
|
data/test/sdtest
DELETED
data/test/snapshots/OMIT.txt
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# Comments are ignored.
|
2
|
-
# Other lines: name_of_snapshot and any comments here are ignored (no # needed)
|
3
|
-
# fake_test_name Use # to un-omit ;)
|
4
|
-
error_no_such_inc Output BEFORE error doesn't get passed through
|
5
|
-
error_no_such_copy ^ Same behavior as error_no_such_inc
|
6
|
-
error_no_such_mixin ^ Same behavior as error_missing_end
|
7
|
-
error_invalid_name ^ Same behavior as error_no_such_inc
|
8
|
-
error_missing_end Output is duplicated somehow. Look for: puts @body or puts @main.body
|
9
|
-
error_inc_line_num Forgot what's wrong here
|
10
|
-
simple_import Not coded yet
|
11
|
-
icanhaz Dummy command similar to import/mixin
|
data/test/snapshots/clusion.txt
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
# This file specifies which snapshots will/won't be run.
|
2
|
-
|
3
|
-
# Blank lines and comments are ignored.
|
4
|
-
# Other lines: name_of_snapshot and any comments here are ignored (no # needed)
|
5
|
-
|
6
|
-
# You can start by uncommenting one of these:
|
7
|
-
# Default INCLUDE all
|
8
|
-
# Default EXCLUDE all
|
9
|
-
# If you use neither, INCLUDE is the default (but explicit is better)
|
10
|
-
|
11
|
-
# If you include all, you can specify exclusions with an x:
|
12
|
-
# x my_test_name # this is a comment
|
13
|
-
|
14
|
-
# Likewise if you EXCLUDE all, you can specify inclusions with an i:
|
15
|
-
# i some_other_test # this is a comment
|
16
|
-
|
17
|
-
# The i and x (to include/exclude) must be the first token on
|
18
|
-
# the line (preceding the test name)
|
19
|
-
|
20
|
-
# Note that QUIT (on a line by itself) will stop processing the file
|
21
|
-
|
22
|
-
x error_no_such_inc # Output BEFORE error doesn't get passed through ("leading" output)
|
23
|
-
x error_no_such_copy # ^ Same behavior as error_no_such_inc
|
24
|
-
x error_no_such_mixin # ^ Same behavior as error_missing_end
|
25
|
-
x error_invalid_name # ^ Same behavior as error_no_such_inc
|
26
|
-
x error_missing_end # Output is duplicated somehow. Look for: puts @body or puts @main.body
|
27
|
-
x error_inc_line_num # Forgot what's wrong here
|
28
|
-
|
29
|
-
# Dummy command .icanhaz works like .mixin or .import
|
30
|
-
|
31
|
-
x icanhaz # "Leading" output doesn't get generated (same as error_no_such_inc)
|
32
|
-
icanhaz2
|
33
|
-
|
34
|
-
# Others (usually passing):
|
35
|
-
|
36
|
-
# import/include/mixin, others...
|
37
|
-
|
38
|
-
simple_copy #
|
39
|
-
simple_import #
|
40
|
-
simple_include #
|
41
|
-
simple_mixin #
|
42
|
-
|
43
|
-
# raw input
|
44
|
-
|
45
|
-
single_raw_line #
|
46
|
-
raw_lines #
|
47
|
-
raw_text_block #
|
48
|
-
copy_is_raw #
|
49
|
-
|
50
|
-
# comments
|
51
|
-
|
52
|
-
block_comment #
|
53
|
-
comments_ignored_1 #
|
54
|
-
|
55
|
-
# variables and heredocs
|
56
|
-
|
57
|
-
predef_vars #
|
58
|
-
simple_vars #
|
59
|
-
more_complex_vars #
|
60
|
-
table_with_heredocs #
|
61
|
-
|
62
|
-
# testing def
|
63
|
-
|
64
|
-
def_method #
|
65
|
-
|
66
|
-
# intraline formatting
|
67
|
-
|
68
|
-
basic_formatting #
|
69
|
-
|
70
|
-
# Errors
|
71
|
-
|
72
|
-
error_line_num #
|
73
|
-
error_mismatched_end #
|
74
|
-
error_name_not_permitted #
|
75
|
-
|
76
|
-
# functions
|
77
|
-
|
78
|
-
functions #
|
79
|
-
|
80
|
-
# More/misc...
|
81
|
-
|
82
|
-
example_alpha #
|
83
|
-
example_alpha2 #
|
84
|
-
hello_world #
|
data/test/snapshots/crap
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
./fixit block_comment
|
2
|
-
./fixit comments_ignored_1
|
3
|
-
./fixit comments_ignored_2
|
4
|
-
./fixit copy_is_raw
|
5
|
-
./fixit def_method
|
6
|
-
./fixit example_alpha
|
7
|
-
./fixit example_alpha2
|
8
|
-
./fixit hello_world
|
9
|
-
./fixit more_complex_vars
|
10
|
-
./fixit raw_text_block
|
11
|
-
./fixit sigil_can_change
|
12
|
-
./fixit simple_copy
|
13
|
-
./fixit simple_include
|
14
|
-
./fixit simple_mixin
|
15
|
-
./fixit simple_vars
|
16
|
-
./fixit single_raw_line
|