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/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 #
|