livetext 0.9.07 → 0.9.08

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb9d448129a6a48466dee41a2775829697a98a99126b934a2a2836c83a078363
4
- data.tar.gz: 42ff4b5f39db113b4e4abf9c4c2d57d1210cf4fe4bf93e582c2f9725f93ef53c
3
+ metadata.gz: f983f97d1e649079c9ae7b8c059c099eb3fb4b70b3df8afa026aefad4009f83e
4
+ data.tar.gz: 5efeb66838ae1b36dff234d548e0835f6617af739c653d9e6af8888c68b09c02
5
5
  SHA512:
6
- metadata.gz: 14d559a7f7f1856300d47c2a6e0d1ba820d5b1bf45c40629547187670442f520a8b111aa2136b638ab4ae4c0a02ed42bcf2e3f040e1f1564685041108822a81c
7
- data.tar.gz: 9f74fe5f520c98e562159f7616ab8bb75582ee580fa0192c2841dfc893a34e2ef199bff80248bd18dbb25531f297ff3176f3fc138ccbe9dc312e56091999bc75
6
+ metadata.gz: 957fccd4430db4bd5dfcaa889829e753b180ee9a48635ba88769dd6e2645768cbff293c887d6202dcfc58474deaa56bc03ce18973f612ec138b85db636909988
7
+ data.tar.gz: 18c66b6647b1bd78c75b5bf4c7d0b7b5649fc2f403b1013dedec8a7e0203fa0758ef17f5fd7f731705a9428ac993e8a449b6092b551a4708d84bf13848bdfd1b
@@ -1,5 +1,5 @@
1
1
  class Livetext
2
- VERSION = "0.9.07"
2
+ VERSION = "0.9.08"
3
3
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
4
4
  end
5
5
 
@@ -126,6 +126,7 @@ class Livetext
126
126
  when Comment
127
127
  handle_scomment(line)
128
128
  when Dotcmd
129
+ STDERR.puts "line = #{line.inspect}"
129
130
  handle_dotcmd(line)
130
131
  when Ddotcmd
131
132
  indent = line.index("$") + 1
@@ -184,6 +185,7 @@ class Livetext
184
185
  enum = text.each
185
186
  @backtrace = btrace
186
187
  @main.source(enum, fname, 0)
188
+ line = nil
187
189
  loop do
188
190
  line = @main.nextline
189
191
  break if line.nil?
@@ -192,6 +194,7 @@ class Livetext
192
194
  val = @main.finalize if @main.respond_to? :finalize
193
195
  @body
194
196
  rescue => err
197
+ STDERR.puts "[process_file] fname = #{fname.inspect}\n line = #{line.inspect}"
195
198
  STDERR.puts "ERROR #{err} in process_file"
196
199
  err.backtrace.each {|x| STDERR.puts " " + x }
197
200
  @body = ""
@@ -227,8 +230,10 @@ class Livetext
227
230
  end
228
231
  result
229
232
  rescue => err
233
+ STDERR.puts "Error was: #{err.inspect} (calling @main._error!)"
234
+ STDERR.puts err.backtrace
230
235
  @main._error!(err)
231
- puts @body
236
+ # puts @body
232
237
  @body = ""
233
238
  return @body
234
239
  end
@@ -35,7 +35,8 @@ class Livetext
35
35
  def _error!(err, abort=true, trace=false)
36
36
  where = @sources.last || @save_location
37
37
  puts @parent.body
38
- STDERR.puts "Error: #{err} " # (at #{where[1]} line #{where[2]})"
38
+ STDERR.puts "[lib/processor] Error: #{err}" # (at #{where[1]} line #{where[2]})"
39
+ raise "lib/processor error!"
39
40
  STDERR.puts err.backtrace if err.respond_to?(:backtrace) # && trace
40
41
  exit if abort
41
42
  end
@@ -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
339
  file = @_args.first
304
- _check_existence(file, "No such include file '#{file}'")
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,7 +384,7 @@ EOS
348
384
  Dir.chdir("..") { mixin }
349
385
  return
350
386
  else
351
- STDERR.puts "No such mixin '#{name}"
387
+ STDERR.puts "No such mixin '#{name}'"
352
388
  puts @body
353
389
  exit!
354
390
  end
@@ -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 @@
1
+ Error: Name 'foobar' is unknown
@@ -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'
@@ -0,0 +1 @@
1
+ Error: #<RuntimeError: Expected .end, found end of file>
@@ -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
@@ -0,0 +1 @@
1
+ Error: No such include file 'nosuchinc.lt3'
@@ -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...
@@ -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
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.08
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: 2020-11-11 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,32 @@ 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/expected-err-line1match.txt
57
57
  - test/data/error_inc_line_num/expected-output.txt
58
58
  - test/data/error_inc_line_num/file2.lt3
59
59
  - test/data/error_inc_line_num/source.lt3
60
60
  - test/data/error_invalid_name/expected-err-line1match.txt
61
- - test/data/error_invalid_name/expected-error.txt
62
61
  - test/data/error_invalid_name/expected-output.txt
63
62
  - test/data/error_invalid_name/source.lt3
64
63
  - test/data/error_line_num/expected-err-line1match.txt
65
- - test/data/error_line_num/expected-error.txt
66
64
  - test/data/error_line_num/expected-output.txt
67
65
  - test/data/error_line_num/source.lt3
68
- - test/data/error_mismatched_end/expected-error.txt
66
+ - test/data/error_mismatched_end/expected-err-line1match.txt
69
67
  - test/data/error_mismatched_end/expected-output.txt
70
68
  - test/data/error_mismatched_end/source.lt3
71
- - test/data/error_missing_end/expected-error.txt
69
+ - test/data/error_missing_end/expected-err-line1match.txt
72
70
  - test/data/error_missing_end/expected-output.txt
73
71
  - test/data/error_missing_end/source.lt3
74
72
  - test/data/error_name_not_permitted/expected-error.txt
75
73
  - test/data/error_name_not_permitted/expected-output.txt
76
74
  - test/data/error_name_not_permitted/source.lt3
77
- - test/data/error_no_such_copy/expected-error.txt
75
+ - test/data/error_no_such_copy/expected-err-line1match.txt
78
76
  - test/data/error_no_such_copy/expected-output.txt
79
77
  - test/data/error_no_such_copy/source.lt3
80
- - test/data/error_no_such_inc/expected-error.txt
78
+ - test/data/error_no_such_inc/expected-err-line1match.txt
81
79
  - test/data/error_no_such_inc/expected-output.txt
82
80
  - test/data/error_no_such_inc/source.lt3
83
- - test/data/error_no_such_mixin/expected-error.txt
81
+ - test/data/error_no_such_mixin/expected-err-line1match.txt
84
82
  - test/data/error_no_such_mixin/expected-output.txt
85
83
  - test/data/error_no_such_mixin/source.lt3
86
84
  - test/data/example_alpha/expected-error.txt
@@ -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)