livetext 0.9.02 → 0.9.03
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/lib/livetext.rb +2 -2
- data/lib/standard.rb +13 -13
- data/lib/userapi.rb +4 -2
- data/plugin/bookish.rb +10 -6
- data/test/data/basic_formatting/expected-output.txt +1 -1
- data/test/data/error_invalid_name/expected-err-line1match.txt +1 -0
- data/test/data/error_line_num/expected-err-line1match.txt +1 -0
- data/test/data/example_alpha2/source.lt3 +1 -1
- data/test/data/lines.txt +2 -2
- data/test/test.rb +35 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 868972bd6d69160614982ec1673ffe4b1e6b52cc0c37b3f3665b4cd63a9465c4
|
4
|
+
data.tar.gz: bb03f156bed4713bfa30804c6bb4fb5057a22db84523774a90649e62e22ac8f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f44235d6cd9649515ae9b6fed910b233f90c37f92c54bec3183f718b83e918ef95192aa8e8c08ec8b2eca16edbcbcc519a002214efeff4d042d7056f8a3a3a78
|
7
|
+
data.tar.gz: 148fa1af92fa0320bbbe3db92fb89cd24d4ebc0620d65343c1c0120c1a61c5612df7fe27bf2d6b0cf805189e00a566487cda712a4e1e09be3ce1f4e9ea035999
|
data/lib/livetext.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Livetext
|
2
|
-
VERSION = "0.9.
|
2
|
+
VERSION = "0.9.03"
|
3
3
|
Path = File.expand_path(File.join(File.dirname(__FILE__)))
|
4
4
|
end
|
5
5
|
|
@@ -271,7 +271,7 @@ line = line.sub(/# .*$/, "")
|
|
271
271
|
if @main.respond_to?(name)
|
272
272
|
result = @main.send(name)
|
273
273
|
else
|
274
|
-
@main._error! "Name '#{name}' is unknown
|
274
|
+
@main._error! "Name '#{name}' is unknown"
|
275
275
|
return
|
276
276
|
end
|
277
277
|
result
|
data/lib/standard.rb
CHANGED
@@ -9,7 +9,7 @@ module Livetext::Standard
|
|
9
9
|
attr_reader :_data
|
10
10
|
|
11
11
|
def data=(val)
|
12
|
-
@_data = val
|
12
|
+
@_data = val.chomp
|
13
13
|
@_args = val.split rescue []
|
14
14
|
@_mixins = []
|
15
15
|
end
|
@@ -33,7 +33,7 @@ module Livetext::Standard
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def shell
|
36
|
-
cmd = @_data
|
36
|
+
cmd = @_data.chomp
|
37
37
|
# _errout("Running: #{cmd}")
|
38
38
|
system(cmd)
|
39
39
|
end
|
@@ -50,22 +50,22 @@ EOS
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def shell!
|
53
|
-
cmd = @_data
|
53
|
+
cmd = @_data.chomp
|
54
54
|
system(cmd)
|
55
55
|
end
|
56
56
|
|
57
57
|
def errout
|
58
|
-
TTY.puts @_data
|
58
|
+
TTY.puts @_data.chomp
|
59
59
|
end
|
60
60
|
|
61
61
|
def say
|
62
|
-
str = _format(@_data)
|
62
|
+
str = _format(@_data.chomp)
|
63
63
|
TTY.puts str
|
64
64
|
_optional_blank_line
|
65
65
|
end
|
66
66
|
|
67
67
|
def banner
|
68
|
-
str = _format(@_data)
|
68
|
+
str = _format(@_data.chomp)
|
69
69
|
n = str.length - 1
|
70
70
|
puts "-"*n
|
71
71
|
puts str
|
@@ -94,7 +94,7 @@ EOS
|
|
94
94
|
name = @_args[0]
|
95
95
|
str = "def #{name}\n"
|
96
96
|
raise "Illegal name '#{name}'" if _disallowed?(name)
|
97
|
-
str +=
|
97
|
+
str += _body(true).join("\n")
|
98
98
|
str += "\nend\n"
|
99
99
|
eval str
|
100
100
|
rescue => err
|
@@ -179,7 +179,7 @@ EOS
|
|
179
179
|
end
|
180
180
|
|
181
181
|
def set_NEW
|
182
|
-
line = _data.
|
182
|
+
line = _data.chomp
|
183
183
|
e = line.each_char # enum
|
184
184
|
loop do
|
185
185
|
c = e.next
|
@@ -216,12 +216,12 @@ EOS
|
|
216
216
|
end
|
217
217
|
|
218
218
|
def reval
|
219
|
-
eval _data
|
219
|
+
eval _data.chomp
|
220
220
|
end
|
221
221
|
|
222
222
|
def heredoc
|
223
223
|
var = @_args[0]
|
224
|
-
str =
|
224
|
+
str = _body.join("\n")
|
225
225
|
s2 = ""
|
226
226
|
str.each_line do |s|
|
227
227
|
str = FormatLine.var_func_parse(s.chomp)
|
@@ -347,7 +347,7 @@ EOS
|
|
347
347
|
end
|
348
348
|
|
349
349
|
def r
|
350
|
-
_out @_data # No processing at all
|
350
|
+
_out @_data.chomp # No processing at all
|
351
351
|
end
|
352
352
|
|
353
353
|
def raw
|
@@ -393,7 +393,7 @@ EOS
|
|
393
393
|
|
394
394
|
def heading
|
395
395
|
_print "<center><font size=+1><b>"
|
396
|
-
_print @_data
|
396
|
+
_print @_data.chomp
|
397
397
|
_print "</b></font></center>"
|
398
398
|
end
|
399
399
|
|
@@ -444,7 +444,7 @@ EOS
|
|
444
444
|
end
|
445
445
|
|
446
446
|
def xtable # Borrowed from bookish - FIXME
|
447
|
-
title = @_data
|
447
|
+
title = @_data.chomp
|
448
448
|
delim = " :: "
|
449
449
|
_out "<br><center><table width=90% cellpadding=5>"
|
450
450
|
lines = _body(true)
|
data/lib/userapi.rb
CHANGED
@@ -19,6 +19,7 @@ module Livetext::UserAPI
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def _args
|
22
|
+
@_args = @_data.chomp.split
|
22
23
|
if block_given?
|
23
24
|
@_args.each {|arg| yield arg }
|
24
25
|
else
|
@@ -80,6 +81,8 @@ module Livetext::UserAPI
|
|
80
81
|
lines << @line
|
81
82
|
end
|
82
83
|
|
84
|
+
raise "Expected .end, found end of file" unless _end?(@line)
|
85
|
+
|
83
86
|
_optional_blank_line
|
84
87
|
if block_given?
|
85
88
|
lines.each {|line| yield line } # FIXME what about $. ?
|
@@ -87,14 +90,13 @@ module Livetext::UserAPI
|
|
87
90
|
lines
|
88
91
|
end
|
89
92
|
rescue => err
|
90
|
-
str = "Fake error? 'Expecting .end, found end of file'\n"
|
91
93
|
str << err.inspect + "\n"
|
92
94
|
str << err.backtrace.map {|x| " " + x }.join("\n")
|
93
95
|
_error!(str)
|
94
96
|
end
|
95
97
|
|
96
98
|
def _body_text(raw=false)
|
97
|
-
|
99
|
+
_raw_body.join("\n")
|
98
100
|
end
|
99
101
|
|
100
102
|
def _raw_body!
|
data/plugin/bookish.rb
CHANGED
@@ -88,7 +88,8 @@ def chapter
|
|
88
88
|
@sec = @sec2 = 0
|
89
89
|
title = @_data.split(" ",2)[1]
|
90
90
|
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
91
|
-
|
91
|
+
@_data = _slug(title)
|
92
|
+
next_output
|
92
93
|
_out "<title>#{@chapter}. #{title}</title>"
|
93
94
|
_out <<-HTML
|
94
95
|
<h2>Chapter #{@chapter}</h1>
|
@@ -103,7 +104,8 @@ def chapterN
|
|
103
104
|
title = @_data # .split(" ",2)[1]
|
104
105
|
_errout("Chapter #@chapter: #{title}")
|
105
106
|
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
106
|
-
|
107
|
+
@_data = _slug(title)
|
108
|
+
next_output
|
107
109
|
_out "<title>#{@chapter}. #{title}</title>"
|
108
110
|
_out <<-HTML
|
109
111
|
<h2>Chapter #{@chapter}</h1>
|
@@ -118,7 +120,8 @@ def sec
|
|
118
120
|
@section = "#@chapter.#@sec"
|
119
121
|
# _errout("section #@section")
|
120
122
|
@toc << "#{_nbsp(3)}<b>#@section</b> #@_data<br>"
|
121
|
-
|
123
|
+
@_data = _slug(@_data)
|
124
|
+
next_output
|
122
125
|
_out "<h3>#@section #{@_data}</h3>\n"
|
123
126
|
rescue => err
|
124
127
|
STDERR.puts "#{err}\n#{err.backtrace}"
|
@@ -130,7 +133,8 @@ def subsec
|
|
130
133
|
@subsec = "#@chapter.#@sec.#@sec2"
|
131
134
|
@toc << "#{_nbsp(6)}<b>#@subsec</b> #@_data<br>"
|
132
135
|
# _errout("section #@subsec")
|
133
|
-
|
136
|
+
@_data = _slug(@_data)
|
137
|
+
next_output
|
134
138
|
_out "<h3>#@subsec #{@_data}</h3>\n"
|
135
139
|
end
|
136
140
|
|
@@ -246,12 +250,12 @@ end
|
|
246
250
|
def missing
|
247
251
|
@toc << "#{_nbsp(8)}<font color=red>TBD: #@_data</font><br>"
|
248
252
|
stuff = @_data.empty? ? "" : ": #@_data"
|
249
|
-
|
253
|
+
_out "<br><font color=red><i>[Material missing#{stuff}]</i></font><br>\n "
|
250
254
|
end
|
251
255
|
|
252
256
|
def TBC
|
253
257
|
@toc << "#{_nbsp(8)}<font color=red>To be continued...</font><br>"
|
254
|
-
|
258
|
+
_out "<br><font color=red><i>To be continued...</i></font><br>"
|
255
259
|
end
|
256
260
|
|
257
261
|
def note
|
@@ -0,0 +1 @@
|
|
1
|
+
Error: Illegal name 'to_s' (at source.lt3 line 5)
|
@@ -0,0 +1 @@
|
|
1
|
+
Error: Name 'foobar' is unknown
|
data/test/data/lines.txt
CHANGED
@@ -104,7 +104,7 @@ _This for example
|
|
104
104
|
|
105
105
|
Line starts with double underscore
|
106
106
|
__This, for example
|
107
|
-
<i>This
|
107
|
+
<i>This</i>, for example
|
108
108
|
|
109
109
|
Line has embedded underscores
|
110
110
|
This has some_embedded_underscores
|
@@ -116,5 +116,5 @@ This has some_escaped_underscores
|
|
116
116
|
|
117
117
|
Doubled underscore, midline
|
118
118
|
This is __doubled, it seems
|
119
|
-
This is <i>doubled
|
119
|
+
This is <i>doubled</i>, it seems
|
120
120
|
|
data/test/test.rb
CHANGED
@@ -71,12 +71,44 @@ class TestingLivetext < MiniTest::Test
|
|
71
71
|
Dir.chdir(base) do
|
72
72
|
src, out, exp = "source.lt3", "/tmp/#{base}--actual-output.txt", "expected-output.txt"
|
73
73
|
err, erx = "/tmp/#{base}--actual-error.txt", "expected-error.txt"
|
74
|
+
|
75
|
+
# New features - match out/err by regex
|
76
|
+
expout_regex = "expected-out-line1match.txt"
|
77
|
+
experr_regex = "expected-err-line1match.txt"
|
78
|
+
|
74
79
|
cmd = "livetext #{src} >#{out} 2>#{err}"
|
75
80
|
system(cmd)
|
76
|
-
output, expected, errors, errexp = File.read(out), File.read(exp), File.read(err), File.read(erx)
|
77
81
|
|
78
|
-
|
79
|
-
|
82
|
+
output = File.read(out)
|
83
|
+
errors = File.read(err)
|
84
|
+
rx_out = rx_err = nil
|
85
|
+
|
86
|
+
if File.exist?(expout_regex)
|
87
|
+
rx_out = /#{Regexp.escape(File.read(expout_regex).chomp)}/
|
88
|
+
expected = "(match test)"
|
89
|
+
else
|
90
|
+
expected = File.read(exp)
|
91
|
+
end
|
92
|
+
|
93
|
+
if File.exist?(experr_regex)
|
94
|
+
rx_err = /#{Regexp.escape(File.read(experr_regex).chomp)}/
|
95
|
+
errexp = "(match test)"
|
96
|
+
else
|
97
|
+
errexp = File.read(erx)
|
98
|
+
end
|
99
|
+
|
100
|
+
if rx_out
|
101
|
+
out_ok = output =~ rx_out
|
102
|
+
else
|
103
|
+
out_ok = output == expected
|
104
|
+
end
|
105
|
+
|
106
|
+
if rx_err
|
107
|
+
err_ok = errors =~ rx_err
|
108
|
+
else
|
109
|
+
err_ok = errors == errexp
|
110
|
+
end
|
111
|
+
|
80
112
|
nout = output.split("\n").size
|
81
113
|
nexp = expected.split("\n").size
|
82
114
|
bad_out = "--- Expected (#{nexp} lines): \n#{green(expected)}\n--- Output (#{nout} lines): \n#{red(output)}\n"
|
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.03
|
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-01-
|
11
|
+
date: 2020-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|
@@ -57,9 +57,11 @@ files:
|
|
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
|
+
- test/data/error_invalid_name/expected-err-line1match.txt
|
60
61
|
- test/data/error_invalid_name/expected-error.txt
|
61
62
|
- test/data/error_invalid_name/expected-output.txt
|
62
63
|
- test/data/error_invalid_name/source.lt3
|
64
|
+
- test/data/error_line_num/expected-err-line1match.txt
|
63
65
|
- test/data/error_line_num/expected-error.txt
|
64
66
|
- test/data/error_line_num/expected-output.txt
|
65
67
|
- test/data/error_line_num/source.lt3
|