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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/bin/livetext +0 -1
  3. data/lib/livetext.rb +12 -3
  4. data/lib/processor.rb +5 -2
  5. data/lib/standard.rb +46 -9
  6. data/lib/userapi.rb +4 -4
  7. data/test/data/block_comment/source.lt3 +2 -2
  8. data/test/data/error_inc_line_num/FOO +21 -0
  9. data/test/data/error_inc_line_num/expected-err-line1match.txt +1 -0
  10. data/test/data/error_inc_line_num/expected-output.txt +6 -0
  11. data/test/data/error_invalid_name/expected-err-line1match.txt +1 -1
  12. data/test/data/error_mismatched_end/expected-err-line1match.txt +1 -0
  13. data/test/data/error_mismatched_end/expected-output.txt +2 -0
  14. data/test/data/error_missing_end/ERR +32 -0
  15. data/test/data/error_missing_end/expected-err-line1match.txt +1 -0
  16. data/test/data/error_missing_end/expected-output.txt +1 -0
  17. data/test/data/error_name_not_permitted/expected-error.txt +1 -1
  18. data/test/data/error_no_such_copy/expected-err-line1match.txt +1 -0
  19. data/test/data/error_no_such_copy/expected-output.txt +4 -0
  20. data/test/data/error_no_such_copy/source.lt3 +1 -0
  21. data/test/data/error_no_such_inc/expected-err-line1match.txt +1 -0
  22. data/test/data/error_no_such_inc/expected-output.txt +4 -0
  23. data/test/data/error_no_such_mixin/expected-err-line1match.txt +1 -0
  24. data/test/data/error_no_such_mixin/expected-output.txt +0 -6
  25. data/test/data/functions/source.lt3 +1 -1
  26. data/test/data/lines.txt +4 -0
  27. data/test/data/predef_vars/expected-error.txt +0 -0
  28. data/test/data/predef_vars/expected-output.txt +6 -0
  29. data/test/data/predef_vars/source.lt3 +6 -0
  30. data/test/test.rb +6 -8
  31. data/test/testlines.rb +15 -5
  32. metadata +13 -11
  33. data/test/data/error_inc_line_num/expected-error.txt +0 -1
  34. data/test/data/error_invalid_name/expected-error.txt +0 -1
  35. data/test/data/error_line_num/expected-error.txt +0 -1
  36. data/test/data/error_mismatched_end/expected-error.txt +0 -1
  37. data/test/data/error_missing_end/expected-error.txt +0 -1
  38. data/test/data/error_no_such_copy/expected-error.txt +0 -1
  39. data/test/data/error_no_such_inc/expected-error.txt +0 -1
  40. data/test/data/error_no_such_mixin/expected-error.txt +0 -1
  41. data/test/extratests.txt +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb9d448129a6a48466dee41a2775829697a98a99126b934a2a2836c83a078363
4
- data.tar.gz: 42ff4b5f39db113b4e4abf9c4c2d57d1210cf4fe4bf93e582c2f9725f93ef53c
3
+ metadata.gz: 2f49173986fc8a17fc77f35032e823f4818d404007d5aacd2d3d5a4a74f19e02
4
+ data.tar.gz: 61c0eab54d60c23abe0c27a6b8adc16f621e35c347253b557f07ffc80b31f80e
5
5
  SHA512:
6
- metadata.gz: 14d559a7f7f1856300d47c2a6e0d1ba820d5b1bf45c40629547187670442f520a8b111aa2136b638ab4ae4c0a02ed42bcf2e3f040e1f1564685041108822a81c
7
- data.tar.gz: 9f74fe5f520c98e562159f7616ab8bb75582ee580fa0192c2841dfc893a34e2ef199bff80248bd18dbb25531f297ff3176f3fc138ccbe9dc312e56091999bc75
6
+ metadata.gz: '07389bbd1154d200f6f56b0373c0459bf140baeefa370d789224f2dedd53fe5120f0f7116e2c9d1381ff07a48f945786bb8e5f3478ac9002aea0f9443f61f579'
7
+ data.tar.gz: 12829e57528407a55f842f8ad8de77b47396cb6fffb22d76feaf8d98d644ebf00fc50d447a24f453026980a7cb7631443e11f9f7d67121ce9529d583ef85e513
data/bin/livetext CHANGED
@@ -72,7 +72,6 @@ loop do
72
72
  @backtrace = true
73
73
  when "-m", "--mixin"
74
74
  mod = ARGV.shift
75
- STDERR.puts "Got mod: #{mod}"
76
75
  x.mixin(ARGV.shift)
77
76
  next
78
77
  when "-s", "--stdin"
data/lib/livetext.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Livetext
2
- VERSION = "0.9.07"
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) # , vars: {})
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
- @main._error!(err)
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
- STDERR.puts "Error: #{err} " # (at #{where[1]} line #{where[2]})"
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
- #{_body_text(true)}
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 # + "<br>"
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!(file, "No such include file '#{file}'") unless file
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 '#{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 '#{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
- STDERR.puts "No such mixin '#{name}"
352
- puts @body
353
- exit!
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
- rescue => err
97
- str = err.inspect + "\n"
98
- str << err.backtrace.map {|x| " " + x }.join("\n")
99
- _error!(str)
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)
@@ -4,9 +4,9 @@ a comment
4
4
  .end
5
5
  abc 123
6
6
  xyz
7
- .comment # and this is an extra-useless comment
7
+ .comment
8
8
  And so is this.
9
- .end # comment of dubious nature
9
+ .end
10
10
 
11
11
  one
12
12
  more
@@ -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
@@ -5,3 +5,9 @@ which includes file2 here:
5
5
  which has an error
6
6
  about an unknown command
7
7
  in line 5
8
+ <p>
9
+
10
+ And this is file2 line 7.
11
+ And here we are
12
+ back in the
13
+ original file.
@@ -1 +1 @@
1
- Error: Illegal name 'to_s' (at source.lt3 line 5)
1
+ Error: Illegal name 'to_s'
@@ -0,0 +1 @@
1
+ Error: Mismatched 'end'
@@ -4,3 +4,5 @@ without something
4
4
  beginning a block:
5
5
  <p>
6
6
 
7
+ foo bar
8
+ baz
@@ -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>
@@ -2,3 +2,4 @@ Blah
2
2
  blah
3
3
  <p>
4
4
 
5
+
@@ -1 +1 @@
1
- Error: Name 'class' is not permitted (at source.lt3 line 4)
1
+ Error: Name 'class' is not permitted
@@ -0,0 +1 @@
1
+ Error: No such file 'nosuchfile.txt' to copy
@@ -3,3 +3,7 @@ nonexistent file with .copy
3
3
  gives an error.
4
4
  <p>
5
5
 
6
+ <p>
7
+
8
+ Nothing to
9
+ see here.
@@ -1,3 +1,4 @@
1
+ .debug
1
2
  Make sure a
2
3
  nonexistent file with .copy
3
4
  gives an error.
@@ -0,0 +1 @@
1
+ Error: No such include file 'nosuchinc.lt3'
@@ -3,3 +3,7 @@ a nonexistent include
3
3
  will give an error.
4
4
  <p>
5
5
 
6
+ <p>
7
+
8
+ Nothing to
9
+ see here.
@@ -0,0 +1 @@
1
+ No such mixin 'nosuchthing'
@@ -1,6 +0,0 @@
1
- Test that
2
- we give an error
3
- when a mixin does not
4
- exist:
5
- <p>
6
-
@@ -3,7 +3,7 @@ some functions
3
3
  here...
4
4
 
5
5
  .func myfunc
6
- "Eureka!"
6
+ "Eureka!"
7
7
  .end
8
8
 
9
9
  I am calling $$myfunc here...
data/test/data/lines.txt CHANGED
@@ -118,3 +118,7 @@ Doubled underscore, midline
118
118
  This is __doubled, it seems
119
119
  This is <i>doubled</i>, it seems
120
120
 
121
+ Underscore inside parens
122
+ This is (_italicized and parenthesized)
123
+ This is (<i>italicized</i> and parenthesized)
124
+
File without changes
@@ -0,0 +1,6 @@
1
+ Here we go...
2
+ File = source.lt3
3
+ FileDir = /Users/Hal/Dropbox/topx/git/livetext/test/data/predef_vars
4
+ User = Hal
5
+ Version = 0.9.11
6
+ NoSuchVar = [NoSuchVar is undefined]
@@ -0,0 +1,6 @@
1
+ Here we go...
2
+ File = $File
3
+ FileDir = $FileDir
4
+ User = $User
5
+ Version = $Version
6
+ NoSuchVar = $NoSuchVar
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") # == 0
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
- "" + str + ""
61
+ "" + str.to_s + ""
64
62
  end
65
63
 
66
64
  def red(str)
67
- "" + str + ""
65
+ "" + str.to_s + ""
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
- data.each_slice(4) do |lines|
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
- next if expected === actual
21
+ if expected === actual
22
+ pass += 1
23
+ # puts "PASS: #{title}"
24
+ next
25
+ end
22
26
 
23
- puts "Input: #{input}"
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.07
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: 2020-07-29 00:00:00.000000000 Z
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/expected-error.txt
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-error.txt
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/expected-error.txt
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-error.txt
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-error.txt
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-error.txt
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
-