livetext 0.9.07 → 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
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
-