livetext 0.9.20 → 0.9.21
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/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
|