runeblog 0.1.78 → 0.1.79
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 +3 -0
- data/data/standard.tgz +0 -0
- data/lib/liveblog.rb +35 -32
- data/lib/post.rb +19 -0
- data/lib/repl.rb +2 -1
- data/lib/runeblog.rb +71 -20
- data/lib/runeblog_version.rb +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: 6add0a9ef9437be9e4f41ee88ac0a067cc13a9120c73a4403a2a23d471f1034d
|
4
|
+
data.tar.gz: ec7b79a7c68f46b57e367043aff7db3524d88e8fd593ccd9a699ca1071ff83c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2301c17418d3d5f1cb076e36d9b6583b8388f82f6c142ac67b4d2f88110dcd46c3d79f344bf59a0e3dd0858fbbf35d3469f6a7ab0ad11d587b5cd142c61eb124
|
7
|
+
data.tar.gz: e96e4521ecb8f542a58164ac20f2cac17b51113cd3096258a45124b05ad1a79e29f6059eabe154c1ae4576ece2bda8f51f50c5c3368740f5728fd137a0a50e03
|
data/bin/blog
CHANGED
data/data/standard.tgz
CHANGED
Binary file
|
data/lib/liveblog.rb
CHANGED
@@ -5,6 +5,9 @@ require 'date'
|
|
5
5
|
require 'livetext'
|
6
6
|
require 'runeblog'
|
7
7
|
|
8
|
+
errfile = File.new("liveblog.out", "w")
|
9
|
+
STDERR.reopen(errfile)
|
10
|
+
|
8
11
|
# ::Home = Dir.pwd unless defined?(::Home)
|
9
12
|
|
10
13
|
=begin
|
@@ -288,6 +291,7 @@ def finalize
|
|
288
291
|
@slug = @blog.make_slug(@meta)
|
289
292
|
slug_dir = @slug
|
290
293
|
@postdir = @blog.view.dir + "/posts/#{slug_dir}"
|
294
|
+
STDERR.puts "Got here!"
|
291
295
|
write_post
|
292
296
|
@meta
|
293
297
|
end
|
@@ -359,7 +363,7 @@ def head
|
|
359
363
|
"linkc" => %[<link rel="canonical" href="#{_var(:host)}">],
|
360
364
|
"og:url" => %[<meta property="og:url" content="#{_var(:host)}">],
|
361
365
|
"og:site_name" => %[<meta property="og:site_name" content="#{_var(:title)}">],
|
362
|
-
"style" => %[<link rel="stylesheet" href="
|
366
|
+
"style" => %[<link rel="stylesheet" href="blog-application.css">],
|
363
367
|
"feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var(:title)}">],
|
364
368
|
"favicon" => %[<link rel="shortcut icon" type="image/x-icon" href="../assets/favicon.ico">\n <link rel="apple-touch-icon" href="../assets/favicon.ico">]
|
365
369
|
}
|
@@ -418,10 +422,12 @@ def main # side-effect
|
|
418
422
|
STDERR.puts "--- inside #main: which = #{which.inspect}"
|
419
423
|
case which
|
420
424
|
when "recent_posts"
|
421
|
-
all_teasers
|
422
|
-
when "post"
|
423
|
-
|
424
|
-
|
425
|
+
all_teasers
|
426
|
+
when "post" # FIXME!!!
|
427
|
+
# _out "<iframe src='./0001-whats-at-stubbs/whats-at-stubbs.html'><iframe>"
|
428
|
+
_out %[<iframe style="width: 100vw;height: 100vh;position: relative;" src='whats-at-stubbs.html' width=100% frameborder="0" allowfullscreen></iframe>]
|
429
|
+
# self.data = "post-index.lt3"
|
430
|
+
# _include
|
425
431
|
end
|
426
432
|
_out %[</div>]
|
427
433
|
end
|
@@ -499,26 +505,26 @@ STDERR.puts "-- inside #all_teasers..."
|
|
499
505
|
close = <<-HTML
|
500
506
|
</section>
|
501
507
|
HTML
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
508
|
+
|
509
|
+
text = <<-HTML
|
510
|
+
<html>
|
511
|
+
<head><link rel="stylesheet" href="blog-application.css"></head>
|
512
|
+
<body>
|
513
|
+
HTML
|
514
|
+
# _out open
|
506
515
|
posts = _find_recent_posts
|
507
|
-
STDERR.puts "=== at03"
|
508
516
|
wanted = [5, posts.size].min # estimate how many we want?
|
509
|
-
STDERR.puts "=== at04"
|
510
517
|
enum = posts.each
|
511
|
-
STDERR.puts "=== at05"
|
512
518
|
wanted.times do
|
513
|
-
STDERR.puts "=== at06 (loop)"
|
514
519
|
postid = File.basename(enum.next)
|
515
|
-
STDERR.puts "=== at07"
|
516
520
|
postid = postid.to_i
|
517
|
-
|
518
|
-
_teaser(postid)
|
519
|
-
STDERR.puts "=== at09"
|
521
|
+
text << _teaser(postid) # side effect! calls _out
|
520
522
|
end
|
521
|
-
|
523
|
+
text << "</body></html>"
|
524
|
+
File.write("recent.html", text)
|
525
|
+
# _out close
|
526
|
+
# _out "<iframe src='./recent.html'><iframe>"
|
527
|
+
_out %[<iframe style="width: 100vw;height: 100vh;position: relative;" src='recent.html' width=100% frameborder="0" allowfullscreen></iframe>]
|
522
528
|
end
|
523
529
|
|
524
530
|
def _post_lookup(postid) # side-effect
|
@@ -532,15 +538,8 @@ def _post_lookup(postid) # side-effect
|
|
532
538
|
post = posts.select {|x| File.basename(x).to_i == postid }
|
533
539
|
raise "Error: More than one post #{postid}" if post.size > 1
|
534
540
|
postdir = post.first
|
535
|
-
|
536
|
-
|
537
|
-
# FIXME dumb hacks...
|
538
|
-
mdfile = "#{postdir}/metadata.txt"
|
539
|
-
lines = File.readlines(mdfile)
|
540
|
-
title = lines.grep(/title:/).first[7..-1].chomp
|
541
|
-
date = lines.grep(/pubdate:/).first[9..-1].chomp
|
542
|
-
slug = postdir
|
543
|
-
[slug, title, date, teaser_text]
|
541
|
+
vp = RuneBlog::ViewPost.new(@blog.view, postdir)
|
542
|
+
vp
|
544
543
|
end
|
545
544
|
|
546
545
|
def _interpolate(str, context) # FIXME move this later
|
@@ -553,15 +552,19 @@ def _teaser(slug)
|
|
553
552
|
text = nil
|
554
553
|
post_entry_name = @theme + "blog-_postentry.lt3"
|
555
554
|
@_post_entry ||= File.read(post_entry_name)
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
555
|
+
vp = _post_lookup(id)
|
556
|
+
nslug, aslug, title, date, teaser_text =
|
557
|
+
vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
|
558
|
+
path = vp.path
|
559
|
+
STDERR.puts [">>>>> vp = ", vp].inspect
|
560
|
+
url = "#{path}/#{aslug}.html" # Should be relative to .blogs!! FIXME
|
561
|
+
STDERR.puts [slug, url].inspect
|
560
562
|
date = Date.parse(date)
|
561
563
|
date = date.strftime("%B %e<br>%Y")
|
562
564
|
text = _interpolate(@_post_entry, binding)
|
563
565
|
# File.write("../../../generated/#{slug}.html", text)
|
564
|
-
|
566
|
+
# _out text
|
567
|
+
text
|
565
568
|
end
|
566
569
|
|
567
570
|
def card_iframe
|
data/lib/post.rb
CHANGED
@@ -134,5 +134,24 @@ STDERR.puts "--- cmd = #{cmd}\n "
|
|
134
134
|
p err
|
135
135
|
puts err.backtrace.join("\n")
|
136
136
|
end
|
137
|
+
end
|
137
138
|
|
139
|
+
class RuneBlog::ViewPost
|
140
|
+
attr_reader :path, :nslug, :aslug, :title, :date,
|
141
|
+
:teaser_text
|
142
|
+
def initialize(view, postdir)
|
143
|
+
# Assumes already parsed/processed
|
144
|
+
@blog = RuneBlog.blog || raise(NoBlogAccessor)
|
145
|
+
@path = postdir.dup
|
146
|
+
@nslug = @path.split("/").last
|
147
|
+
@aslug = @nslug[5..-1]
|
148
|
+
fname = "#{postdir}/teaser.txt"
|
149
|
+
@teaser_text = File.read(fname).chomp
|
150
|
+
# FIXME dumb hacks...
|
151
|
+
mdfile = "#{postdir}/metadata.txt"
|
152
|
+
lines = File.readlines(mdfile)
|
153
|
+
@title = lines.grep(/title:/).first[7..-1].chomp
|
154
|
+
@date = lines.grep(/pubdate:/).first[9..-1].chomp
|
155
|
+
end
|
138
156
|
end
|
157
|
+
|
data/lib/repl.rb
CHANGED
@@ -233,7 +233,8 @@ module RuneBlog::REPL
|
|
233
233
|
# Simplify this
|
234
234
|
tag = "#{'%04d' % id}"
|
235
235
|
files = Find.find(@blog.root+"/drafts").to_a
|
236
|
-
|
236
|
+
p files
|
237
|
+
files = files.grep(/#{tag}-.*lt3/)
|
237
238
|
files = files.map {|f| File.basename(f) }
|
238
239
|
if files.size > 1
|
239
240
|
msg = "Multiple files: #{files}"
|
data/lib/runeblog.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#equire 'find'
|
2
2
|
require 'livetext'
|
3
3
|
|
4
4
|
require 'runeblog_version'
|
@@ -223,9 +223,13 @@ class RuneBlog
|
|
223
223
|
Dir.chdir(self.view.dir)
|
224
224
|
# change to create_draft ?
|
225
225
|
post = Post.create(title: title, teaser: teaser, body: body, other_views: other_views)
|
226
|
+
puts "cnp: num = #{post.meta.num}"
|
226
227
|
post.edit unless testing
|
227
|
-
|
228
|
+
post.build
|
229
|
+
meta = post.meta
|
228
230
|
Dir.chdir(save)
|
231
|
+
puts "cnp: title = #{title.inspect}\n meta = #{meta.inspect}"
|
232
|
+
meta.num ||= 999
|
229
233
|
return meta.num
|
230
234
|
Dir.chdir(save)
|
231
235
|
meta.num = 999
|
@@ -297,6 +301,16 @@ return meta.num
|
|
297
301
|
def generate_view(view)
|
298
302
|
end
|
299
303
|
|
304
|
+
def _get_views(draft)
|
305
|
+
# FIXME dumb code
|
306
|
+
view_line = File.readlines(draft).grep(/^.views /)
|
307
|
+
raise "More than one .views call!" if view_line.size > 1
|
308
|
+
raise "No .views call!" if view_line.size < 1
|
309
|
+
# STDERR.puts view_line.inspect
|
310
|
+
view_line = view_line.first
|
311
|
+
views = view_line[7..-1].split
|
312
|
+
end
|
313
|
+
|
300
314
|
# Remember: A post in multiple views will trigger multiple
|
301
315
|
# views needing to be rebuilt (and published)
|
302
316
|
|
@@ -313,7 +327,45 @@ return meta.num
|
|
313
327
|
# livetext ??/recent.lt3 >VIEW/working/recent.html
|
314
328
|
# livetext VIEW/blog/generate.lt3 ??
|
315
329
|
|
330
|
+
def _copy_get_dirs(draft, view)
|
331
|
+
fname = File.basename(draft)
|
332
|
+
noext = fname.sub(/.lt3$/, "")
|
333
|
+
vdir = "#@root/views/#{view}"
|
334
|
+
dir = "#{vdir}/posts/#{noext}/"
|
335
|
+
Dir.mkdir(dir) unless Dir.exist?(dir)
|
336
|
+
system("cp #{draft} #{dir}")
|
337
|
+
viewdir, slugdir, aslug = vdir, dir, noext[5..-1]
|
338
|
+
theme = viewdir + "/themes/standard"
|
339
|
+
[noext, viewdir, slugdir, aslug, theme]
|
340
|
+
end
|
341
|
+
|
316
342
|
def generate_post(draft)
|
343
|
+
views = _get_views(draft)
|
344
|
+
views.each do |view|
|
345
|
+
noext, viewdir, slugdir, aslug, theme = _copy_get_dirs(draft, view)
|
346
|
+
Dir.chdir(slugdir) do
|
347
|
+
html = noext[5..-1] + ".html"
|
348
|
+
STDERR.puts "--- NEW gp into #{slugdir}: livetext #{draft} >#{html}"
|
349
|
+
system("livetext #{draft} >#{html}")
|
350
|
+
|
351
|
+
Dir.mkdir("sidebar") unless Dir.exist?("sidebar")
|
352
|
+
system("cp #{theme}/sidebar/*.lt3 ./sidebar/")
|
353
|
+
files = ["blog-generate.lt3", "blog-index.lt3", "global.lt3", "blog-head.lt3",
|
354
|
+
"meta.lt3", "navbar.lt3"]
|
355
|
+
files2 = files.map {|x| theme + "/" + x }
|
356
|
+
files2.each do |f|
|
357
|
+
system("cp #{f} .")
|
358
|
+
end
|
359
|
+
|
360
|
+
# system("livetext blog-generate.lt3 >bgen.html")
|
361
|
+
# files.each {|fname| system("rm ./#{fname}") }
|
362
|
+
# system("rm -rf ./sidebar/")
|
363
|
+
end
|
364
|
+
# create framed pure slug (where?)
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
368
|
+
def old_generate_post(draft)
|
317
369
|
dir = File.dirname(draft)
|
318
370
|
fname = File.basename(draft)
|
319
371
|
# STDERR.puts "--- gp01 dir/fname = #{dir} #{fname}"
|
@@ -323,37 +375,36 @@ return meta.num
|
|
323
375
|
raise "No .views call!" if view_line.size < 1
|
324
376
|
view_line = view_line.first
|
325
377
|
|
326
|
-
# STDERR.puts "--- gp01b view_line = #{view_line}"
|
327
378
|
views = view_line[7..-1].split
|
328
379
|
slug_dir = fname.sub(/.lt3$/, "")
|
329
|
-
# STDERR.puts "--- gp02 preloop"
|
330
380
|
views.each do |view|
|
331
|
-
# STDERR.puts "--- gp03 view = #{view}"
|
332
381
|
vdir = "#@root/views/#{view}"
|
333
382
|
dir = "#{vdir}/posts/#{slug_dir}/"
|
334
|
-
STDERR.puts "--- gp03b vdir = #{vdir} dir = #{dir}"
|
335
383
|
Dir.mkdir(dir) unless Dir.exist?(dir)
|
336
|
-
puts
|
337
|
-
# --- gp04 system: cp /Users/Hal/Dropbox/files/runeblog/.blogs/data/drafts/0007-the-graffiti-wall.lt3
|
338
|
-
# /Users/Hal/Dropbox/files/runeblog/.blogs/data/around_austin/posts/0007-the-graffiti-wall.lt3/
|
339
|
-
STDERR.puts "--- gp04 system: cp #{draft} #{dir}"
|
340
|
-
STDERR.puts
|
341
384
|
system("cp #{draft} #{dir}")
|
342
385
|
Dir.chdir(dir) do
|
343
|
-
|
344
|
-
|
386
|
+
html = draft.sub(/.lt3$/, ".html")
|
387
|
+
STDERR.puts "--- gp05 into #{dir}: livetext #{draft} >#{html}"
|
388
|
+
system("livetext #{draft} >#{html}")
|
389
|
+
|
345
390
|
# copy from theme?
|
346
391
|
theme = vdir + "/themes/standard"
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
392
|
+
Dir.mkdir("sidebar") unless Dir.exist?("sidebar")
|
393
|
+
system("cp #{theme}/sidebar/*.lt3 ./sidebar/")
|
394
|
+
files = ["blog-generate.lt3", "blog-index.lt3", "global.lt3", "blog-head.lt3",
|
395
|
+
"meta.lt3", "navbar.lt3"]
|
396
|
+
files2 = files.map {|x| theme + "/" + x }
|
397
|
+
# STDERR.puts "---- gp06: In #{Dir.pwd}: files = #{files.inspect}"
|
398
|
+
files2.each do |f|
|
399
|
+
# STDERR.puts "---- gp07: cp #{f} ."
|
352
400
|
system("cp #{f} .")
|
353
401
|
end
|
354
|
-
STDERR.puts "---- Files copied from theme"
|
402
|
+
# STDERR.puts "---- gp08: Files copied from theme"
|
403
|
+
|
355
404
|
system("livetext blog-generate.lt3 >bgen.html")
|
356
|
-
STDERR.puts "---- Files went thru livetext"
|
405
|
+
# STDERR.puts "---- gp09: Files went thru livetext"
|
406
|
+
# files.each {|fname| system("rm ./#{fname}") }
|
407
|
+
# system("rm -rf ./sidebar/")
|
357
408
|
end
|
358
409
|
# create framed pure slug (where?)
|
359
410
|
end
|
data/lib/runeblog_version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runeblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.79
|
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-08-
|
11
|
+
date: 2019-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|