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/bin/livetext
CHANGED
data/imports/markdown.rb
CHANGED
@@ -9,12 +9,12 @@ module Markdown
|
|
9
9
|
SimpleFormats[:s] = %w[<strike> </strike>]
|
10
10
|
|
11
11
|
|
12
|
-
def h1(args = nil, body = nil); _out "# #{
|
13
|
-
def h2(args = nil, body = nil); _out "## #{
|
14
|
-
def h3(args = nil, body = nil); _out "### #{
|
15
|
-
def h4(args = nil, body = nil); _out "#### #{
|
16
|
-
def h5(args = nil, body = nil); _out "##### #{
|
17
|
-
def h6(args = nil, body = nil); _out "###### #{
|
12
|
+
def h1(args = nil, body = nil); _out "# #{Livetext.interpolate(@_data)}"; _optional_blank_line end # atx style for now
|
13
|
+
def h2(args = nil, body = nil); _out "## #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
14
|
+
def h3(args = nil, body = nil); _out "### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
15
|
+
def h4(args = nil, body = nil); _out "#### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
16
|
+
def h5(args = nil, body = nil); _out "##### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
17
|
+
def h6(args = nil, body = nil); _out "###### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
18
18
|
|
19
19
|
def title(args = nil, body = nil)
|
20
20
|
h1
|
@@ -3,44 +3,43 @@
|
|
3
3
|
|
4
4
|
require_relative '../lib/livetext/importable'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
6
|
+
class MarkdownImportable < LiveText::Importable
|
7
|
+
|
8
|
+
SimpleFormats[:b] = %w[* *]
|
9
|
+
SimpleFormats[:i] = %w[_ _]
|
10
|
+
SimpleFormats[:t] = %w[` `]
|
11
|
+
SimpleFormats[:s] = %w[<strike> </strike>]
|
12
|
+
|
13
|
+
def h1; _out "# #{Livetext.interpolate(@_data)}"; _optional_blank_line end # atx style for now
|
14
|
+
def h2; _out "## #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
15
|
+
def h3; _out "### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
16
|
+
def h4; _out "#### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
17
|
+
def h5; _out "##### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
18
|
+
def h6; _out "###### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
19
|
+
|
20
|
+
def title
|
21
|
+
h1
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def section
|
25
|
+
h3
|
26
|
+
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
def bq # block quote
|
29
|
+
_body {|line| _out "> #{line}" }
|
30
|
+
end
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
def list
|
33
|
+
_body {|line| _out " * #{line}" }
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
36
|
+
def olist # Doesn't handle paragraphs yet
|
37
|
+
n = 0
|
38
|
+
_body do |line|
|
39
|
+
n += 1
|
40
|
+
_out "#{n}. #{_format(line)}"
|
42
41
|
end
|
43
|
-
|
44
|
-
alias nlist olist
|
45
42
|
end
|
43
|
+
|
44
|
+
alias nlist olist
|
46
45
|
end
|
data/imports/tutorial.rb
CHANGED
@@ -85,7 +85,7 @@ module Tutorial
|
|
85
85
|
def testcase(args = nil, body = nil)
|
86
86
|
name = _args.first
|
87
87
|
_out "\n<font size=+1><b>Test: </font><font size=+2><tt>#{name}</tt></font></b></h3><br>"
|
88
|
-
src, exp = "test/
|
88
|
+
src, exp = "test/snapshots/#{name}/source.lt3", "test/snapshots/#{name}/expected-output.txt"
|
89
89
|
@_args = [src, exp] # Better way to do this??
|
90
90
|
put_table(src, exp)
|
91
91
|
_out "<br>"
|
data/lib/cmdargs.rb
CHANGED
@@ -4,44 +4,53 @@ require_relative 'livetext'
|
|
4
4
|
Weird concepts to understand here...
|
5
5
|
|
6
6
|
1. A Livetext dot-command (flush left) usually looks like:
|
7
|
-
|
7
|
+
.foobar
|
8
|
+
|
8
9
|
2. A dot-command (left-indented) usually looks like:
|
9
|
-
|
10
|
+
$.foobar
|
11
|
+
|
10
12
|
3. More generally, it may have any number of parameters (0, 1, ...)
|
11
|
-
|
13
|
+
.redirect somefile.txt append
|
14
|
+
|
12
15
|
4. Variables and functions *can* appear (rare in practice??)
|
13
|
-
|
16
|
+
.redirect somefile$my_suffix $$my_mode
|
17
|
+
|
14
18
|
5. A trailing # comment may appear
|
15
19
|
a. Stripped... saved in #raw ? #data ? #comment ? elsewhere?
|
16
20
|
b. NOT the "dot" as a comment!
|
21
|
+
|
17
22
|
6. .foobar # This here is a comment
|
23
|
+
|
18
24
|
7. #data accessor returns all data on the .foo line...
|
19
25
|
a. ...After the initial space
|
20
|
-
b. ...Including spaces
|
26
|
+
b. ...Including later spaces
|
21
27
|
c. Including comment??
|
22
28
|
d. .foo This is o n l y a test.
|
23
29
|
# #data returns: "This is o n l y a test."
|
24
30
|
e. What about formatting???
|
25
31
|
f. What about: comments? variables? functions?
|
26
32
|
|
27
|
-
|
33
|
+
8. Some commands have NO body while others have an OPTIONAL or REQUIRED body
|
28
34
|
a. Assume .cmd1 definition forbids a body (then a body is an error)
|
29
35
|
.cmd1 # may NOT have a body
|
30
36
|
b. Assume .cmd2 definition PERMITS a body
|
31
37
|
.cmd2 # may or MAY NOT have body/.end
|
32
|
-
c. Assume .cmd3 definition
|
38
|
+
c. Assume .cmd3 definition REQUIRES a body
|
33
39
|
.cmd3 # REQUIRES a body/.end
|
34
40
|
. stuff...
|
35
41
|
.end
|
36
|
-
8. Inside a body:
|
37
|
-
8a. Leading dot has no special meaning (though the associated method may parse it!)
|
38
|
-
8b. BUG? Currently leading dot is a comment INSIDE a body?
|
39
|
-
8a. No leading char is special (though the associated method may parse it!)
|
40
|
-
8a. No trailing #-comments (though the associated method may parse it!)
|
41
|
-
8c. ?? We should or shouldn't look for variables/functions? or make it an option?
|
42
|
-
8d. .end may naturally not be used (but see .raw where it may)
|
43
|
-
9. the args accessor is a simple array of strings
|
44
42
|
|
43
|
+
9. Inside a body:
|
44
|
+
a. Leading dot has no special meaning (though the associated method may parse it!)
|
45
|
+
b. BUG? Currently leading dot is a comment INSIDE a body?
|
46
|
+
c. No leading char is special (though the associated method may parse it!)
|
47
|
+
d. No trailing #-comments (though the associated method may parse it!)
|
48
|
+
e. ?? We should or shouldn't look for variables/functions? or make it an option?
|
49
|
+
f. .end may naturally not be used (but see .raw where it may)
|
50
|
+
|
51
|
+
10. The args accessor is a simple array of strings
|
52
|
+
a. there is also raw_args (without variables/functions, etc.)
|
53
|
+
b. Much of this HAS NOT been thought through yet!
|
45
54
|
|
46
55
|
=end
|
47
56
|
|
@@ -64,11 +73,11 @@ class Livetext::CmdData
|
|
64
73
|
@nargs = nargs # not really "needed"
|
65
74
|
check_num_args(nargs)
|
66
75
|
|
67
|
-
# @varfunc =
|
76
|
+
# @varfunc = Livetext.interpolate(data.dup)
|
68
77
|
end
|
69
78
|
|
70
79
|
def check_num_args(num)
|
71
|
-
num_range = /(\d{0,2})(\.\.)(\d{0,2})/
|
80
|
+
num_range = /(\d{0,2})(\.\.)(\d{0,2})/ # Not "really" right...
|
72
81
|
min, max = 0, 9999
|
73
82
|
md = num_range.match(@nargs).to_a
|
74
83
|
bad_args = nil
|
data/lib/formatline.rb
CHANGED
@@ -52,7 +52,7 @@ class FormatLine < StringParser
|
|
52
52
|
marker peek
|
53
53
|
add peek
|
54
54
|
when LF
|
55
|
-
break if @i >= line.size - 1
|
55
|
+
break if eos? # @i >= line.size - 1
|
56
56
|
when nil
|
57
57
|
break
|
58
58
|
else
|
@@ -117,11 +117,11 @@ class FormatLine < StringParser
|
|
117
117
|
if [:colon, :brackets].include? arg[0]
|
118
118
|
arg = gen.next # for real
|
119
119
|
param = arg[1]
|
120
|
-
param =
|
120
|
+
param = Livetext.interpolate(param)
|
121
121
|
end
|
122
122
|
@out << funcall(val, param)
|
123
123
|
when :b, :i, :t, :s
|
124
|
-
val =
|
124
|
+
val = Livetext.interpolate(val)
|
125
125
|
@out << embed(sym, val)
|
126
126
|
else
|
127
127
|
add_token :str
|
@@ -199,7 +199,7 @@ class FormatLine < StringParser
|
|
199
199
|
str = Null.dup
|
200
200
|
grab
|
201
201
|
loop do
|
202
|
-
break if
|
202
|
+
break if peek.nil? # eos?
|
203
203
|
str << peek
|
204
204
|
break if terminate?(NoAlphaDot, next!)
|
205
205
|
grab
|
data/lib/helpers.rb
CHANGED
@@ -4,6 +4,9 @@ module Helpers
|
|
4
4
|
Space = " "
|
5
5
|
Sigil = "." # Can't change yet
|
6
6
|
|
7
|
+
ESCAPING = { "'" => ''', '&' => '&', '"' => '"',
|
8
|
+
'<' => '<', '>' => '>' }
|
9
|
+
|
7
10
|
def escape_html(string)
|
8
11
|
enc = string.encoding
|
9
12
|
unless enc.ascii_compatible?
|
@@ -12,12 +15,12 @@ module Helpers
|
|
12
15
|
enc = Encoding::Converter.asciicompat_encoding(enc)
|
13
16
|
string = enc ? string.encode(enc) : string.b
|
14
17
|
end
|
15
|
-
table = Hash[
|
18
|
+
table = Hash[ESCAPING.map {|pair|pair.map {|s|s.encode(enc)}}]
|
16
19
|
string = string.gsub(/#{"['&\"<>]".encode(enc)}/, table)
|
17
20
|
string.encode!(origenc) if origenc
|
18
21
|
return string
|
19
22
|
end
|
20
|
-
string.gsub(/['&\"<>]/,
|
23
|
+
string.gsub(/['&\"<>]/, ESCAPING)
|
21
24
|
end
|
22
25
|
|
23
26
|
def find_file(name, ext=".rb")
|
@@ -61,7 +64,7 @@ module Helpers
|
|
61
64
|
@body
|
62
65
|
end
|
63
66
|
|
64
|
-
def process_line(line)
|
67
|
+
def process_line(line)
|
65
68
|
nomarkup = true
|
66
69
|
case line # must apply these in order
|
67
70
|
when Comment
|
@@ -90,6 +93,29 @@ module Helpers
|
|
90
93
|
raise EndWithoutOpening()
|
91
94
|
when @main.respond_to?(name)
|
92
95
|
result = @main.send(name)
|
96
|
+
|
97
|
+
# NOTE: The above line is where the magic happens!
|
98
|
+
# A name like 'foobar' results in an invocation of
|
99
|
+
# @main.foobar (where @main is a Processor, and any
|
100
|
+
# new methods (e.g. from a mixin) are added to @main
|
101
|
+
#
|
102
|
+
# So all the functionality from _args and _raw_args
|
103
|
+
# and _data (among others?) will be encapsulated in
|
104
|
+
# 'some' kind of PORO which handles access to all
|
105
|
+
# these things as well as the 'body' between the
|
106
|
+
# command and its corresponding .end
|
107
|
+
#
|
108
|
+
# The 'body' functionality is so commonly used, I plan
|
109
|
+
# to pass it in separately as needed (even though the
|
110
|
+
# args object should make it available also).
|
111
|
+
#
|
112
|
+
# Every method corresponding to a dot commmand will
|
113
|
+
# get args and body passed in as needed. Every one of
|
114
|
+
# the signatures already has (args = nil, body = nil)
|
115
|
+
# but nothing is being passed in that way yet.
|
116
|
+
#
|
117
|
+
# Refer to lib/cmdargs.rb for more! This is *strictly*
|
118
|
+
# experimental and a "work in progress."
|
93
119
|
else
|
94
120
|
puts @body # earlier correct output, not flushed yet
|
95
121
|
raise "Name '#{name}' is unknown"
|
@@ -105,8 +131,8 @@ module Helpers
|
|
105
131
|
name, data = line.split(" ", 2)
|
106
132
|
name = name[1..-1] # chop off sigil
|
107
133
|
name = "dot_" + name if %w[include def].include?(name)
|
108
|
-
@main.data = data
|
109
134
|
@main.check_disallowed(name)
|
135
|
+
@main.data = data
|
110
136
|
name
|
111
137
|
end
|
112
138
|
|
data/lib/livetext.rb
CHANGED
data/lib/parser/general.rb
CHANGED
@@ -27,7 +27,7 @@ class Livetext::ParseGeneral < StringParser
|
|
27
27
|
lines.each do |line|
|
28
28
|
next if line.strip.empty?
|
29
29
|
var, value = line.split(" ", 2)
|
30
|
-
val =
|
30
|
+
val = Livetext.interpolate(value)
|
31
31
|
var = prefix + "." + var if prefix
|
32
32
|
pairs << [var, value]
|
33
33
|
end
|
data/lib/parser/set.rb
CHANGED
@@ -31,8 +31,8 @@ class Livetext::ParseSet < StringParser
|
|
31
31
|
pairs = []
|
32
32
|
char = nil
|
33
33
|
loop do
|
34
|
-
break if eos? # end of string
|
35
34
|
char = skip_spaces
|
35
|
+
break if eos? # end of string
|
36
36
|
raise "Expected alpha to start var name" unless char =~ /[a-z]/i
|
37
37
|
pairs << assignment
|
38
38
|
char = skip_spaces
|
@@ -56,7 +56,7 @@ class Livetext::ParseSet < StringParser
|
|
56
56
|
var = get_var
|
57
57
|
skip_equal
|
58
58
|
value = get_value
|
59
|
-
value =
|
59
|
+
value = Livetext.interpolate(value)
|
60
60
|
pair = [var, value]
|
61
61
|
pair
|
62
62
|
end
|
data/lib/parser/string.rb
CHANGED
@@ -15,12 +15,13 @@ class StringParser
|
|
15
15
|
return nil if @eos
|
16
16
|
char = @line[@i]
|
17
17
|
@i += 1
|
18
|
-
|
18
|
+
check_eos
|
19
19
|
char
|
20
20
|
end
|
21
21
|
|
22
22
|
def ungrab
|
23
|
-
@i -= 1
|
23
|
+
@i -= 1
|
24
|
+
check_eos
|
24
25
|
end
|
25
26
|
|
26
27
|
def next!
|
@@ -32,12 +33,7 @@ class StringParser
|
|
32
33
|
@line[@i-1]
|
33
34
|
end
|
34
35
|
|
35
|
-
def last?
|
36
|
-
@i > @len - 1
|
37
|
-
end
|
38
|
-
|
39
36
|
def eos?
|
40
|
-
@eos = true if last? # duh?
|
41
37
|
@eos
|
42
38
|
end
|
43
39
|
|
@@ -52,11 +48,16 @@ class StringParser
|
|
52
48
|
char = peek
|
53
49
|
break if eos?
|
54
50
|
break if char != " "
|
55
|
-
grab
|
51
|
+
char = grab
|
56
52
|
end
|
57
53
|
char
|
58
54
|
end
|
59
55
|
|
56
|
+
private
|
57
|
+
|
58
|
+
def check_eos
|
59
|
+
@eos = @i >= @len
|
60
|
+
end
|
60
61
|
end
|
61
62
|
|
62
63
|
=begin
|
data/lib/processor.rb
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
class Livetext
|
4
4
|
|
5
|
+
def self.interpolate(str)
|
6
|
+
FormatLine.var_func_parse(str)
|
7
|
+
end
|
8
|
+
|
5
9
|
# Class Processor does the actual work of processing input.
|
6
10
|
|
7
11
|
class Processor
|
@@ -11,17 +15,21 @@ class Livetext
|
|
11
15
|
include Livetext::Standard
|
12
16
|
include Livetext::UserAPI
|
13
17
|
|
14
|
-
Disallowed =
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
Disallowed =
|
19
|
+
%i[ __binding__ __id__ __send__ class
|
20
|
+
clone display dup enum_for
|
21
|
+
eql? equal? extend freeze
|
22
|
+
frozen? hash inspect instance_eval
|
23
|
+
instance_exec instance_of? is_a? kind_of?
|
24
|
+
method methods nil? object_id
|
25
|
+
pretty_inspect private_methods protected_methods public_method
|
26
|
+
public_methods public_send respond_to? send
|
27
|
+
singleton_class singleton_method singleton_methods taint
|
28
|
+
tainted? tap to_enum to_s
|
29
|
+
trust untaint untrust untrusted?
|
30
|
+
define_singleton_method instance_variable_defined?
|
31
|
+
instance_variable_get instance_variable_set
|
32
|
+
remove_instance_variable instance_variables ]
|
25
33
|
|
26
34
|
def initialize(parent, output = nil)
|
27
35
|
@parent = parent
|
data/lib/standard.rb
CHANGED
@@ -187,7 +187,7 @@ module Livetext::Standard
|
|
187
187
|
text = _body.join("\n")
|
188
188
|
rhs = ""
|
189
189
|
text.each_line do |line|
|
190
|
-
str =
|
190
|
+
str = Livetext.interpolate(line.chomp)
|
191
191
|
rhs << str + "<br>"
|
192
192
|
end
|
193
193
|
indent = @parent.indentation.last
|
data/lib/userapi.rb
CHANGED
@@ -114,9 +114,9 @@ module Livetext::UserAPI
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def _format(line)
|
117
|
-
return "" if line == "\n"
|
117
|
+
return "" if line == "\n" || line.nil?
|
118
118
|
line2 = FormatLine.parse!(line)
|
119
|
-
line.replace(line2)
|
119
|
+
line.replace(line2)
|
120
120
|
line
|
121
121
|
end
|
122
122
|
|
data/plugin/markdown.rb
CHANGED
@@ -8,12 +8,12 @@ SimpleFormats[:t] = %w[` `]
|
|
8
8
|
SimpleFormats[:s] = %w[<strike> </strike>]
|
9
9
|
|
10
10
|
|
11
|
-
def h1(args = nil, body = nil); _out "# #{
|
12
|
-
def h2(args = nil, body = nil); _out "## #{
|
13
|
-
def h3(args = nil, body = nil); _out "### #{
|
14
|
-
def h4(args = nil, body = nil); _out "#### #{
|
15
|
-
def h5(args = nil, body = nil); _out "##### #{
|
16
|
-
def h6(args = nil, body = nil); _out "###### #{
|
11
|
+
def h1(args = nil, body = nil); _out "# #{Livetext.interpolate(@_data)}"; _optional_blank_line end # atx style for now
|
12
|
+
def h2(args = nil, body = nil); _out "## #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
13
|
+
def h3(args = nil, body = nil); _out "### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
14
|
+
def h4(args = nil, body = nil); _out "#### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
15
|
+
def h5(args = nil, body = nil); _out "##### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
16
|
+
def h6(args = nil, body = nil); _out "###### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
|
17
17
|
|
18
18
|
def title(args = nil, body = nil)
|
19
19
|
h1
|
data/plugin/tutorial.rb
CHANGED
@@ -52,8 +52,9 @@ def inout(args = nil, body = nil)
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def put_table(src, exp)
|
55
|
-
|
56
|
-
|
55
|
+
STDERR.puts "put_table: #{[src, exp].inspect}"
|
56
|
+
t1 = ::File.readlines(src) rescue (abort "Fail - src = #{src} t1 = #{src}")
|
57
|
+
t2 = ::File.readlines(exp) rescue (abort "Fail - src = #{exp} t2 = #{out}")
|
57
58
|
t1 = t1.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join
|
58
59
|
t2 = t2.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join
|
59
60
|
|
@@ -80,7 +81,7 @@ end
|
|
80
81
|
def testcase(args = nil, body = nil)
|
81
82
|
name = _args.first
|
82
83
|
_out "\n<font size=+1><b>Test: </font><font size=+2><tt>#{name}</tt></font></b></h3><br>"
|
83
|
-
src, exp = "test/
|
84
|
+
src, exp = "test/snapshots/#{name}/source.lt3", "test/snapshots/#{name}/expected-output.txt"
|
84
85
|
@_args = [src, exp] # Better way to do this??
|
85
86
|
put_table(src, exp)
|
86
87
|
_out "<br>"
|
data/test/snapshots/subset.txt
CHANGED
@@ -0,0 +1,84 @@
|
|
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 # works?
|
33
|
+
|
34
|
+
# Others (usually passing):
|
35
|
+
|
36
|
+
# import/include/mixin, others...
|
37
|
+
|
38
|
+
simple_copy #
|
39
|
+
x simple_import # not working yet (but *could* sub in .icanhaz)
|
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 #
|