livetext 0.9.03 → 0.9.04
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 +30 -79
- data/lib/standard.rb +5 -0
- data/lib/userapi.rb +4 -0
- 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: 953abc29d2faf2ff8d8ae5e1c7e4033efbc1dbd57b69144634b3287b71424b77
|
4
|
+
data.tar.gz: 3086f96e6226ada9787338b26d08950667e44b65029e5bc5d80bc4c72b50b7bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8a49669fc15a3a5aad4151cf190f8d527edc1349fb30a7abfdf9141648f32bbb56d507a6f7ccfc983c9335d7f2df037a9dbf30325e27c02e1d68590ffb1c2bd
|
7
|
+
data.tar.gz: 9e4c56a912009b7332fd9702c1fd7a8a27fdbb9c639d0ae62ec4adabd31e8e70554a7ab4645ba6595a138712c0dfcb47430805d69530f26e5d9479dd90148b38
|
data/lib/livetext.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Livetext
|
2
|
-
VERSION = "0.9.
|
2
|
+
VERSION = "0.9.04"
|
3
3
|
Path = File.expand_path(File.join(File.dirname(__FILE__)))
|
4
4
|
end
|
5
5
|
|
@@ -31,6 +31,10 @@ class Livetext
|
|
31
31
|
attr_accessor :output # both bad solutions?
|
32
32
|
end
|
33
33
|
|
34
|
+
def vars
|
35
|
+
Livetext::Vars.dup
|
36
|
+
end
|
37
|
+
|
34
38
|
def self.customize(mix: [], call: [], vars: {})
|
35
39
|
obj = self.new
|
36
40
|
mix = Array(mix)
|
@@ -50,10 +54,6 @@ class Livetext
|
|
50
54
|
self
|
51
55
|
end
|
52
56
|
|
53
|
-
def vars
|
54
|
-
Livetext::Vars.dup
|
55
|
-
end
|
56
|
-
|
57
57
|
Space = " "
|
58
58
|
Sigil = "." # Can't change yet
|
59
59
|
|
@@ -73,29 +73,30 @@ class Livetext
|
|
73
73
|
@body = ""
|
74
74
|
@main = Processor.new(self, output)
|
75
75
|
@indentation = [0]
|
76
|
+
@_vars = Livetext::Vars
|
76
77
|
end
|
77
78
|
|
78
|
-
def _parse_colon_args(args, hash) # really belongs in livetext
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
def _parse_colon_args(args, hash) # really belongs in livetext
|
80
|
+
h2 = hash.dup
|
81
|
+
e = args.each
|
82
|
+
loop do
|
83
|
+
arg = e.next.chop.to_sym
|
84
|
+
raise "_parse_args: #{arg} is unknown" unless hash.keys.include?(arg)
|
85
|
+
h2[arg] = e.next
|
86
|
+
end
|
87
|
+
h2 = h2.reject {|k,v| v.nil? }
|
88
|
+
h2.each_pair {|k, v| raise "#{k} has no value" if v.empty? }
|
89
|
+
h2
|
85
90
|
end
|
86
|
-
h2 = h2.reject {|k,v| v.nil? }
|
87
|
-
h2.each_pair {|k, v| raise "#{k} has no value" if v.empty? }
|
88
|
-
h2
|
89
|
-
end
|
90
91
|
|
91
|
-
def _get_arg(name, args) # really belongs in livetext
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
end
|
92
|
+
def _get_arg(name, args) # really belongs in livetext
|
93
|
+
raise "(#{name}) Expected an array" unless args.is_a? Array
|
94
|
+
raise "(#{name}) Expected an arg" if args.empty?
|
95
|
+
raise "(#{name}) Too many args: #{args.inspect}" if args.size > 1
|
96
|
+
val = args[0]
|
97
|
+
raise "Expected an argument '#{name}'" if val.nil?
|
98
|
+
val
|
99
|
+
end
|
99
100
|
|
100
101
|
def mixin(mod)
|
101
102
|
@main._mixin(mod)
|
@@ -105,6 +106,8 @@ end
|
|
105
106
|
str, sym = var.to_s, var.to_sym
|
106
107
|
Livetext::Vars[str] = val
|
107
108
|
Livetext::Vars[sym] = val
|
109
|
+
@_vars[str] = val
|
110
|
+
@_vars[sym] = val
|
108
111
|
end
|
109
112
|
|
110
113
|
def _setfile(file)
|
@@ -166,50 +169,13 @@ end
|
|
166
169
|
self.body
|
167
170
|
end
|
168
171
|
|
169
|
-
def xform_file(file, vars: {})
|
172
|
+
def xform_file(file) # , vars: {})
|
170
173
|
Livetext::Vars.replace(vars) unless vars.nil?
|
174
|
+
@_vars.replace(vars) unless vars.nil?
|
171
175
|
self.process_file(file)
|
172
176
|
self.body
|
173
177
|
end
|
174
178
|
|
175
|
-
# def transform(text)
|
176
|
-
# _setfile!("(string)")
|
177
|
-
# @output = ::Livetext.output
|
178
|
-
# enum = text.each_line
|
179
|
-
# front = text.match(/.*?\n/).to_a.first.chomp rescue "..."
|
180
|
-
# @main.source(enum, "STDIN: '#{front}...'", 0)
|
181
|
-
# loop do
|
182
|
-
# line = @main.nextline
|
183
|
-
# break if line.nil?
|
184
|
-
# process_line(line) # transform_line ???
|
185
|
-
# end
|
186
|
-
# @body
|
187
|
-
# end
|
188
|
-
|
189
|
-
## FIXME don't need process *and* process_text
|
190
|
-
|
191
|
-
# def process_text(text)
|
192
|
-
# _setfile!("(string)")
|
193
|
-
# text = text.split("\n") if text.is_a? String
|
194
|
-
# enum = text.each
|
195
|
-
# @backtrace = false
|
196
|
-
# front = text[0].chomp
|
197
|
-
# @main.source(enum, "(text): '#{front}...'", 0)
|
198
|
-
# loop do
|
199
|
-
# line = @main.nextline
|
200
|
-
# break if line.nil?
|
201
|
-
# process_line(line)
|
202
|
-
# end
|
203
|
-
# val = @main.finalize if @main.respond_to? :finalize
|
204
|
-
# val
|
205
|
-
# rescue => err
|
206
|
-
# puts "process_text: err = #{err}"
|
207
|
-
## puts err.backtrace.join("\n")
|
208
|
-
# puts @body
|
209
|
-
# @body = ""
|
210
|
-
# return @body
|
211
|
-
# end
|
212
|
-
|
213
179
|
## FIXME process_file[!] should call process[_text]
|
214
180
|
|
215
181
|
def process_file(fname, btrace=false)
|
@@ -231,21 +197,6 @@ end
|
|
231
197
|
@body = ""
|
232
198
|
end
|
233
199
|
|
234
|
-
# def process_file!(fname, backtrace=false)
|
235
|
-
# _setfile(fname)
|
236
|
-
# raise "No such file '#{fname}' to process" unless File.exist?(fname)
|
237
|
-
# @main.output = StringIO.new
|
238
|
-
# enum = File.readlines(fname).each
|
239
|
-
# @backtrace = backtrace
|
240
|
-
# @main.source(enum, fname, 0)
|
241
|
-
# loop do
|
242
|
-
# line = @main.nextline
|
243
|
-
# break if line.nil?
|
244
|
-
# process_line(line)
|
245
|
-
# end
|
246
|
-
# @main.finalize if @main.respond_to? :finalize
|
247
|
-
# end
|
248
|
-
|
249
200
|
def handle_scomment(line)
|
250
201
|
end
|
251
202
|
|
@@ -265,7 +216,7 @@ end
|
|
265
216
|
|
266
217
|
def handle_dotcmd(line, indent = 0)
|
267
218
|
indent = @indentation.last # top of stack
|
268
|
-
line = line.sub(/# .*$/, "")
|
219
|
+
line = line.sub(/# .*$/, "")
|
269
220
|
name = _get_name(line).to_sym
|
270
221
|
result = nil
|
271
222
|
if @main.respond_to?(name)
|
data/lib/standard.rb
CHANGED
data/lib/userapi.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.9.
|
4
|
+
version: 0.9.04
|
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-
|
11
|
+
date: 2020-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|