runeblog 0.3.07 → 0.3.08
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 +2 -1
- data/empty_view/assets/reddit-logo.png +0 -0
- data/empty_view/themes/standard/post/generate.lt3 +1 -1
- data/empty_view/themes/standard/widgets/pages/faq.lt3 +2 -1
- data/lib/helpers-blog.rb +1 -2
- data/lib/liveblog.rb +28 -8
- data/lib/lowlevel.rb +4 -0
- data/lib/publish.rb +10 -2
- data/lib/repl.rb +24 -19
- data/lib/runeblog.rb +14 -6
- data/lib/runeblog_version.rb +1 -1
- metadata +3 -3
- data/empty_view/config/reddit/the-graffiti-wall.html +0 -91
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b757eafd85e4ea485fee79a8bee301835900810d1692b9f9ef840c486668ca85
|
4
|
+
data.tar.gz: 8542cbb10ada3de44d5f261876409e818fe4dc07a75bf7848488f6566168e8e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d587dfae5d4649dfc85495f27785b365a07bc37e4a8b5c99eefa5a240b608ef741f8c7be60719fc4a13d2aea5e8d8a5a3ea460d1ff55e04590d77e3850016683
|
7
|
+
data.tar.gz: 97f657d2a11ad08aa1dd244c1465b3c3530a8bbd842657325231dc8a46b5719f8987c5b4177f06153372f815eb7c193e40b82fba32ca8027a9226667fa530905
|
data/bin/blog
CHANGED
Binary file
|
@@ -23,6 +23,7 @@ style blog.css
|
|
23
23
|
|
24
24
|
<section class="post">
|
25
25
|
<div class="recent-content">
|
26
|
+
$.post_toolbar
|
26
27
|
<table border=0 width=100%><tr>
|
27
28
|
<td align=left valign=bottom><h2 class="recent-title">$title</h2></td>
|
28
29
|
<td align=right valign=top><font size=-5><br></font>$longdate</td>
|
@@ -32,7 +33,6 @@ style blog.css
|
|
32
33
|
</section>
|
33
34
|
|
34
35
|
<br>
|
35
|
-
<hr>
|
36
36
|
.post_trailer
|
37
37
|
</body>
|
38
38
|
</html>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
.nopara # FIXME later
|
1
2
|
.mixin liveblog
|
2
3
|
|
3
4
|
<html>
|
@@ -27,7 +28,7 @@ Don't be stupid. I just told you I was a rabbit.
|
|
27
28
|
.end
|
28
29
|
|
29
30
|
.faq Why do you answer a question with a question?
|
30
|
-
*Do I in fact answer a question with a question?
|
31
|
+
*Do I in fact answer a question with a question?
|
31
32
|
.end
|
32
33
|
|
33
34
|
.faq Are you serious?
|
data/lib/helpers-blog.rb
CHANGED
@@ -39,9 +39,8 @@ module RuneBlog::Helpers
|
|
39
39
|
puts "dir = #{Dir.pwd}"
|
40
40
|
end
|
41
41
|
|
42
|
-
def copy_data(
|
42
|
+
def copy_data(dest)
|
43
43
|
data = RuneBlog::Path + "/../data" # files kept inside gem
|
44
|
-
# FIXME tag no longer used
|
45
44
|
files = %w[ROOT VIEW EDITOR universal.lt3 global.lt3 features.txt]
|
46
45
|
files.each {|file| copy(data + "/" + file, dest) unless File.exist?(dest/file) }
|
47
46
|
end
|
data/lib/liveblog.rb
CHANGED
@@ -21,6 +21,18 @@ def init_liveblog # FIXME - a lot of this logic sucks
|
|
21
21
|
@vdir = @blog.view.dir rescue "NONAME"
|
22
22
|
@version = RuneBlog::VERSION
|
23
23
|
@theme = @vdir/:themes/:standard
|
24
|
+
|
25
|
+
@reddit_comments = ""
|
26
|
+
@reddit_enabled = @blog.features["reddit"]
|
27
|
+
if @reddit_enabled
|
28
|
+
@reddit_comments = <<~HTML
|
29
|
+
<a href="#reddit_comments">
|
30
|
+
<img src="assets/reddit-logo.png"
|
31
|
+
width=24 height=24
|
32
|
+
alt="Scroll to reddit comments"></img>
|
33
|
+
</a>
|
34
|
+
HTML
|
35
|
+
end
|
24
36
|
rescue
|
25
37
|
raise "Only works inside a blog repo"
|
26
38
|
end
|
@@ -52,11 +64,11 @@ end
|
|
52
64
|
str.length > 0
|
53
65
|
end
|
54
66
|
|
55
|
-
def _reddit_post_url(vdir, title, url)
|
67
|
+
def _reddit_post_url(vdir, date, title, url)
|
56
68
|
_got_python?
|
57
69
|
tmpfile = "/tmp/reddit-post-url.txt"
|
58
70
|
File.open(tmpfile, "w") do |tmp|
|
59
|
-
tmp.puts "[
|
71
|
+
tmp.puts "[#{date}] #{title}"
|
60
72
|
tmp.puts url
|
61
73
|
end
|
62
74
|
rid = nil
|
@@ -65,6 +77,13 @@ end
|
|
65
77
|
rid # returns reddit id
|
66
78
|
end
|
67
79
|
|
80
|
+
def post_toolbar
|
81
|
+
back = %[<a style="text-decoration: none" href="javascript:history.go(-1)">[Back]</a>]
|
82
|
+
_out <<~HTML
|
83
|
+
<div align='right'>#{back} #@reddit_comments</div>
|
84
|
+
HTML
|
85
|
+
end
|
86
|
+
|
68
87
|
def post_trailer
|
69
88
|
perma = _var("publish.proto") + "://" + _var("publish.server") +
|
70
89
|
"/" + _var("publish.path") + "/" + _var("post.aslug") +
|
@@ -72,31 +91,32 @@ def post_trailer
|
|
72
91
|
tags = _var("post.tags")
|
73
92
|
taglist = tags.empty? ? "" : "Tags: #{tags}"
|
74
93
|
|
75
|
-
reddit_enabled = @blog.features["reddit"]
|
76
94
|
reddit_txt = ""
|
77
|
-
if reddit_enabled
|
95
|
+
if @reddit_enabled
|
78
96
|
vdir = @blog.root/:views/@blog.view
|
79
97
|
nslug = "#{_var("post.num")}-#{_var("post.aslug")}"
|
98
|
+
date = _var("post.date")
|
80
99
|
rid_file = vdir/:posts/nslug/"reddit.id"
|
81
100
|
rid = File.exist?(rid_file) ? File.read(rid_file).chomp : nil
|
82
101
|
if rid.nil?
|
83
102
|
title = _var("title")
|
84
|
-
rid = _reddit_post_url(vdir, title, perma)
|
103
|
+
rid = _reddit_post_url(vdir, date, title, perma)
|
85
104
|
dump(rid, rid_file)
|
86
105
|
end
|
87
106
|
reddit_txt = <<~HTML
|
88
|
-
<
|
107
|
+
<a name='reddit_comments'>
|
89
108
|
<script src='https://redditjs.com/post.js'
|
90
109
|
data-url="#{rid}" data-width=800 ></script>
|
91
110
|
HTML
|
92
111
|
# damned syntax highlighting </>
|
93
112
|
end
|
94
113
|
_out <<~HTML
|
114
|
+
#{reddit_txt}
|
115
|
+
<hr>
|
95
116
|
<table width=100%><tr>
|
96
117
|
<td width=10%><a style="text-decoration: none" href="javascript:history.go(-1)">[Back]</a></td>
|
97
118
|
<td width=10%><a style="text-decoration: none" href="#{perma}"> [permalink] </a></td>
|
98
119
|
<td width=80% align=right><font size=-3>#{taglist}</font></td></tr></table>
|
99
|
-
#{reddit_txt}
|
100
120
|
HTML
|
101
121
|
end
|
102
122
|
|
@@ -105,7 +125,7 @@ def faq
|
|
105
125
|
_out "<br>" if @faq_count == 0
|
106
126
|
@faq_count += 1
|
107
127
|
ques = _data.chomp
|
108
|
-
ans =
|
128
|
+
ans = _body.join("\n")
|
109
129
|
id = "faq#@faq_count"
|
110
130
|
_out %[ <a data-toggle="collapse" href="##{id}" role="button" aria-expanded="false" aria-controls="collapseExample"><font size=+3>⌄</font></a>]
|
111
131
|
_out %[ <b>#{ques}</b>]
|
data/lib/lowlevel.rb
CHANGED
data/lib/publish.rb
CHANGED
@@ -38,14 +38,22 @@ class RuneBlog::Publishing
|
|
38
38
|
url = "#@proto://#@server/#@path" # /#{vname}"
|
39
39
|
end
|
40
40
|
|
41
|
+
def check_new_posts
|
42
|
+
# How do we know??
|
43
|
+
# If it's newly published:
|
44
|
+
# autopost on reddit (if enabled and not already)
|
45
|
+
# " " twitter (if enabled and not already)
|
46
|
+
# " " facebook (if enabled and not already)
|
47
|
+
end
|
48
|
+
|
41
49
|
def publish
|
42
50
|
log!(enter: __method__, level: 1)
|
43
51
|
dir = @docroot/@path
|
44
52
|
view_name = @blog.view.name
|
45
|
-
viewpath = dir
|
46
|
-
# FIXME rsync doesn't work
|
53
|
+
viewpath = dir
|
47
54
|
cmd = "rsync -r -z #{@blog.root}/views/#{@blog.view}/remote/ #@user@#@server:#{viewpath}/"
|
48
55
|
system!(cmd)
|
56
|
+
check_new_posts
|
49
57
|
dump("#{@blog.view} at #{Time.now}", "#{@blog.view.dir}/last_published")
|
50
58
|
true
|
51
59
|
end
|
data/lib/repl.rb
CHANGED
@@ -41,24 +41,25 @@ module RuneBlog::REPL
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def cmd_config
|
44
|
-
hash = {"
|
45
|
-
" View-specific
|
46
|
-
" Recent posts"
|
47
|
-
" Publishing
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
56
|
-
"
|
57
|
-
"
|
58
|
-
"
|
59
|
-
"
|
60
|
-
"
|
61
|
-
"
|
44
|
+
hash = {"Variables (general)" => "global.lt3",
|
45
|
+
" View-specific" => "../../settings/view.txt",
|
46
|
+
" Recent posts" => "../../settings/recent.txt",
|
47
|
+
" Publishing" => "../../settings/publish.txt",
|
48
|
+
"Configuration: enable/disable" => "../../settings/features.txt",
|
49
|
+
" Reddit" => "../../config/reddit/credentials.txt",
|
50
|
+
" Facebook" => "../../config/facebook/credentials.txt",
|
51
|
+
" Twitter" => "../../config/twitter/credentials.txt",
|
52
|
+
"View: generator" => "blog/generate.lt3",
|
53
|
+
" HEAD info" => "blog/head.lt3",
|
54
|
+
" Layout " => "blog/index.lt3",
|
55
|
+
" Recent-posts entry" => "blog/post_entry.lt3",
|
56
|
+
" Banner: Description" => "blog/banner.lt3",
|
57
|
+
" Text portion" => "banner/top.lt3",
|
58
|
+
"Generator for a post" => "post/generate.lt3",
|
59
|
+
" HEAD info for post" => "post/head.lt3",
|
60
|
+
" Content for post" => "post/index.lt3",
|
61
|
+
"Global CSS" => "etc/blog.css.lt3",
|
62
|
+
"External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3"
|
62
63
|
}
|
63
64
|
|
64
65
|
dir = @blog.view.dir/"themes/standard/"
|
@@ -209,12 +210,13 @@ module RuneBlog::REPL
|
|
209
210
|
|
210
211
|
def regen_posts
|
211
212
|
drafts = @blog.drafts # current view
|
213
|
+
puts " Regenerating posts..." unless drafts.empty?
|
212
214
|
drafts.each do |draft|
|
213
215
|
orig = @blog.root/:drafts/draft
|
214
216
|
html = @blog.root/:posts/draft
|
215
217
|
html.sub!(/.lt3$/, "/guts.html")
|
216
218
|
next if fresh?(orig, html)
|
217
|
-
puts "
|
219
|
+
puts " #{draft}"
|
218
220
|
@blog.generate_post(orig) # rebuild post
|
219
221
|
end
|
220
222
|
puts
|
@@ -224,8 +226,11 @@ module RuneBlog::REPL
|
|
224
226
|
debug "Starting cmd_rebuild..."
|
225
227
|
puts
|
226
228
|
regen_posts
|
229
|
+
puts " Generating view"
|
227
230
|
@blog.generate_view(@blog.view)
|
231
|
+
puts " Generating index"
|
228
232
|
@blog.generate_index(@blog.view)
|
233
|
+
puts " ...finished!"
|
229
234
|
rescue => err
|
230
235
|
_tmp_error(err)
|
231
236
|
end
|
data/lib/runeblog.rb
CHANGED
@@ -87,9 +87,9 @@ class RuneBlog
|
|
87
87
|
new_sequence
|
88
88
|
end
|
89
89
|
unless File.exist?(repo_root/"data/VIEW")
|
90
|
-
copy_data(
|
90
|
+
copy_data(repo_root/:data)
|
91
91
|
end
|
92
|
-
|
92
|
+
# copy_data(:extra, repo_root/:config)
|
93
93
|
write_repo_config(root: repo_root)
|
94
94
|
@blog = self.new
|
95
95
|
@blog
|
@@ -494,13 +494,14 @@ class RuneBlog
|
|
494
494
|
log!(enter: __method__, level: 3)
|
495
495
|
dir = self.view.dir/:posts
|
496
496
|
posts = Dir.entries(dir).grep(/^\d{4}/)
|
497
|
-
posts
|
497
|
+
posts.sort
|
498
498
|
end
|
499
499
|
|
500
500
|
def drafts
|
501
501
|
log!(enter: __method__, level: 3)
|
502
502
|
dir = @root/:drafts
|
503
503
|
drafts = Dir.entries(dir).grep(/^\d{4}.*/)
|
504
|
+
drafts.sort
|
504
505
|
end
|
505
506
|
|
506
507
|
def change_view(view)
|
@@ -589,6 +590,9 @@ class RuneBlog
|
|
589
590
|
.heredoc post.aslug
|
590
591
|
#{aslug}
|
591
592
|
.end
|
593
|
+
.heredoc post.date
|
594
|
+
#{date}
|
595
|
+
.end
|
592
596
|
.heredoc title
|
593
597
|
#{title.chomp}
|
594
598
|
.end
|
@@ -653,10 +657,11 @@ class RuneBlog
|
|
653
657
|
copy(pdraft/"guts.html", @theme/:post)
|
654
658
|
copy(pdraft/"vars.lt3", @theme/:post)
|
655
659
|
# Step 4...
|
656
|
-
# FIXME dependencies?
|
657
660
|
preprocess cwd: @theme/:post, src: "generate.lt3", force: true,
|
658
|
-
dst: remote/ahtml, copy: @theme/:post,
|
661
|
+
dst: remote/ahtml, # copy: @theme/:post,
|
659
662
|
call: ".nopara" # , debug: true
|
663
|
+
FileUtils.rm_f(remote/"published")
|
664
|
+
timelog("Generated", remote/"history")
|
660
665
|
copy_widget_html(view_name)
|
661
666
|
rescue => err
|
662
667
|
_tmp_error(err)
|
@@ -664,7 +669,7 @@ class RuneBlog
|
|
664
669
|
|
665
670
|
def _check_view?(view)
|
666
671
|
flag = self.view?(view)
|
667
|
-
puts "
|
672
|
+
puts " Warning: '#{view}' is not a view" unless flag
|
668
673
|
flag
|
669
674
|
end
|
670
675
|
|
@@ -672,6 +677,9 @@ class RuneBlog
|
|
672
677
|
log!(enter: __method__, args: [draft], level: 1)
|
673
678
|
views = _get_views(draft)
|
674
679
|
views.each {|view| _handle_post(draft, view) }
|
680
|
+
# For current view:
|
681
|
+
slug = File.basename(draft).sub(/.lt3$/, "")
|
682
|
+
postdir = self.view.dir/"remote/post/"/slug
|
675
683
|
rescue => err
|
676
684
|
_tmp_error(err)
|
677
685
|
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.3.
|
4
|
+
version: 0.3.08
|
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-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- data/global.lt3
|
90
90
|
- data/universal.lt3
|
91
91
|
- empty_view/assets/austin-pano.jpg
|
92
|
+
- empty_view/assets/reddit-logo.png
|
92
93
|
- empty_view/assets/sky2.jpg
|
93
94
|
- empty_view/config/exper/2svg.lt3
|
94
95
|
- empty_view/config/exper/gen_svg.rb
|
@@ -103,7 +104,6 @@ files:
|
|
103
104
|
- empty_view/config/reddit/notes.txt
|
104
105
|
- empty_view/config/reddit/reddit_post_url.py
|
105
106
|
- empty_view/config/reddit/redpost.rb
|
106
|
-
- empty_view/config/reddit/the-graffiti-wall.html
|
107
107
|
- empty_view/config/twitter/credentials.txt
|
108
108
|
- empty_view/config/twitter/tw.html
|
109
109
|
- empty_view/config/twitter/tw.js
|
@@ -1,91 +0,0 @@
|
|
1
|
-
|
2
|
-
<html>
|
3
|
-
<!-- Generated from /Users/Hal/Dropbox/files/runeblog/.blogs/views/around_austin/themes/standard/global.lt3 on 2019-12-19; editing not recommended. -->
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
<meta charset="utf-8">
|
9
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
10
|
-
<title>
|
11
|
-
Around Austin | The view from downtown...
|
12
|
-
</title>
|
13
|
-
<meta name="generator" content="Runeblog v 0.2.91">
|
14
|
-
<meta property="og:title" content="The graffiti wall ">
|
15
|
-
<meta property="og:locale" content="en_US">
|
16
|
-
<meta property="description" content="RIP, Hope Gallery">
|
17
|
-
<meta property="og:description" content="The view from downtown...">
|
18
|
-
<link rel="canonical" href="http://SITE">
|
19
|
-
<meta property="og:url" content="http://SITE">
|
20
|
-
<meta property="og:site_name" content="Around Austin">
|
21
|
-
<link type="application/atom+xml" rel="alternate" href="http://SITE/feed.xml" title="Around Austin">
|
22
|
-
<link rel="shortcut icon" type="image/x-icon" href="etc/favicon.ico">
|
23
|
-
<link rel="apple-touch-icon" href="etc/favicon.ico">
|
24
|
-
<link rel="stylesheet" href="etc/blog.css">
|
25
|
-
<body>
|
26
|
-
|
27
|
-
<section class="post">
|
28
|
-
<div class="recent-content">
|
29
|
-
<table border=0 width=100%><tr>
|
30
|
-
<td align=left valign=bottom><h2 class="recent-title">The graffiti wall</h2></td>
|
31
|
-
<td align=right valign=top><font size=-5><br></font>December 2, 2019</td>
|
32
|
-
</tr></table><hr>
|
33
|
-
<!-- Post number 3 -->
|
34
|
-
|
35
|
-
|
36
|
-
RIP, Hope Gallery
|
37
|
-
|
38
|
-
|
39
|
-
<div class='mydrop'>I</div>
|
40
|
-
<div style="padding-top: 1px">t's been a while since I was there. They say it was torn down
|
41
|
-
while I wasn't looking. Never tagged anything there, of course, nor
|
42
|
-
anywhere else. Spraypainting public places isn't my thing, but in this
|
43
|
-
case I condoned it because it was sort of there for that purpose.
|
44
|
-
|
45
|
-
<p>
|
46
|
-
This fake entry is a long one so as to demonstrate both drop-caps
|
47
|
-
(above) and an inset quote. Blah blah blah. Lorem ipsum dolor and
|
48
|
-
a partridge in a pear tree.
|
49
|
-
|
50
|
-
<p>
|
51
|
-
</p>
|
52
|
-
Wherever you go, there you are. Last night I saw upon the stair
|
53
|
-
a little man who was not there. He wasn't there again today; I
|
54
|
-
wish, I wish he'd go away. As far as we know, our computer has
|
55
|
-
<div style='float:left; width: 20%; padding:8px; padding-right:12px'><b><i> On a clean disk, you can seek forever.</i></b></div>
|
56
|
-
never had an undetected error.
|
57
|
-
On a clean disk, you can seek forever.
|
58
|
-
And never let it be denied that
|
59
|
-
pobbles are happier without their toes. And may your snark never
|
60
|
-
be a boojum. How do you know you aren't dreaming right now? When
|
61
|
-
you see a butterfly, think of Chuang Tzu.
|
62
|
-
<p>
|
63
|
-
Contact light. Houston, this is Tranquility Base. The Eagle has
|
64
|
-
landed. That's one small step for (a) man, one giant leap for
|
65
|
-
mankind.
|
66
|
-
|
67
|
-
<p>
|
68
|
-
Here's the PDF of <a style='text-decoration: none' href='http://rubyhacker.com/blog2/rubydino.pdf'>"Ruby for the Old-Time C Programmer"</a>
|
69
|
-
|
70
|
-
<p>
|
71
|
-
Pity this busy monster, manunkind, not. Pity rather... Listen:
|
72
|
-
There's a hell of a universe next door; let's go.
|
73
|
-
|
74
|
-
<p>
|
75
|
-
</div>
|
76
|
-
</section>
|
77
|
-
|
78
|
-
<br>
|
79
|
-
<!-- <script src='https://redditjs.com/subreddit.js' data-subreddit='RubyElixirEtc' data-width=600></script> -->
|
80
|
-
<!-- https://www.reddit.com/r/RubyElixirEtc/comments/ed48ra/post_this_is_only_a_test/ -->
|
81
|
-
|
82
|
-
<hr>
|
83
|
-
<table width=100%><tr>
|
84
|
-
<td width=10%><a style="text-decoration: none" href="javascript:history.go(-1)">[Back]</a></td>
|
85
|
-
<td width=10%><a style="text-decoration: none" href="http://SITE/VIEW_NAME/permalink/the-graffiti-wall.html"> [permalink] </a></td>
|
86
|
-
<td width=80% align=right><font size=-3></font></td></tr></table>
|
87
|
-
<hr>
|
88
|
-
<script src='https://redditjs.com/post.js' data-url="ed48ra" data-width=800 ></script>
|
89
|
-
|
90
|
-
</body>
|
91
|
-
</html>
|