runeblog 0.3.07 → 0.3.08
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|