livetext 0.8.97 → 0.8.98
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/livetext.rb +78 -51
- data/lib/standard.rb +1 -1
- data/test/data/block_comment/source.lt3 +2 -2
- data/test/data/copy_is_raw/source.lt3 +1 -1
- data/test/data/def_method/source.lt3 +2 -2
- data/test/data/simple_vars/source.lt3 +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00f683f16256558d0502dbc0a5a9011579bdfead42ad47f917a625ba3a7797bf
|
4
|
+
data.tar.gz: d4d83f4c157fa9f0db83adb1d98a03b87f810e4c5ee7b38fc554d926cce8cfac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbc69eef5f3b013c94c3a9bc424ca811f78bb656c2f63328b065f1ccbb9e6ad1f138dde746ab11c71ae0f459ebc52a0c5b64f4831ac8043357e01b6b30147b26
|
7
|
+
data.tar.gz: d84a5d9b0c177e70163574208593248d1e4c87e252101a6a4e011e8b26369b0ddee8ca44eef3fa4c8beed0feb3581cd67570bf675305cb7a321606d03b3d2c98
|
data/lib/livetext.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Livetext
|
2
|
-
VERSION = "0.8.
|
2
|
+
VERSION = "0.8.98"
|
3
3
|
Path = File.expand_path(File.join(File.dirname(__FILE__)))
|
4
4
|
end
|
5
5
|
|
@@ -52,6 +52,28 @@ class Livetext
|
|
52
52
|
@indentation = [0]
|
53
53
|
end
|
54
54
|
|
55
|
+
def _parse_colon_args(args, hash) # really belongs in livetext
|
56
|
+
h2 = hash.dup
|
57
|
+
e = args.each
|
58
|
+
loop do
|
59
|
+
arg = e.next.chop.to_sym
|
60
|
+
raise "_parse_args: #{arg} is unknown" unless hash.keys.include?(arg)
|
61
|
+
h2[arg] = e.next
|
62
|
+
end
|
63
|
+
h2 = h2.reject {|k,v| v.nil? }
|
64
|
+
h2.each_pair {|k, v| raise "#{k} has no value" if v.empty? }
|
65
|
+
h2
|
66
|
+
end
|
67
|
+
|
68
|
+
def _get_arg(name, args) # really belongs in livetext
|
69
|
+
raise "(#{name}) Expected an array" unless args.is_a? Array
|
70
|
+
raise "(#{name}) Expected an arg" if args.empty?
|
71
|
+
raise "(#{name}) Too many args: #{args.inspect}" if args.size > 1
|
72
|
+
val = args[0]
|
73
|
+
raise "Expected an argument '#{name}'" if val.nil?
|
74
|
+
val
|
75
|
+
end
|
76
|
+
|
55
77
|
def mixin(mod)
|
56
78
|
@main._mixin(mod)
|
57
79
|
end
|
@@ -89,16 +111,19 @@ class Livetext
|
|
89
111
|
end
|
90
112
|
end
|
91
113
|
|
92
|
-
def
|
114
|
+
def transform(text)
|
93
115
|
_setfile!("(string)")
|
94
116
|
enum = text.each_line
|
95
|
-
front = text.match(/.*?\n/).to_a.first.chomp
|
117
|
+
front = text.match(/.*?\n/).to_a.first.chomp rescue ""
|
96
118
|
@main.source(enum, "STDIN: '#{front}...'", 0)
|
97
119
|
loop do
|
98
120
|
line = @main.nextline
|
99
121
|
break if line.nil?
|
100
122
|
process_line(line)
|
101
123
|
end
|
124
|
+
result = @body
|
125
|
+
@body = ""
|
126
|
+
result
|
102
127
|
end
|
103
128
|
|
104
129
|
# EXPERIMENTAL and incomplete
|
@@ -107,6 +132,7 @@ class Livetext
|
|
107
132
|
when file && text.nil?
|
108
133
|
xform_file(file)
|
109
134
|
when file.nil? && text
|
135
|
+
transform(text)
|
110
136
|
when file.nil? && text.nil?
|
111
137
|
raise "Must specify file or text"
|
112
138
|
when file && text
|
@@ -122,43 +148,43 @@ class Livetext
|
|
122
148
|
self.body
|
123
149
|
end
|
124
150
|
|
125
|
-
def transform(text)
|
126
|
-
_setfile!("(string)")
|
127
|
-
@output = ::Livetext.output
|
128
|
-
enum = text.each_line
|
129
|
-
front = text.match(/.*?\n/).to_a.first.chomp rescue "..."
|
130
|
-
@main.source(enum, "STDIN: '#{front}...'", 0)
|
131
|
-
loop do
|
132
|
-
line = @main.nextline
|
133
|
-
break if line.nil?
|
134
|
-
process_line(line) # transform_line ???
|
135
|
-
end
|
136
|
-
@body
|
137
|
-
end
|
151
|
+
# def transform(text)
|
152
|
+
# _setfile!("(string)")
|
153
|
+
# @output = ::Livetext.output
|
154
|
+
# enum = text.each_line
|
155
|
+
# front = text.match(/.*?\n/).to_a.first.chomp rescue "..."
|
156
|
+
# @main.source(enum, "STDIN: '#{front}...'", 0)
|
157
|
+
# loop do
|
158
|
+
# line = @main.nextline
|
159
|
+
# break if line.nil?
|
160
|
+
# process_line(line) # transform_line ???
|
161
|
+
# end
|
162
|
+
# @body
|
163
|
+
# end
|
138
164
|
|
139
165
|
## FIXME don't need process *and* process_text
|
140
166
|
|
141
|
-
def process_text(text)
|
142
|
-
_setfile!("(string)")
|
143
|
-
text = text.split("\n") if text.is_a? String
|
144
|
-
enum = text.each
|
145
|
-
@backtrace = false
|
146
|
-
front = text[0].chomp
|
147
|
-
@main.source(enum, "(text): '#{front}...'", 0)
|
148
|
-
loop do
|
149
|
-
line = @main.nextline
|
150
|
-
break if line.nil?
|
151
|
-
process_line(line)
|
152
|
-
end
|
153
|
-
val = @main.finalize if @main.respond_to? :finalize
|
154
|
-
val
|
155
|
-
rescue => err
|
156
|
-
puts "process_text: err = #{err}"
|
157
|
-
|
158
|
-
puts @body
|
159
|
-
@body = ""
|
160
|
-
return @body
|
161
|
-
end
|
167
|
+
# def process_text(text)
|
168
|
+
# _setfile!("(string)")
|
169
|
+
# text = text.split("\n") if text.is_a? String
|
170
|
+
# enum = text.each
|
171
|
+
# @backtrace = false
|
172
|
+
# front = text[0].chomp
|
173
|
+
# @main.source(enum, "(text): '#{front}...'", 0)
|
174
|
+
# loop do
|
175
|
+
# line = @main.nextline
|
176
|
+
# break if line.nil?
|
177
|
+
# process_line(line)
|
178
|
+
# end
|
179
|
+
# val = @main.finalize if @main.respond_to? :finalize
|
180
|
+
# val
|
181
|
+
# rescue => err
|
182
|
+
# puts "process_text: err = #{err}"
|
183
|
+
## puts err.backtrace.join("\n")
|
184
|
+
# puts @body
|
185
|
+
# @body = ""
|
186
|
+
# return @body
|
187
|
+
# end
|
162
188
|
|
163
189
|
## FIXME process_file[!] should call process[_text]
|
164
190
|
|
@@ -181,20 +207,20 @@ class Livetext
|
|
181
207
|
@body = ""
|
182
208
|
end
|
183
209
|
|
184
|
-
def process_file!(fname, backtrace=false)
|
185
|
-
_setfile(fname)
|
186
|
-
raise "No such file '#{fname}' to process" unless File.exist?(fname)
|
187
|
-
@main.output = StringIO.new
|
188
|
-
enum = File.readlines(fname).each
|
189
|
-
@backtrace = backtrace
|
190
|
-
@main.source(enum, fname, 0)
|
191
|
-
loop do
|
192
|
-
line = @main.nextline
|
193
|
-
break if line.nil?
|
194
|
-
process_line(line)
|
195
|
-
end
|
196
|
-
@main.finalize if @main.respond_to? :finalize
|
197
|
-
end
|
210
|
+
# def process_file!(fname, backtrace=false)
|
211
|
+
# _setfile(fname)
|
212
|
+
# raise "No such file '#{fname}' to process" unless File.exist?(fname)
|
213
|
+
# @main.output = StringIO.new
|
214
|
+
# enum = File.readlines(fname).each
|
215
|
+
# @backtrace = backtrace
|
216
|
+
# @main.source(enum, fname, 0)
|
217
|
+
# loop do
|
218
|
+
# line = @main.nextline
|
219
|
+
# break if line.nil?
|
220
|
+
# process_line(line)
|
221
|
+
# end
|
222
|
+
# @main.finalize if @main.respond_to? :finalize
|
223
|
+
# end
|
198
224
|
|
199
225
|
def handle_scomment(line)
|
200
226
|
end
|
@@ -215,6 +241,7 @@ class Livetext
|
|
215
241
|
|
216
242
|
def handle_dotcmd(line, indent = 0)
|
217
243
|
indent = @indentation.last # top of stack
|
244
|
+
line = line.sub(/# .*$/, "")
|
218
245
|
name = _get_name(line).to_sym
|
219
246
|
result = nil
|
220
247
|
if @main.respond_to?(name)
|
data/lib/standard.rb
CHANGED
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.8.
|
4
|
+
version: 0.8.98
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|