livetext 0.9.07 → 0.9.11
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/livetext +0 -1
- data/lib/livetext.rb +12 -3
- data/lib/processor.rb +5 -2
- data/lib/standard.rb +46 -9
- data/lib/userapi.rb +4 -4
- data/test/data/block_comment/source.lt3 +2 -2
- data/test/data/error_inc_line_num/FOO +21 -0
- data/test/data/error_inc_line_num/expected-err-line1match.txt +1 -0
- data/test/data/error_inc_line_num/expected-output.txt +6 -0
- data/test/data/error_invalid_name/expected-err-line1match.txt +1 -1
- data/test/data/error_mismatched_end/expected-err-line1match.txt +1 -0
- data/test/data/error_mismatched_end/expected-output.txt +2 -0
- data/test/data/error_missing_end/ERR +32 -0
- data/test/data/error_missing_end/expected-err-line1match.txt +1 -0
- data/test/data/error_missing_end/expected-output.txt +1 -0
- data/test/data/error_name_not_permitted/expected-error.txt +1 -1
- data/test/data/error_no_such_copy/expected-err-line1match.txt +1 -0
- data/test/data/error_no_such_copy/expected-output.txt +4 -0
- data/test/data/error_no_such_copy/source.lt3 +1 -0
- data/test/data/error_no_such_inc/expected-err-line1match.txt +1 -0
- data/test/data/error_no_such_inc/expected-output.txt +4 -0
- data/test/data/error_no_such_mixin/expected-err-line1match.txt +1 -0
- data/test/data/error_no_such_mixin/expected-output.txt +0 -6
- data/test/data/functions/source.lt3 +1 -1
- data/test/data/lines.txt +4 -0
- data/test/data/predef_vars/expected-error.txt +0 -0
- data/test/data/predef_vars/expected-output.txt +6 -0
- data/test/data/predef_vars/source.lt3 +6 -0
- data/test/test.rb +6 -8
- data/test/testlines.rb +15 -5
- metadata +13 -11
- data/test/data/error_inc_line_num/expected-error.txt +0 -1
- data/test/data/error_invalid_name/expected-error.txt +0 -1
- data/test/data/error_line_num/expected-error.txt +0 -1
- data/test/data/error_mismatched_end/expected-error.txt +0 -1
- data/test/data/error_missing_end/expected-error.txt +0 -1
- data/test/data/error_no_such_copy/expected-error.txt +0 -1
- data/test/data/error_no_such_inc/expected-error.txt +0 -1
- data/test/data/error_no_such_mixin/expected-error.txt +0 -1
- data/test/extratests.txt +0 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2f49173986fc8a17fc77f35032e823f4818d404007d5aacd2d3d5a4a74f19e02
|
|
4
|
+
data.tar.gz: 61c0eab54d60c23abe0c27a6b8adc16f621e35c347253b557f07ffc80b31f80e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '07389bbd1154d200f6f56b0373c0459bf140baeefa370d789224f2dedd53fe5120f0f7116e2c9d1381ff07a48f945786bb8e5f3478ac9002aea0f9443f61f579'
|
|
7
|
+
data.tar.gz: 12829e57528407a55f842f8ad8de77b47396cb6fffb22d76feaf8d98d644ebf00fc50d447a24f453026980a7cb7631443e11f9f7d67121ce9529d583ef85e513
|
data/bin/livetext
CHANGED
data/lib/livetext.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class Livetext
|
|
2
|
-
VERSION = "0.9.
|
|
2
|
+
VERSION = "0.9.11"
|
|
3
3
|
Path = File.expand_path(File.join(File.dirname(__FILE__)))
|
|
4
4
|
end
|
|
5
5
|
|
|
@@ -74,6 +74,10 @@ class Livetext
|
|
|
74
74
|
@main = Processor.new(self, output)
|
|
75
75
|
@indentation = [0]
|
|
76
76
|
@_vars = Livetext::Vars
|
|
77
|
+
|
|
78
|
+
# Other predefined variables (see also _setfile)
|
|
79
|
+
_setvar(:User, `whoami`.chomp)
|
|
80
|
+
_setvar(:Version, Livetext::VERSION)
|
|
77
81
|
end
|
|
78
82
|
|
|
79
83
|
def _parse_colon_args(args, hash) # really belongs in livetext
|
|
@@ -126,6 +130,7 @@ class Livetext
|
|
|
126
130
|
when Comment
|
|
127
131
|
handle_scomment(line)
|
|
128
132
|
when Dotcmd
|
|
133
|
+
# STDERR.puts "line = #{line.inspect}"
|
|
129
134
|
handle_dotcmd(line)
|
|
130
135
|
when Ddotcmd
|
|
131
136
|
indent = line.index("$") + 1
|
|
@@ -169,7 +174,7 @@ class Livetext
|
|
|
169
174
|
self.body
|
|
170
175
|
end
|
|
171
176
|
|
|
172
|
-
def xform_file(file
|
|
177
|
+
def xform_file(file, vars: nil)
|
|
173
178
|
Livetext::Vars.replace(vars) unless vars.nil?
|
|
174
179
|
@_vars.replace(vars) unless vars.nil?
|
|
175
180
|
self.process_file(file)
|
|
@@ -184,6 +189,7 @@ class Livetext
|
|
|
184
189
|
enum = text.each
|
|
185
190
|
@backtrace = btrace
|
|
186
191
|
@main.source(enum, fname, 0)
|
|
192
|
+
line = nil
|
|
187
193
|
loop do
|
|
188
194
|
line = @main.nextline
|
|
189
195
|
break if line.nil?
|
|
@@ -192,6 +198,7 @@ class Livetext
|
|
|
192
198
|
val = @main.finalize if @main.respond_to? :finalize
|
|
193
199
|
@body
|
|
194
200
|
rescue => err
|
|
201
|
+
STDERR.puts "[process_file] fname = #{fname.inspect}\n line = #{line.inspect}"
|
|
195
202
|
STDERR.puts "ERROR #{err} in process_file"
|
|
196
203
|
err.backtrace.each {|x| STDERR.puts " " + x }
|
|
197
204
|
@body = ""
|
|
@@ -227,7 +234,9 @@ class Livetext
|
|
|
227
234
|
end
|
|
228
235
|
result
|
|
229
236
|
rescue => err
|
|
230
|
-
|
|
237
|
+
STDERR.puts "Error: #{err.inspect}"
|
|
238
|
+
STDERR.puts err.backtrace
|
|
239
|
+
# @main._error!(err)
|
|
231
240
|
puts @body
|
|
232
241
|
@body = ""
|
|
233
242
|
return @body
|
data/lib/processor.rb
CHANGED
|
@@ -34,9 +34,12 @@ class Livetext
|
|
|
34
34
|
|
|
35
35
|
def _error!(err, abort=true, trace=false)
|
|
36
36
|
where = @sources.last || @save_location
|
|
37
|
-
puts @parent.body
|
|
38
|
-
|
|
37
|
+
# puts @parent.body
|
|
38
|
+
# puts "[lib/processor] Error: #{err}"
|
|
39
|
+
# puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
|
|
40
|
+
STDERR.puts "[lib/processor] Error: #{err}" # (at #{where[1]} line #{where[2]})"
|
|
39
41
|
STDERR.puts err.backtrace if err.respond_to?(:backtrace) # && trace
|
|
42
|
+
# raise "lib/processor error!" # FIXME
|
|
40
43
|
exit if abort
|
|
41
44
|
end
|
|
42
45
|
|
data/lib/standard.rb
CHANGED
|
@@ -43,9 +43,11 @@ module Livetext::Standard
|
|
|
43
43
|
_error! "Illegal name '#{funcname}'" if _disallowed?(funcname)
|
|
44
44
|
func_def = <<-EOS
|
|
45
45
|
def #{funcname}(param)
|
|
46
|
-
#{
|
|
46
|
+
#{_body.to_a.join("\n")}
|
|
47
47
|
end
|
|
48
48
|
EOS
|
|
49
|
+
_optional_blank_line
|
|
50
|
+
|
|
49
51
|
Livetext::Functions.class_eval func_def
|
|
50
52
|
end
|
|
51
53
|
|
|
@@ -223,6 +225,26 @@ EOS
|
|
|
223
225
|
end
|
|
224
226
|
end
|
|
225
227
|
|
|
228
|
+
def variables! # cwd, not FileDir - weird, fix later
|
|
229
|
+
prefix = _args[0]
|
|
230
|
+
file = _args[1]
|
|
231
|
+
prefix = nil if prefix == "-" # FIXME dumb hack
|
|
232
|
+
if file
|
|
233
|
+
here = "" # different for ! version
|
|
234
|
+
lines = File.readlines(here + file)
|
|
235
|
+
else
|
|
236
|
+
lines = _body
|
|
237
|
+
end
|
|
238
|
+
lines.map! {|x| x.sub(/# .*/, "").strip } # strip comments
|
|
239
|
+
lines.each do |line|
|
|
240
|
+
next if line.strip.empty?
|
|
241
|
+
var, val = line.split(" ", 2)
|
|
242
|
+
val = FormatLine.var_func_parse(val)
|
|
243
|
+
var = prefix + "." + var if prefix
|
|
244
|
+
@parent._setvar(var, val)
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
226
248
|
def variables
|
|
227
249
|
prefix = _args[0]
|
|
228
250
|
file = _args[1]
|
|
@@ -247,13 +269,21 @@ EOS
|
|
|
247
269
|
eval _data.chomp
|
|
248
270
|
end
|
|
249
271
|
|
|
272
|
+
def heredoc! # adds <br>...
|
|
273
|
+
_heredoc(true)
|
|
274
|
+
end
|
|
275
|
+
|
|
250
276
|
def heredoc
|
|
277
|
+
_heredoc
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def _heredoc(bang=false)
|
|
251
281
|
var = @_args[0]
|
|
252
282
|
str = _body.join("\n")
|
|
253
283
|
s2 = ""
|
|
254
284
|
str.each_line do |s|
|
|
255
285
|
str = FormatLine.var_func_parse(s.chomp)
|
|
256
|
-
s2 << str
|
|
286
|
+
s2 << str + "<br>"
|
|
257
287
|
end
|
|
258
288
|
indent = @parent.indentation.last
|
|
259
289
|
indented = " " * indent
|
|
@@ -278,8 +308,10 @@ EOS
|
|
|
278
308
|
break if value
|
|
279
309
|
end
|
|
280
310
|
end
|
|
311
|
+
STDERR.puts "Cannot find #{file.inspect} from #{Dir.pwd}" unless value
|
|
281
312
|
return value
|
|
282
313
|
rescue
|
|
314
|
+
STDERR.puts "Can't find #{file.inspect} from #{Dir.pwd}"
|
|
283
315
|
return nil
|
|
284
316
|
end
|
|
285
317
|
|
|
@@ -287,21 +319,25 @@ EOS
|
|
|
287
319
|
# like include, but search upward as needed
|
|
288
320
|
file = @_args.first
|
|
289
321
|
file = _seek(file)
|
|
290
|
-
_error!(
|
|
322
|
+
_error!("No such include file #{file.inspect}") unless file
|
|
291
323
|
@parent.process_file(file)
|
|
292
324
|
_optional_blank_line
|
|
325
|
+
rescue => err
|
|
326
|
+
STDERR.puts ".seek error - #{err}"
|
|
327
|
+
STDERR.puts err.inspect
|
|
328
|
+
return nil
|
|
293
329
|
end
|
|
294
330
|
|
|
295
331
|
def in_out # FIXME dumb name!
|
|
296
332
|
file, dest = *@_args
|
|
297
|
-
_check_existence(file, "No such include file
|
|
333
|
+
_check_existence(file, "No such include file #{file.inspect}")
|
|
298
334
|
@parent.process_file(file, dest)
|
|
299
335
|
_optional_blank_line
|
|
300
336
|
end
|
|
301
337
|
|
|
302
338
|
def _include
|
|
303
|
-
file = @_args.first
|
|
304
|
-
_check_existence(file, "No such include file
|
|
339
|
+
file = _format(@_args.first) # allows for variables
|
|
340
|
+
_check_existence(file, "No such include file #{file.inspect}")
|
|
305
341
|
@parent.process_file(file)
|
|
306
342
|
_optional_blank_line
|
|
307
343
|
end
|
|
@@ -348,9 +384,10 @@ EOS
|
|
|
348
384
|
Dir.chdir("..") { mixin }
|
|
349
385
|
return
|
|
350
386
|
else
|
|
351
|
-
|
|
352
|
-
puts
|
|
353
|
-
|
|
387
|
+
raise "No such mixin '#{name}'"
|
|
388
|
+
# STDERR.puts "No such mixin '#{name}'"
|
|
389
|
+
# puts @body
|
|
390
|
+
# exit!
|
|
354
391
|
end
|
|
355
392
|
end
|
|
356
393
|
|
data/lib/userapi.rb
CHANGED
|
@@ -93,10 +93,10 @@ module Livetext::UserAPI
|
|
|
93
93
|
else
|
|
94
94
|
lines
|
|
95
95
|
end
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
# rescue => err
|
|
97
|
+
# str = err.inspect + "\n"
|
|
98
|
+
# str << err.backtrace.map {|x| " " + x }.join("\n")
|
|
99
|
+
# _error!(str)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def _body_text(raw=false)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[lib/processor] Error: Name 'foobar' is unknown
|
|
2
|
+
Error was: #<RuntimeError: lib/processor error!> (calling @main._error!)
|
|
3
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/processor.rb:41:in `_error!'
|
|
4
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:228:in `handle_dotcmd'
|
|
5
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:130:in `process_line'
|
|
6
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:192:in `block in process_file'
|
|
7
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `loop'
|
|
8
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `process_file'
|
|
9
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/standard.rb:341:in `_include'
|
|
10
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:226:in `handle_dotcmd'
|
|
11
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:130:in `process_line'
|
|
12
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:192:in `block in process_file'
|
|
13
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `loop'
|
|
14
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `process_file'
|
|
15
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:88:in `block in <top (required)>'
|
|
16
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `loop'
|
|
17
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `<top (required)>'
|
|
18
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `load'
|
|
19
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `<main>'
|
|
20
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `eval'
|
|
21
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `<main>'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: Name 'foobar' is unknown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Error: Illegal name 'to_s'
|
|
1
|
+
Error: Illegal name 'to_s'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: Mismatched 'end'
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[lib/processor] Error: #<RuntimeError: Expected .end, found end of file>
|
|
2
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/userapi.rb:88:in `_body'
|
|
3
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/standard.rb:32:in `comment'
|
|
4
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:226:in `handle_dotcmd'
|
|
5
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:130:in `process_line'
|
|
6
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:192:in `block in process_file'
|
|
7
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `loop'
|
|
8
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `process_file'
|
|
9
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:88:in `block in <top (required)>'
|
|
10
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `loop'
|
|
11
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `<top (required)>'
|
|
12
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `load'
|
|
13
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `<main>'
|
|
14
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `eval'
|
|
15
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `<main>'
|
|
16
|
+
Error was: #<RuntimeError: lib/processor error!> (calling @main._error!)
|
|
17
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/processor.rb:41:in `_error!'
|
|
18
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/userapi.rb:99:in `rescue in _body'
|
|
19
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/userapi.rb:75:in `_body'
|
|
20
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/standard.rb:32:in `comment'
|
|
21
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:226:in `handle_dotcmd'
|
|
22
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:130:in `process_line'
|
|
23
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:192:in `block in process_file'
|
|
24
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `loop'
|
|
25
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/lib/livetext.rb:189:in `process_file'
|
|
26
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:88:in `block in <top (required)>'
|
|
27
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `loop'
|
|
28
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/gems/livetext-0.9.08/bin/livetext:57:in `<top (required)>'
|
|
29
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `load'
|
|
30
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/livetext:23:in `<main>'
|
|
31
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `eval'
|
|
32
|
+
/Users/Hal/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `<main>'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: #<RuntimeError: Expected .end, found end of file>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Error: Name 'class' is not permitted
|
|
1
|
+
Error: Name 'class' is not permitted
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: No such file 'nosuchfile.txt' to copy
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Error: No such include file 'nosuchinc.lt3'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
No such mixin 'nosuchthing'
|
data/test/data/lines.txt
CHANGED
|
File without changes
|
data/test/test.rb
CHANGED
|
@@ -18,7 +18,7 @@ class TestingLivetext < MiniTest::Test
|
|
|
18
18
|
|
|
19
19
|
TestLines = []
|
|
20
20
|
|
|
21
|
-
Dir.chdir `livetext --path`.chomp if ARGV.first == "cmdline"
|
|
21
|
+
Dir.chdir `livetext --path`.chomp.chomp if ARGV.first == "cmdline"
|
|
22
22
|
|
|
23
23
|
Dir.chdir(Data)
|
|
24
24
|
|
|
@@ -31,7 +31,7 @@ class TestingLivetext < MiniTest::Test
|
|
|
31
31
|
break if f.eof?
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
if File.size("subset.txt")
|
|
34
|
+
if File.size("subset.txt") == 0
|
|
35
35
|
puts "Defining via TestLines"
|
|
36
36
|
TestLines.each.with_index do |item, i|
|
|
37
37
|
msg, src, exp, blank = *item
|
|
@@ -51,8 +51,6 @@ class TestingLivetext < MiniTest::Test
|
|
|
51
51
|
selected = File.readlines("subset.txt").map(&:chomp)
|
|
52
52
|
Subset = selected.empty? ? TestDirs : selected
|
|
53
53
|
|
|
54
|
-
# puts "Subset = #{Subset.inspect}"
|
|
55
|
-
|
|
56
54
|
Subset.each do |tdir|
|
|
57
55
|
define_method("test_#{tdir}") do
|
|
58
56
|
external_files(tdir)
|
|
@@ -60,11 +58,11 @@ class TestingLivetext < MiniTest::Test
|
|
|
60
58
|
end
|
|
61
59
|
|
|
62
60
|
def green(str)
|
|
63
|
-
"[32m" + str + "[0m"
|
|
61
|
+
"[32m" + str.to_s + "[0m"
|
|
64
62
|
end
|
|
65
63
|
|
|
66
64
|
def red(str)
|
|
67
|
-
"[31m" + str + "[0m"
|
|
65
|
+
"[31m" + str.to_s + "[0m"
|
|
68
66
|
end
|
|
69
67
|
|
|
70
68
|
def external_files(base)
|
|
@@ -85,14 +83,14 @@ class TestingLivetext < MiniTest::Test
|
|
|
85
83
|
|
|
86
84
|
if File.exist?(expout_regex)
|
|
87
85
|
rx_out = /#{Regexp.escape(File.read(expout_regex).chomp)}/
|
|
88
|
-
expected = "(match test)"
|
|
86
|
+
expected = rx_out # "(match test)"
|
|
89
87
|
else
|
|
90
88
|
expected = File.read(exp)
|
|
91
89
|
end
|
|
92
90
|
|
|
93
91
|
if File.exist?(experr_regex)
|
|
94
92
|
rx_err = /#{Regexp.escape(File.read(experr_regex).chomp)}/
|
|
95
|
-
errexp = "(match test)"
|
|
93
|
+
errexp = rx_err # "(match test)"
|
|
96
94
|
else
|
|
97
95
|
errexp = File.read(erx)
|
|
98
96
|
end
|
data/test/testlines.rb
CHANGED
|
@@ -8,20 +8,30 @@ require 'formatline'
|
|
|
8
8
|
input = ARGV.first || "test/data/lines.txt"
|
|
9
9
|
data = File.readlines(input)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
pass = fail = 0
|
|
12
|
+
data.each_slice(4).with_index do |lines, i|
|
|
12
13
|
title, input, expected, blank = *lines
|
|
14
|
+
lnum = i*4 + 1
|
|
13
15
|
input.chomp!
|
|
14
16
|
expected.chomp!
|
|
15
17
|
expected = eval(expected) if expected[0] == "/"
|
|
16
18
|
|
|
17
|
-
puts "-----------------------------"
|
|
18
|
-
print "Test: #{title}"
|
|
19
19
|
|
|
20
20
|
actual = FormatLine.parse!(input)
|
|
21
|
-
|
|
21
|
+
if expected === actual
|
|
22
|
+
pass += 1
|
|
23
|
+
# puts "PASS: #{title}"
|
|
24
|
+
next
|
|
25
|
+
end
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
fail += 1
|
|
28
|
+
puts "----------------------------- (line #{lnum})"
|
|
29
|
+
puts "Test: #{title}"
|
|
30
|
+
puts "Input: #{input}"
|
|
24
31
|
puts " #{red('FAIL Expected: ')} #{expected.inspect}"
|
|
25
32
|
puts " #{red(' Actual : ')} #{actual.inspect}"
|
|
26
33
|
puts
|
|
27
34
|
end
|
|
35
|
+
|
|
36
|
+
puts
|
|
37
|
+
puts "#{pass} passes #{fail} fails"
|
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.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hal Fulton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-12-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A smart text processor extensible in Ruby
|
|
14
14
|
email: rubyhacker@gmail.com
|
|
@@ -53,34 +53,34 @@ files:
|
|
|
53
53
|
- test/data/def_method/expected-error.txt
|
|
54
54
|
- test/data/def_method/expected-output.txt
|
|
55
55
|
- test/data/def_method/source.lt3
|
|
56
|
-
- test/data/error_inc_line_num/
|
|
56
|
+
- test/data/error_inc_line_num/FOO
|
|
57
|
+
- test/data/error_inc_line_num/expected-err-line1match.txt
|
|
57
58
|
- test/data/error_inc_line_num/expected-output.txt
|
|
58
59
|
- test/data/error_inc_line_num/file2.lt3
|
|
59
60
|
- test/data/error_inc_line_num/source.lt3
|
|
60
61
|
- test/data/error_invalid_name/expected-err-line1match.txt
|
|
61
|
-
- test/data/error_invalid_name/expected-error.txt
|
|
62
62
|
- test/data/error_invalid_name/expected-output.txt
|
|
63
63
|
- test/data/error_invalid_name/source.lt3
|
|
64
64
|
- test/data/error_line_num/expected-err-line1match.txt
|
|
65
|
-
- test/data/error_line_num/expected-error.txt
|
|
66
65
|
- test/data/error_line_num/expected-output.txt
|
|
67
66
|
- test/data/error_line_num/source.lt3
|
|
68
|
-
- test/data/error_mismatched_end/expected-
|
|
67
|
+
- test/data/error_mismatched_end/expected-err-line1match.txt
|
|
69
68
|
- test/data/error_mismatched_end/expected-output.txt
|
|
70
69
|
- test/data/error_mismatched_end/source.lt3
|
|
71
|
-
- test/data/error_missing_end/
|
|
70
|
+
- test/data/error_missing_end/ERR
|
|
71
|
+
- test/data/error_missing_end/expected-err-line1match.txt
|
|
72
72
|
- test/data/error_missing_end/expected-output.txt
|
|
73
73
|
- test/data/error_missing_end/source.lt3
|
|
74
74
|
- test/data/error_name_not_permitted/expected-error.txt
|
|
75
75
|
- test/data/error_name_not_permitted/expected-output.txt
|
|
76
76
|
- test/data/error_name_not_permitted/source.lt3
|
|
77
|
-
- test/data/error_no_such_copy/expected-
|
|
77
|
+
- test/data/error_no_such_copy/expected-err-line1match.txt
|
|
78
78
|
- test/data/error_no_such_copy/expected-output.txt
|
|
79
79
|
- test/data/error_no_such_copy/source.lt3
|
|
80
|
-
- test/data/error_no_such_inc/expected-
|
|
80
|
+
- test/data/error_no_such_inc/expected-err-line1match.txt
|
|
81
81
|
- test/data/error_no_such_inc/expected-output.txt
|
|
82
82
|
- test/data/error_no_such_inc/source.lt3
|
|
83
|
-
- test/data/error_no_such_mixin/expected-
|
|
83
|
+
- test/data/error_no_such_mixin/expected-err-line1match.txt
|
|
84
84
|
- test/data/error_no_such_mixin/expected-output.txt
|
|
85
85
|
- test/data/error_no_such_mixin/source.lt3
|
|
86
86
|
- test/data/example_alpha/expected-error.txt
|
|
@@ -100,6 +100,9 @@ files:
|
|
|
100
100
|
- test/data/more_complex_vars/expected-error.txt
|
|
101
101
|
- test/data/more_complex_vars/expected-output.txt
|
|
102
102
|
- test/data/more_complex_vars/source.lt3
|
|
103
|
+
- test/data/predef_vars/expected-error.txt
|
|
104
|
+
- test/data/predef_vars/expected-output.txt
|
|
105
|
+
- test/data/predef_vars/source.lt3
|
|
103
106
|
- test/data/raw_lines/expected-error.txt
|
|
104
107
|
- test/data/raw_lines/expected-output.txt
|
|
105
108
|
- test/data/raw_lines/source.lt3
|
|
@@ -129,7 +132,6 @@ files:
|
|
|
129
132
|
- test/data/table_with_heredocs/expected-error.txt
|
|
130
133
|
- test/data/table_with_heredocs/expected-output.txt
|
|
131
134
|
- test/data/table_with_heredocs/source.lt3
|
|
132
|
-
- test/extratests.txt
|
|
133
135
|
- test/formatting.rb
|
|
134
136
|
- test/newtest
|
|
135
137
|
- test/sdtest
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: Name 'foobar' is unknown (at file2.lt3 line 5)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: Illegal name 'to_s' (at source.lt3 line 5)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: Name 'foobar' is unknown (at source.lt3 line 4)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: Mismatched 'end' (at source.lt3 line 6)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: Expecting .end, found end of file (at source.lt3 line 6)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: No such file 'nosuchfile.txt' to copy (at source.lt3 line 5)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: No such include file 'nosuchinc.lt3' (at source.lt3 line 5)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Error: No such mixin 'nosuchthing' (at source.lt3 line 6)
|
data/test/extratests.txt
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Line starts with underscore
|
|
2
|
-
_This for example
|
|
3
|
-
<i>This</i> for example
|
|
4
|
-
|
|
5
|
-
Line starts with double underscore
|
|
6
|
-
__This, for example
|
|
7
|
-
<i>This,</i> for example
|
|
8
|
-
|
|
9
|
-
Line has embedded underscores
|
|
10
|
-
This has some_embedded_underscores
|
|
11
|
-
This has some_embedded_underscores
|
|
12
|
-
|
|
13
|
-
Doubled underscore, midline
|
|
14
|
-
This is __doubled, it seems
|
|
15
|
-
This is <i>doubled,</i> it seems
|
|
16
|
-
|
|
17
|
-
Line has escaped underscores
|
|
18
|
-
This has some\_escaped\_underscores
|
|
19
|
-
This has some_escaped_underscores
|
|
20
|
-
|