runeblog 0.2.99 → 0.3.05
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/bin/blog +24 -18
- data/data/features.txt +18 -0
- data/data/global.lt3 +6 -24
- data/data/universal.lt3 +2 -5
- data/empty_view/remote/banner/navbar/GIT_IS_DUMB +0 -0
- data/empty_view/settings/features.txt +18 -0
- data/empty_view/settings/publish.txt +5 -0
- data/empty_view/settings/recent.txt +11 -0
- data/empty_view/settings/view.txt +4 -0
- data/empty_view/themes/standard/banner/top.lt3 +2 -2
- data/lib/helpers-blog.rb +26 -20
- data/lib/helpers-repl.rb +3 -41
- data/lib/liveblog.rb +11 -11
- data/lib/lowlevel.rb +9 -0
- data/lib/publish.rb +2 -0
- data/lib/repl.rb +104 -177
- data/lib/runeblog.rb +106 -48
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +6 -0
- data/runeblog.gemspec +1 -1
- data/test/austin.rb +15 -18
- metadata +12 -8
- data/empty_view/themes/standard/global.lt3 +0 -32
- data/empty_view/themes/standard/recent.txt +0 -6
data/lib/lowlevel.rb
CHANGED
data/lib/publish.rb
CHANGED
@@ -16,6 +16,8 @@ class RuneBlog::Publishing
|
|
16
16
|
@blog = RuneBlog.blog
|
17
17
|
dir = @blog.root/:views/view/"themes/standard/"
|
18
18
|
gfile = dir/"global.lt3"
|
19
|
+
return unless File.exist?(gfile) # FIXME Hackish as hell
|
20
|
+
|
19
21
|
live = get_live_vars(gfile)
|
20
22
|
@user = live.vars["publish.user"]
|
21
23
|
@server = live.vars["publish.server"]
|
data/lib/repl.rb
CHANGED
@@ -14,44 +14,51 @@ module RuneBlog::REPL
|
|
14
14
|
result = system!("#{@blog.editor} #{file} #{params}")
|
15
15
|
raise EditorProblem(file) unless result
|
16
16
|
STDSCR.restback
|
17
|
-
|
17
|
+
cmd_clear
|
18
18
|
end
|
19
19
|
|
20
|
-
def cmd_quit
|
21
|
-
|
20
|
+
def cmd_quit
|
21
|
+
STDSCR.rows.times { puts " "*(STDSCR.cols-1) }
|
22
|
+
# FIXME please?
|
23
|
+
sleep 0.1
|
24
|
+
STDSCR.clear
|
25
|
+
sleep 0.1
|
22
26
|
RubyText.stop
|
23
27
|
sleep 0.1
|
24
|
-
|
28
|
+
system("clear")
|
25
29
|
sleep 0.1
|
26
30
|
exit
|
27
31
|
end
|
28
32
|
|
29
|
-
def cmd_clear
|
30
|
-
|
33
|
+
def cmd_clear
|
34
|
+
STDSCR.rows.times { puts " "*(STDSCR.cols-1) }
|
35
|
+
sleep 0.1
|
31
36
|
STDSCR.clear
|
32
37
|
end
|
33
38
|
|
34
|
-
def cmd_version
|
35
|
-
|
36
|
-
output RuneBlog::VERSION
|
37
|
-
puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red) unless testing
|
38
|
-
@out
|
39
|
+
def cmd_version
|
40
|
+
puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red)
|
39
41
|
end
|
40
42
|
|
41
|
-
def cmd_config
|
42
|
-
hash = {"
|
43
|
-
"
|
44
|
-
"
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"
|
54
|
-
"
|
43
|
+
def cmd_config
|
44
|
+
hash = {"Global configuration" => "global.lt3",
|
45
|
+
" View-specific variables" => "../../settings/view.txt",
|
46
|
+
" Recent posts" => "../../settings/recent.txt",
|
47
|
+
" Publishing vars" => "../../settings/publish.txt",
|
48
|
+
" Config for reddit" => "../../config/reddit/credentials.txt",
|
49
|
+
" Config for Facebook" => "../../config/facebook/credentials.txt",
|
50
|
+
" Config for Twitter" => "../../config/twitter/credentials.txt",
|
51
|
+
"View generator" => "blog/generate.lt3",
|
52
|
+
" Banner: Description" => "blog/banner.lt3",
|
53
|
+
" Banner: Text portion" => "banner/top.lt3",
|
54
|
+
" HEAD info for view" => "blog/head.lt3",
|
55
|
+
" User-edited detail for view" => "blog/index.lt3",
|
56
|
+
" Generator for recent-posts entry" => "blog/post_entry.lt3",
|
57
|
+
"Generator for a post" => "post/generate.lt3",
|
58
|
+
" HEAD info for post" => "post/head.lt3",
|
59
|
+
" Content for post" => "post/index.lt3",
|
60
|
+
"Global CSS" => "etc/blog.css.lt3",
|
61
|
+
"External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3"
|
55
62
|
}
|
56
63
|
|
57
64
|
dir = @blog.view.dir/"themes/standard/"
|
@@ -59,24 +66,24 @@ module RuneBlog::REPL
|
|
59
66
|
edit_file(dir/target)
|
60
67
|
end
|
61
68
|
|
62
|
-
def cmd_manage(arg
|
69
|
+
def cmd_manage(arg)
|
63
70
|
case arg
|
64
|
-
when "pages"; _manage_pages(nil
|
65
|
-
when "links"; _manage_links(nil
|
66
|
-
when "navbar"; _manage_navbar(nil
|
67
|
-
# when "pinned"; _manage_pinned(nil
|
71
|
+
when "pages"; _manage_pages(nil)
|
72
|
+
when "links"; _manage_links(nil)
|
73
|
+
when "navbar"; _manage_navbar(nil)
|
74
|
+
# when "pinned"; _manage_pinned(nil) # ditch this??
|
68
75
|
else
|
69
76
|
puts "#{arg} is unknown"
|
70
77
|
end
|
71
78
|
end
|
72
79
|
|
73
|
-
def _manage_pinned
|
80
|
+
def _manage_pinned # cloned from manage_links
|
74
81
|
dir = @blog.view.dir/"themes/standard/widgets/pinned"
|
75
82
|
data = dir/"list.data"
|
76
83
|
edit_file(data)
|
77
84
|
end
|
78
85
|
|
79
|
-
def _manage_navbar
|
86
|
+
def _manage_navbar # cloned from manage_pages
|
80
87
|
dir = @blog.view.dir/"themes/standard/banner/navbar"
|
81
88
|
files = Dir.entries(dir) - %w[. .. navbar.lt3]
|
82
89
|
main_file = "[ navbar.lt3 ]"
|
@@ -105,13 +112,13 @@ module RuneBlog::REPL
|
|
105
112
|
end
|
106
113
|
end
|
107
114
|
|
108
|
-
def _manage_links
|
115
|
+
def _manage_links
|
109
116
|
dir = @blog.view.dir/"themes/standard/widgets/links"
|
110
117
|
data = dir/"list.data"
|
111
118
|
edit_file(data)
|
112
119
|
end
|
113
120
|
|
114
|
-
def _manage_pages(arg
|
121
|
+
def _manage_pages(arg)
|
115
122
|
dir = @blog.view.dir/"themes/standard/widgets/pages"
|
116
123
|
# Assume child files already generated (and list.data??)
|
117
124
|
data = dir/"list.data"
|
@@ -146,73 +153,53 @@ module RuneBlog::REPL
|
|
146
153
|
end
|
147
154
|
end
|
148
155
|
|
149
|
-
def cmd_import
|
156
|
+
def cmd_import
|
150
157
|
files = ask("\n File(s) = ")
|
151
158
|
system!("cp #{files} #{@blog.root}/views/#{@blog.view.name}/assets/")
|
152
159
|
end
|
153
160
|
|
154
|
-
def cmd_browse
|
155
|
-
reset_output
|
161
|
+
def cmd_browse
|
156
162
|
url = @blog.view.publisher.url
|
157
163
|
if url.nil?
|
158
|
-
output! "Publish first."
|
159
164
|
puts "\n Publish first."
|
160
|
-
return
|
165
|
+
return
|
161
166
|
end
|
162
167
|
result = system!("open '#{url}'")
|
163
168
|
raise CantOpen(url) unless result
|
164
|
-
return
|
169
|
+
return
|
165
170
|
end
|
166
171
|
|
167
|
-
def cmd_preview
|
168
|
-
reset_output
|
172
|
+
def cmd_preview
|
169
173
|
local = @blog.view.local_index
|
170
174
|
unless File.exist?(local)
|
171
175
|
puts "\n No index. Rebuilding..."
|
172
|
-
cmd_rebuild
|
176
|
+
cmd_rebuild
|
173
177
|
end
|
174
178
|
result = system!("open #{local}")
|
175
179
|
raise CantOpen(local) unless result
|
176
|
-
@out
|
177
180
|
rescue => err
|
178
|
-
|
179
|
-
File.open(out, "w") do |f|
|
180
|
-
f.puts err
|
181
|
-
f.puts err.backtrace.join("\n")
|
182
|
-
end
|
183
|
-
puts "Error: See #{out}"
|
181
|
+
_tmp_error(err)
|
184
182
|
end
|
185
183
|
|
186
|
-
def cmd_publish
|
184
|
+
def cmd_publish
|
187
185
|
# Future Hal says please refactor this
|
188
|
-
puts
|
189
|
-
reset_output
|
186
|
+
puts
|
190
187
|
unless @blog.view.can_publish?
|
191
188
|
msg = "Can't publish... see global.lt3"
|
192
|
-
puts msg
|
193
|
-
|
194
|
-
return @out
|
189
|
+
puts msg
|
190
|
+
return
|
195
191
|
end
|
196
192
|
|
197
193
|
ret = RubyText.spinner(label: " Publishing... ") do
|
198
194
|
@blog.view.publisher.publish
|
199
195
|
end
|
200
|
-
return
|
196
|
+
return unless ret
|
201
197
|
|
202
198
|
vdir = @blog.view.dir
|
203
199
|
dump("fix this later", "#{vdir}/last_published")
|
204
|
-
|
205
|
-
puts " ...finished.\n "
|
206
|
-
output! "...finished.\n"
|
207
|
-
end
|
208
|
-
return @out
|
200
|
+
puts " ...finished.\n " unless ret
|
209
201
|
rescue => err
|
210
|
-
|
211
|
-
File.open(out, "w") do |f|
|
212
|
-
f.puts err
|
213
|
-
f.puts err.backtrace.join("\n")
|
214
|
-
end
|
215
|
-
puts "Error: See #{out}"
|
202
|
+
_tmp_error(err)
|
216
203
|
end
|
217
204
|
|
218
205
|
def fresh?(src, dst)
|
@@ -233,49 +220,37 @@ module RuneBlog::REPL
|
|
233
220
|
puts
|
234
221
|
end
|
235
222
|
|
236
|
-
def cmd_rebuild
|
223
|
+
def cmd_rebuild
|
237
224
|
debug "Starting cmd_rebuild..."
|
238
|
-
|
239
|
-
puts unless testing
|
225
|
+
puts
|
240
226
|
@blog.generate_view(@blog.view)
|
241
227
|
@blog.generate_index(@blog.view)
|
242
228
|
regen_posts
|
243
|
-
@out
|
244
229
|
rescue => err
|
245
|
-
|
246
|
-
File.open(out, "w") do |f|
|
247
|
-
f.puts err
|
248
|
-
f.puts err.backtrace.join("\n")
|
249
|
-
end
|
250
|
-
puts "Error: See #{out}"
|
230
|
+
_tmp_error(err)
|
251
231
|
end
|
252
232
|
|
253
|
-
def cmd_change_view(arg
|
254
|
-
reset_output
|
233
|
+
def cmd_change_view(arg)
|
255
234
|
# Simplify this
|
256
235
|
if arg.nil?
|
257
236
|
viewnames = @blog.views.map {|x| x.name }
|
258
237
|
n = viewnames.find_index(@blog.view.name)
|
259
238
|
name = @blog.view.name
|
260
239
|
# TODO: Add view description
|
261
|
-
k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n)
|
240
|
+
k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n)
|
262
241
|
return if name.nil?
|
263
242
|
@blog.view = name
|
264
|
-
|
265
|
-
|
266
|
-
return @out
|
243
|
+
puts "\n ", fx(name, :bold), "\n"
|
244
|
+
return
|
267
245
|
else
|
268
246
|
if @blog.view?(arg)
|
269
247
|
@blog.view = arg
|
270
|
-
|
271
|
-
puts "\n ", fx(arg, :bold), "\n" unless testing
|
248
|
+
puts "\n ", fx(arg, :bold), "\n"
|
272
249
|
end
|
273
250
|
end
|
274
|
-
return @out
|
275
251
|
end
|
276
252
|
|
277
|
-
def cmd_new_view(arg
|
278
|
-
reset_output
|
253
|
+
def cmd_new_view(arg)
|
279
254
|
if arg.nil?
|
280
255
|
arg = ask(fx("\nFilename: ", :bold))
|
281
256
|
puts
|
@@ -287,20 +262,13 @@ module RuneBlog::REPL
|
|
287
262
|
vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
|
288
263
|
edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
|
289
264
|
@blog.change_view(arg)
|
290
|
-
@out
|
291
265
|
rescue ViewAlreadyExists
|
292
266
|
puts 'Blog already exists'
|
293
267
|
rescue => err
|
294
|
-
|
295
|
-
File.open(out, "w") do |f|
|
296
|
-
f.puts err
|
297
|
-
f.puts err.backtrace.join("\n")
|
298
|
-
end
|
299
|
-
puts "Error: See #{out}"
|
268
|
+
_tmp_error(err)
|
300
269
|
end
|
301
270
|
|
302
|
-
def cmd_new_post
|
303
|
-
reset_output
|
271
|
+
def cmd_new_post
|
304
272
|
if @blog.views.empty?
|
305
273
|
puts "\n Create a view before creating the first post!\n "
|
306
274
|
return
|
@@ -308,15 +276,8 @@ module RuneBlog::REPL
|
|
308
276
|
title = ask("\nTitle: ")
|
309
277
|
puts
|
310
278
|
@blog.create_new_post(title)
|
311
|
-
# STDSCR.clear
|
312
|
-
@out
|
313
279
|
rescue => err
|
314
|
-
|
315
|
-
File.open(out, "w") do |f|
|
316
|
-
f.puts err
|
317
|
-
f.puts err.backtrace.join("\n")
|
318
|
-
end
|
319
|
-
puts "Error: See #{out}"
|
280
|
+
_tmp_error(err)
|
320
281
|
end
|
321
282
|
|
322
283
|
def _remove_post(arg, testing=false)
|
@@ -325,20 +286,16 @@ module RuneBlog::REPL
|
|
325
286
|
puts "Post #{id} not found" if result.nil?
|
326
287
|
end
|
327
288
|
|
328
|
-
def cmd_remove_post(arg
|
329
|
-
reset_output
|
289
|
+
def cmd_remove_post(arg)
|
330
290
|
args = arg.split
|
331
291
|
args.each do |x|
|
332
292
|
# FIXME
|
333
293
|
ret = _remove_post(x.to_i, false)
|
334
294
|
puts ret
|
335
|
-
output ret
|
336
295
|
end
|
337
|
-
@out
|
338
296
|
end
|
339
297
|
|
340
|
-
def cmd_edit_post(arg
|
341
|
-
reset_output
|
298
|
+
def cmd_edit_post(arg)
|
342
299
|
id = get_integer(arg)
|
343
300
|
# Simplify this
|
344
301
|
tag = "#{'%04d' % id}"
|
@@ -347,14 +304,12 @@ module RuneBlog::REPL
|
|
347
304
|
files = files.map {|f| File.basename(f) }
|
348
305
|
if files.size > 1
|
349
306
|
msg = "Multiple files: #{files}"
|
350
|
-
|
351
|
-
puts msg unless testing
|
307
|
+
puts msg
|
352
308
|
return [false, msg]
|
353
309
|
end
|
354
310
|
if files.empty?
|
355
311
|
msg = "\n Can't edit post #{id}"
|
356
|
-
|
357
|
-
puts msg unless testing
|
312
|
+
puts msg
|
358
313
|
return [false, msg]
|
359
314
|
end
|
360
315
|
|
@@ -364,48 +319,36 @@ module RuneBlog::REPL
|
|
364
319
|
result = edit_file(draft)
|
365
320
|
@blog.generate_post(draft)
|
366
321
|
rescue => err
|
367
|
-
|
368
|
-
File.open(out, "w") do |f|
|
369
|
-
f.puts err
|
370
|
-
f.puts err.backtrace.join("\n")
|
371
|
-
end
|
372
|
-
puts "Error: See #{out}"
|
322
|
+
_tmp_error(err)
|
373
323
|
end
|
374
324
|
|
375
|
-
def cmd_list_views
|
376
|
-
|
377
|
-
puts unless testing
|
325
|
+
def cmd_list_views
|
326
|
+
puts
|
378
327
|
@blog.views.each do |v|
|
379
328
|
v = v.to_s
|
380
329
|
v = fx(v, :bold) if v == @blog.view.name
|
381
|
-
output v + "\n"
|
382
330
|
# FIXME: next 3 lines are crufty as hell
|
383
|
-
lines = File.readlines(@blog.root/"views/#{v}/
|
384
|
-
lines = lines.select {|x| x =~ /^
|
331
|
+
lines = File.readlines(@blog.root/"views/#{v}/settings/view.txt")
|
332
|
+
lines = lines.select {|x| x =~ /^title / && x !~ /VIEW_/ }
|
385
333
|
title = lines.first.split(" ", 2)[1]
|
386
|
-
print " ", ('%15s' % v)
|
387
|
-
puts " ", fx(title, :black)
|
334
|
+
print " ", ('%15s' % v)
|
335
|
+
puts " ", fx(title, :black)
|
388
336
|
end
|
389
|
-
puts
|
390
|
-
# @out
|
337
|
+
puts
|
391
338
|
end
|
392
339
|
|
393
|
-
def cmd_list_posts
|
394
|
-
reset_output
|
340
|
+
def cmd_list_posts
|
395
341
|
posts = @blog.posts # current view
|
396
342
|
str = @blog.view.name + ":\n"
|
397
|
-
|
398
|
-
puts
|
399
|
-
puts " ", fx(str, :bold) unless testing
|
343
|
+
puts
|
344
|
+
puts " ", fx(str, :bold)
|
400
345
|
if posts.empty?
|
401
|
-
|
402
|
-
puts " No posts" unless testing
|
346
|
+
puts " No posts"
|
403
347
|
else
|
404
348
|
posts.each do |post|
|
405
|
-
outstr " #{colored_slug(post)}\n"
|
406
349
|
base = post.sub(/.lt3$/, "")
|
407
350
|
num, rest = base[0..3], base[4..-1]
|
408
|
-
puts " ", fx(num, Red), fx(rest, Blue)
|
351
|
+
puts " ", fx(num, Red), fx(rest, Blue)
|
409
352
|
draft = @blog.root/:drafts/post + ".lt3"
|
410
353
|
other = @blog._get_views(draft) - [@blog.view.to_s]
|
411
354
|
unless other.empty?
|
@@ -414,24 +357,20 @@ module RuneBlog::REPL
|
|
414
357
|
end
|
415
358
|
end
|
416
359
|
end
|
417
|
-
puts
|
418
|
-
@out
|
360
|
+
puts
|
419
361
|
end
|
420
362
|
|
421
|
-
def cmd_list_drafts
|
422
|
-
reset_output
|
363
|
+
def cmd_list_drafts
|
423
364
|
drafts = @blog.drafts # current view
|
424
365
|
if drafts.empty?
|
425
|
-
|
426
|
-
|
427
|
-
return @out
|
366
|
+
puts "\n No drafts\n "
|
367
|
+
return
|
428
368
|
else
|
429
|
-
puts
|
369
|
+
puts
|
430
370
|
drafts.each do |draft|
|
431
|
-
outstr " #{colored_slug(draft.sub(/.lt3$/, ""))}\n"
|
432
371
|
base = draft.sub(/.lt3$/, "")
|
433
372
|
num, rest = base[0..3], base[4..-1]
|
434
|
-
puts " ", fx(num, Red), fx(rest, Blue)
|
373
|
+
puts " ", fx(num, Red), fx(rest, Blue)
|
435
374
|
other = @blog._get_views(@blog.root/:drafts/draft) - [@blog.view.to_s]
|
436
375
|
unless other.empty?
|
437
376
|
print fx(" "*7 + "also in: ", :bold)
|
@@ -439,48 +378,40 @@ module RuneBlog::REPL
|
|
439
378
|
end
|
440
379
|
end
|
441
380
|
end
|
442
|
-
puts
|
443
|
-
@out
|
381
|
+
puts
|
444
382
|
end
|
445
383
|
|
446
|
-
def cmd_list_assets
|
447
|
-
reset_output
|
384
|
+
def cmd_list_assets
|
448
385
|
dir = @blog.view.dir + "/assets"
|
449
386
|
assets = Dir[dir + "/*"]
|
450
387
|
if assets.empty?
|
451
|
-
|
452
|
-
|
453
|
-
return @out
|
388
|
+
puts " No assets"
|
389
|
+
return
|
454
390
|
else
|
455
|
-
puts
|
391
|
+
puts
|
456
392
|
assets.each do |name|
|
457
393
|
asset = File.basename(name)
|
458
|
-
|
459
|
-
puts " ", fx(asset, Blue) unless testing
|
394
|
+
puts " ", fx(asset, Blue)
|
460
395
|
end
|
461
396
|
end
|
462
|
-
puts
|
463
|
-
@out
|
397
|
+
puts
|
464
398
|
end
|
465
399
|
|
466
|
-
def cmd_ssh
|
400
|
+
def cmd_ssh
|
467
401
|
pub = @blog.view.publisher
|
468
402
|
puts
|
469
403
|
system!("tputs clear; ssh #{pub.user}@#{pub.server}")
|
470
404
|
sleep 0.1
|
471
|
-
cmd_clear
|
405
|
+
cmd_clear
|
472
406
|
end
|
473
407
|
|
474
|
-
def cmd_INVALID(arg
|
475
|
-
reset_output "\n Command '#{arg}' was not understood."
|
408
|
+
def cmd_INVALID(arg)
|
476
409
|
print fx("\n Command ", :bold)
|
477
410
|
print fx(arg, Red, :bold)
|
478
411
|
puts fx(" was not understood.\n ", :bold)
|
479
|
-
@out
|
480
412
|
end
|
481
413
|
|
482
|
-
def cmd_legacy
|
483
|
-
# dir = ask("Dir = ")
|
414
|
+
def cmd_legacy
|
484
415
|
dir = "sources/computing"
|
485
416
|
puts "Importing from: #{dir}"
|
486
417
|
files = Dir[dir/"**"]
|
@@ -529,7 +460,7 @@ module RuneBlog::REPL
|
|
529
460
|
{Posts:} {Advanced:}
|
530
461
|
------------------------------------------- -------------------------------------------
|
531
462
|
{p, post} Create a new post {config} Edit various system files
|
532
|
-
{new post} Same as p, post
|
463
|
+
{new post} Same as p, post
|
533
464
|
{lsp, list posts} List posts in current view {preview} Look at current (local) view in browser
|
534
465
|
{lsd, list drafts} List all drafts (all views) {browse} Look at current (published) view in browser
|
535
466
|
{delete ID [ID...]} Remove multiple posts {rebuild} Regenerate all posts and relink
|
@@ -538,10 +469,8 @@ module RuneBlog::REPL
|
|
538
469
|
{import ASSETS} Import assets (images, etc.) {manage WIDGET} Manage content/layout of a widget
|
539
470
|
EOS
|
540
471
|
|
541
|
-
def cmd_help
|
542
|
-
reset_output
|
472
|
+
def cmd_help
|
543
473
|
msg = Help
|
544
|
-
output msg
|
545
474
|
msg.each_line do |line|
|
546
475
|
e = line.each_char
|
547
476
|
first = true
|
@@ -564,8 +493,6 @@ module RuneBlog::REPL
|
|
564
493
|
print s1
|
565
494
|
end
|
566
495
|
end
|
567
|
-
puts
|
568
|
-
@out
|
496
|
+
puts
|
569
497
|
end
|
570
498
|
end
|
571
|
-
|