runeblog 0.1.84 → 0.1.90
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/helpers-blog.rb +15 -3
- data/lib/liveblog.rb +58 -45
- data/lib/post.rb +3 -25
- data/lib/repl.rb +0 -21
- data/lib/runeblog.rb +44 -30
- data/lib/runeblog_version.rb +3 -2
- data/runeblog.gemspec +5 -7
- data/test/make_blog.rb +3 -3
- data/themes/standard/README +26 -0
- data/themes/standard/about.html +4 -0
- data/themes/standard/assets/blog.css +34 -0
- data/themes/standard/assets/favicon.ico +0 -0
- data/themes/standard/blog-index.lt3 +6 -0
- data/themes/standard/blog-meta.lt3 +3 -0
- data/themes/standard/blog-navbar.lt3 +6 -0
- data/themes/standard/blog/generate.lt3 +17 -0
- data/themes/standard/blog/head.lt3 +29 -0
- data/themes/standard/blog/post_entry.lt3 +19 -0
- data/themes/standard/global.lt3 +7 -0
- data/themes/standard/head.lt3 +28 -0
- data/themes/standard/meta.lt3 +3 -0
- data/themes/standard/navbar.lt3 +6 -0
- data/themes/standard/post-generate.lt3 +17 -0
- data/themes/standard/post-head.lt3 +4 -0
- data/themes/standard/post-index.lt3 +16 -0
- data/themes/standard/sidebar/ad.lt3 +5 -0
- data/themes/standard/sidebar/calendar.lt3 +6 -0
- data/themes/standard/sidebar/news.lt3 +7 -0
- data/themes/standard/sidebar/tag-cloud.lt3 +10 -0
- metadata +23 -3
- data/themes/standard.tgz +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9687bddcc20a39a654a99603151b884aac19cd4e6eded49c8353168fa38f388d
|
4
|
+
data.tar.gz: 61fdab92aa959e73840ae5021864fe700642ddc705c9ca118b6ce318c5e3876a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dca839400cbae673b05ec03128c15cbab360ff445e56de78d51aac4a1441e139fd3f13357bf13c75500bd0cad6010d9b3276262ae9011c08bd2d15787e4285b
|
7
|
+
data.tar.gz: 237b98bcdbc8d784a64668db6e7ff6488531f36d2f23f94847ba8fdccb9564473f133c3bdabbd7f868a5b2c626fb9c65046e9d251890851aad12e6aef9f50abe
|
data/lib/helpers-blog.rb
CHANGED
@@ -65,6 +65,17 @@ module RuneBlog::Helpers
|
|
65
65
|
vals
|
66
66
|
end
|
67
67
|
|
68
|
+
def put_config(root:, view:"test_view", editor: "/bin/vim")
|
69
|
+
Dir.mkdir(root) unless Dir.exist?(root)
|
70
|
+
Dir.chdir(root) do
|
71
|
+
File.open("config", "w") do |cfg|
|
72
|
+
cfg.puts "root: #{root}"
|
73
|
+
cfg.puts "current_view: #{view}"
|
74
|
+
cfg.puts "editor: #{editor}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
68
79
|
def write_config(obj, file)
|
69
80
|
hash = obj.to_h
|
70
81
|
# Dir.chdir(::Home)
|
@@ -86,9 +97,10 @@ module RuneBlog::Helpers
|
|
86
97
|
# end
|
87
98
|
end
|
88
99
|
|
89
|
-
def new_dotfile(root: "
|
90
|
-
|
91
|
-
|
100
|
+
def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
|
101
|
+
# raise BlogAlreadyExists if Dir.exist?(".blogs")
|
102
|
+
# Dir.mkdir(".blogs")
|
103
|
+
root = Dir.pwd + "/" + root
|
92
104
|
x = OpenStruct.new
|
93
105
|
x.root, x.current_view, x.editor = root, current_view, editor
|
94
106
|
write_config(x, ".blogs/" + RuneBlog::ConfigFile)
|
data/lib/liveblog.rb
CHANGED
@@ -8,19 +8,21 @@ require 'runeblog'
|
|
8
8
|
errfile = File.new("liveblog.out", "w")
|
9
9
|
STDERR.reopen(errfile)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
491:def _post_lookup(postid) # side-effect
|
20
|
-
=end
|
11
|
+
# def title # side-effect
|
12
|
+
# def pubdate # side-effect
|
13
|
+
# def tags # side-effect
|
14
|
+
# def views # side-effect
|
15
|
+
# def pin # side-effect
|
16
|
+
# def write_post # side-effect
|
17
|
+
# def main # side-effect
|
18
|
+
# def _post_lookup(postid) # side-effect
|
21
19
|
|
22
20
|
def init_liveblog # FIXME - a lot of this logic sucks
|
23
|
-
|
21
|
+
here = Dir.pwd
|
22
|
+
dir = here
|
23
|
+
loop { dir = Dir.pwd; break if File.exist?("config"); Dir.chdir("..") }
|
24
|
+
Dir.chdir(here)
|
25
|
+
@blog = $_blog = RuneBlog.new(dir)
|
24
26
|
@root = @blog.root
|
25
27
|
@view = @blog.view
|
26
28
|
@view_name = @blog.view.name
|
@@ -220,7 +222,6 @@ def teaser
|
|
220
222
|
raise "'post' was not called" unless @meta
|
221
223
|
@meta.teaser = _body_text
|
222
224
|
_out @meta.teaser + "\n"
|
223
|
-
STDERR.puts "TEASER cwd = #{Dir.pwd}"
|
224
225
|
# FIXME
|
225
226
|
end
|
226
227
|
|
@@ -236,6 +237,7 @@ def finalize
|
|
236
237
|
@slug = @blog.make_slug(@meta)
|
237
238
|
slug_dir = @slug
|
238
239
|
@postdir = @blog.view.dir + "/posts/#{slug_dir}"
|
240
|
+
STDERR.puts "--- finalize: pwd = #{Dir.pwd} postdir = #@postdir"
|
239
241
|
write_post
|
240
242
|
@meta
|
241
243
|
end
|
@@ -288,6 +290,12 @@ def _var(name) # FIXME scope issue!
|
|
288
290
|
end
|
289
291
|
|
290
292
|
def head
|
293
|
+
_out "<head>"
|
294
|
+
args = _args
|
295
|
+
args.each do |inc|
|
296
|
+
self.data = inc
|
297
|
+
_include
|
298
|
+
end
|
291
299
|
# Depends on vars: title, desc, host
|
292
300
|
defaults = {}
|
293
301
|
defaults = { "charset" => %[<meta charset="utf-8">],
|
@@ -313,7 +321,7 @@ def head
|
|
313
321
|
case word
|
314
322
|
when "viewport"
|
315
323
|
result["viewport"] = %[<meta name="viewport" content="#{remain}">]
|
316
|
-
when "script"
|
324
|
+
when "script" # FIXME this is broken
|
317
325
|
file = remain
|
318
326
|
text = File.read(file)
|
319
327
|
result["script"] = Livetext.new.transform(text)
|
@@ -327,7 +335,6 @@ def head
|
|
327
335
|
end
|
328
336
|
hash = defaults.dup.update(result) # FIXME collisions?
|
329
337
|
# _out "<html lang=en_US>"
|
330
|
-
_out "<head>"
|
331
338
|
hash.each_value {|x| _out " " + x }
|
332
339
|
_out "</head>"
|
333
340
|
_out "<body>"
|
@@ -357,7 +364,6 @@ end
|
|
357
364
|
def main # side-effect
|
358
365
|
_out %[<div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">]
|
359
366
|
which = _args[0]
|
360
|
-
STDERR.puts "--- inside #main: which = #{which.inspect}"
|
361
367
|
case which
|
362
368
|
when "recent_posts"
|
363
369
|
all_teasers
|
@@ -377,7 +383,7 @@ def sidebar
|
|
377
383
|
_out %[</div>]
|
378
384
|
end
|
379
385
|
|
380
|
-
def
|
386
|
+
def sidebar!
|
381
387
|
_out %[<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">]
|
382
388
|
_args do |line|
|
383
389
|
tag = line.chomp.strip
|
@@ -480,7 +486,7 @@ end
|
|
480
486
|
def _teaser(slug)
|
481
487
|
id = slug.to_i
|
482
488
|
text = nil
|
483
|
-
post_entry_name = @theme + "blog
|
489
|
+
post_entry_name = @theme + "blog/post_entry.lt3"
|
484
490
|
@_post_entry ||= File.read(post_entry_name)
|
485
491
|
vp = _post_lookup(id)
|
486
492
|
nslug, aslug, title, date, teaser_text =
|
@@ -493,50 +499,57 @@ def _teaser(slug)
|
|
493
499
|
text
|
494
500
|
end
|
495
501
|
|
502
|
+
def _card_generic(card_title:, middle:, extra: "")
|
503
|
+
front = <<-HTML
|
504
|
+
<div class="card #{extra} mb-3">
|
505
|
+
<div class="card-body">
|
506
|
+
<h5 class="card-title">#{card_title}</h5>
|
507
|
+
HTML
|
508
|
+
|
509
|
+
tail = <<-HTML
|
510
|
+
</div>
|
511
|
+
</div>
|
512
|
+
HTML
|
513
|
+
text = front + middle + tail
|
514
|
+
_out text + "\n "
|
515
|
+
end
|
496
516
|
|
497
517
|
def card_iframe
|
498
|
-
title = _data
|
499
|
-
lines
|
518
|
+
title, lines = _data, _body
|
519
|
+
lines.map!(&:chomp)
|
500
520
|
url = lines[0].chomp
|
501
521
|
stuff = lines[1..-1].join(" ") # FIXME later
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
style="border: 0" height="350"
|
508
|
-
frameborder="0" scrolling="no">
|
509
|
-
</iframe>
|
510
|
-
</div>
|
511
|
-
</div>
|
522
|
+
middle = <<-HTML
|
523
|
+
<iframe src="#{url}" #{stuff}
|
524
|
+
style="border: 0" height="350"
|
525
|
+
frameborder="0" scrolling="no">
|
526
|
+
</iframe>
|
512
527
|
HTML
|
513
|
-
|
514
|
-
|
515
|
-
|
528
|
+
|
529
|
+
_card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
|
530
|
+
|
516
531
|
end
|
517
532
|
|
518
533
|
def card1
|
519
|
-
|
520
|
-
lines = _body
|
534
|
+
title, lines = _data, _body
|
521
535
|
lines.map!(&:chomp)
|
536
|
+
|
522
537
|
card_text = lines[0]
|
523
538
|
url, target, classname, cdata = lines[1].split(",", 4)
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
<p class="card-text">#{card_text}</p>
|
529
|
-
<a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>
|
530
|
-
</div>
|
531
|
-
</div>
|
539
|
+
|
540
|
+
middle = <<-HTML
|
541
|
+
<p class="card-text">#{card_text}</p>
|
542
|
+
<a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>
|
532
543
|
HTML
|
533
|
-
|
534
|
-
|
535
|
-
puts @live.body
|
544
|
+
|
545
|
+
_card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
|
536
546
|
end
|
537
547
|
|
538
548
|
def card2
|
539
549
|
card_title = _data
|
550
|
+
|
551
|
+
# FIXME is this wrong??
|
552
|
+
|
540
553
|
open = <<-HTML
|
541
554
|
<div class="card mb-3">
|
542
555
|
<div class="card-body">
|
data/lib/post.rb
CHANGED
@@ -105,40 +105,18 @@ class RuneBlog::Post
|
|
105
105
|
error(err)
|
106
106
|
end
|
107
107
|
|
108
|
-
def build
|
108
|
+
def build
|
109
109
|
post = self
|
110
110
|
views = post.meta.views
|
111
111
|
text = File.read(@draft)
|
112
|
-
|
113
|
-
@blog.generate_post(@draft)
|
114
|
-
return
|
115
|
-
|
116
|
-
STDERR.puts "-- Post#build starts in #{Dir.pwd} ..."
|
117
|
-
|
118
|
-
@meta.views.each do |view_name|
|
119
|
-
# Create dir using slug (index.html, metadata?)
|
120
|
-
dir = "#{@blog.root}/views/#{view_name}/posts/"
|
121
|
-
pdir = dir + meta.slug + "/"
|
122
|
-
create_dir(pdir) unless Dir.exist?(pdir)
|
123
|
-
Dir.chdir(pdir) do
|
124
|
-
title_name = pdir + (meta.slug + ".lt3").sub(/^\d{4}-/, "")
|
125
|
-
dump(text, title_name)
|
126
|
-
cmd = "livetext #{title_name} >#{title_name.sub(/.lt3$/, ".html")}"
|
127
|
-
STDERR.puts "--- In #{pdir}"
|
128
|
-
STDERR.puts "--- cmd = #{cmd}\n "
|
129
|
-
system(cmd)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
@meta
|
133
|
-
rescue => err
|
134
|
-
p err
|
135
|
-
puts err.backtrace.join("\n")
|
112
|
+
@blog.generate_post(@draft)
|
136
113
|
end
|
137
114
|
end
|
138
115
|
|
139
116
|
class RuneBlog::ViewPost
|
140
117
|
attr_reader :path, :nslug, :aslug, :title, :date,
|
141
118
|
:teaser_text
|
119
|
+
|
142
120
|
def initialize(view, postdir)
|
143
121
|
# Assumes already parsed/processed
|
144
122
|
@blog = RuneBlog.blog || raise(NoBlogAccessor)
|
data/lib/repl.rb
CHANGED
@@ -233,7 +233,6 @@ module RuneBlog::REPL
|
|
233
233
|
# Simplify this
|
234
234
|
tag = "#{'%04d' % id}"
|
235
235
|
files = Find.find(@blog.root+"/drafts").to_a
|
236
|
-
p files
|
237
236
|
files = files.grep(/#{tag}-.*lt3/)
|
238
237
|
files = files.map {|f| File.basename(f) }
|
239
238
|
if files.size > 1
|
@@ -252,27 +251,7 @@ p files
|
|
252
251
|
file = files.first
|
253
252
|
draft = "#{@blog.root}/drafts/#{file}"
|
254
253
|
result = edit_file(draft)
|
255
|
-
|
256
|
-
STDERR.puts "Calling gp: pwd = #{Dir.pwd} draft = #{draft}"
|
257
|
-
puts
|
258
|
-
|
259
254
|
@blog.generate_post(draft)
|
260
|
-
return
|
261
|
-
|
262
|
-
# NEW code...
|
263
|
-
view = @blog.view
|
264
|
-
# livetext source > naked post 9999-slug (dir?)
|
265
|
-
draft = @blog.root + "/drafts/#{file}"
|
266
|
-
# theme = "#{@blog.view.dir}/themes/standard"
|
267
|
-
# src = "#{theme}/post-index.lt3"
|
268
|
-
|
269
|
-
system("cp #{draft} #{src}") # terms are confusing
|
270
|
-
file2 = file.sub(/.lt3$/, ".html")
|
271
|
-
Dir.chdir(theme) do
|
272
|
-
system("livetext index.lt3 >#{file2}")
|
273
|
-
end
|
274
|
-
# @blog.rebuild_post(file)
|
275
|
-
@out
|
276
255
|
end
|
277
256
|
|
278
257
|
def cmd_list_views(arg, testing = false)
|
data/lib/runeblog.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'date'
|
2
|
-
# require 'livetext'
|
3
2
|
|
4
3
|
require 'runeblog_version'
|
5
4
|
require 'global'
|
@@ -15,7 +14,7 @@ class RuneBlog
|
|
15
14
|
|
16
15
|
DotDir = ".blogs"
|
17
16
|
ConfigFile = "config"
|
18
|
-
|
17
|
+
Themes = RuneBlog::Path + "/../themes"
|
19
18
|
|
20
19
|
make_exception(:FileNotFound, "File $1 was not found")
|
21
20
|
make_exception(:BlogRepoAlreadyExists, "Blog repo $1 already exists")
|
@@ -25,7 +24,6 @@ class RuneBlog
|
|
25
24
|
make_exception(:CantCreateDir, "Can't create directory $1")
|
26
25
|
make_exception(:EditorProblem, "Could not edit $1")
|
27
26
|
make_exception(:NoSuchView, "No such view: $1")
|
28
|
-
# make_exception(:LivetextError, "Livetext#process_file returned nil for $1")
|
29
27
|
make_exception(:NoBlogAccessor, "Runeblog.blog is not set")
|
30
28
|
|
31
29
|
|
@@ -41,40 +39,53 @@ class RuneBlog
|
|
41
39
|
|
42
40
|
include Helpers
|
43
41
|
|
44
|
-
def self.create_new_blog_repo(
|
42
|
+
def self.create_new_blog_repo(dir = ".blogs")
|
45
43
|
raise ArgumentError unless dir.is_a?(String) && ! dir.empty?
|
46
44
|
root_dir = Dir.pwd + "/" + dir
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
45
|
+
self.create(dir)
|
46
|
+
rescue => err
|
47
|
+
puts "Can't create blog repo: '#{dir}' - #{err}"
|
48
|
+
puts err.backtrace.join("\n")
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.create(root = ".blogs")
|
52
|
+
# Crude - FIXME later - # What views are there? Publishing, etc.
|
53
|
+
self.blog = self # Weird. Like a singleton - dumbass circular dependency?
|
54
|
+
$_blog = self # Dumber still?
|
55
|
+
root = Dir.pwd + "/" + root
|
56
|
+
raise BlogRepoAlreadyExists if Dir.exist?(root)
|
57
|
+
create_dir(root)
|
58
|
+
Dir.chdir(root) do
|
51
59
|
create_dir("drafts")
|
52
60
|
create_dir("views")
|
53
61
|
#? create_dir("assets")
|
54
62
|
new_sequence
|
55
63
|
end
|
56
|
-
|
57
|
-
blog.
|
58
|
-
|
59
|
-
|
60
|
-
puts err.backtrace.join("\n")
|
64
|
+
put_config(root: root)
|
65
|
+
@blog = self.new(root)
|
66
|
+
@blog.create_view("test_view")
|
67
|
+
@blog
|
61
68
|
end
|
62
69
|
|
63
|
-
def
|
70
|
+
def self.open(root = ".blogs")
|
71
|
+
# Crude - FIXME later - # What views are there? Publishing, etc.
|
72
|
+
self.blog = self # Weird. Like a singleton - dumbass circular dependency?
|
73
|
+
$_blog = self # Dumber still?
|
74
|
+
root = Dir.pwd + "/" + root
|
75
|
+
blog = self.new(root)
|
76
|
+
end
|
77
|
+
|
78
|
+
def initialize(root_dir = ".blogs") # always assumes existing blog
|
64
79
|
# Crude - FIXME later - # What views are there? Publishing, etc.
|
65
80
|
self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
|
66
81
|
$_blog = self # Dumber still?
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
dir = md[0]
|
71
|
-
end
|
72
|
-
file = dir.empty? ? ConfigFile : dir + "/" + ConfigFile
|
82
|
+
|
83
|
+
@root = root_dir
|
84
|
+
file = @root + "/" + ConfigFile
|
73
85
|
errmsg = "No config file! file = #{file.inspect} dir = #{Dir.pwd}"
|
74
86
|
raise errmsg unless File.exist?(file)
|
75
|
-
# Hmm. current_view doesn't belong?
|
76
|
-
@root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
|
77
87
|
|
88
|
+
@root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
|
78
89
|
md = Dir.pwd.match(%r[.*/views/(.*?)/])
|
79
90
|
@view_name = md[1] if md
|
80
91
|
@views = get_views
|
@@ -166,19 +177,21 @@ class RuneBlog
|
|
166
177
|
|
167
178
|
Dir.chdir(vdir)
|
168
179
|
x = RuneBlog::Default
|
169
|
-
|
180
|
+
# create_dir('themes')
|
181
|
+
copy!("#{Themes}", "themes")
|
170
182
|
create_dir('assets')
|
171
183
|
create_dir('posts')
|
172
184
|
|
173
185
|
create_dir('staging')
|
174
|
-
|
186
|
+
# create_dir('staging/assets')
|
187
|
+
# create_dir('staging/blog')
|
175
188
|
create_dir('remote')
|
176
|
-
|
189
|
+
# create_dir('remote/assets')
|
177
190
|
|
178
|
-
Dir.chdir("themes") { system("tar zxvf #{GemData}/standard.tgz >/dev/null 2>&1") }
|
179
191
|
copy!("themes/standard/*", "staging/")
|
180
|
-
|
181
|
-
|
192
|
+
# copy!("themes/standard/blog/*", "staging/blog/")
|
193
|
+
copy!("themes/standard/*", "remote/")
|
194
|
+
|
182
195
|
pub = "user: xxx\nserver: xxx\ndocroot: xxx\npath: xxx\nproto: xxx\n"
|
183
196
|
dump(pub, "publish")
|
184
197
|
|
@@ -235,7 +248,7 @@ class RuneBlog
|
|
235
248
|
def teaser(slug)
|
236
249
|
id = slug.to_i
|
237
250
|
text = nil
|
238
|
-
post_entry_name = @theme + "/blog
|
251
|
+
post_entry_name = @theme + "/blog/post_entry.lt3"
|
239
252
|
@_post_entry ||= File.read(post_entry_name)
|
240
253
|
vp = post_lookup(id)
|
241
254
|
nslug, aslug, title, date, teaser_text =
|
@@ -348,6 +361,7 @@ class RuneBlog
|
|
348
361
|
raise "No .views call!" if view_line.size < 1
|
349
362
|
view_line = view_line.first
|
350
363
|
views = view_line[7..-1].split
|
364
|
+
views
|
351
365
|
end
|
352
366
|
|
353
367
|
# Remember: A post in multiple views will trigger multiple
|
@@ -398,7 +412,7 @@ class RuneBlog
|
|
398
412
|
copy html, "../remote"
|
399
413
|
collect_recent_posts("recent.html")
|
400
414
|
copy("recent.html", "../remote")
|
401
|
-
livetext "blog
|
415
|
+
livetext "blog/generate", "../remote/index"
|
402
416
|
end
|
403
417
|
end
|
404
418
|
end
|
data/lib/runeblog_version.rb
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
|
3
3
|
|
4
4
|
class RuneBlog
|
5
|
-
VERSION = "0.1.
|
5
|
+
VERSION = "0.1.90"
|
6
6
|
|
7
|
-
|
7
|
+
path = Gem.find_files("runeblog").grep(/runeblog-/).first
|
8
|
+
Path = File.dirname(path)
|
8
9
|
end
|
9
10
|
|
10
11
|
end
|
data/runeblog.gemspec
CHANGED
@@ -24,15 +24,13 @@ spec = Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.16'
|
25
25
|
|
26
26
|
# Files...
|
27
|
-
main = Find.find("bin").to_a
|
28
|
-
Find.find("lib").to_a
|
29
|
-
|
30
|
-
std_theme = ["themes/standard.tgz"]
|
31
|
-
|
32
|
-
misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
|
27
|
+
main = Find.find("bin").to_a +
|
28
|
+
Find.find("lib").to_a +
|
29
|
+
Find.find("themes").to_a
|
33
30
|
test = Find.find("test").to_a
|
31
|
+
misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
|
34
32
|
|
35
|
-
s.files = main +
|
33
|
+
s.files = main + misc + test
|
36
34
|
s.homepage = 'https://github.com/Hal9000/runeblog'
|
37
35
|
s.license = "Ruby"
|
38
36
|
end
|
data/test/make_blog.rb
CHANGED
@@ -38,14 +38,14 @@ end
|
|
38
38
|
puts
|
39
39
|
|
40
40
|
system("rm -rf .blogs")
|
41
|
-
RuneBlog.create_new_blog_repo(
|
42
|
-
x = RuneBlog.new
|
41
|
+
RuneBlog.create_new_blog_repo(".blogs")
|
42
|
+
x = RuneBlog.new(".blogs")
|
43
43
|
|
44
44
|
x.create_view("around_austin") # FIXME remember view title!
|
45
45
|
|
46
46
|
# Hack:
|
47
47
|
if File.exist?("publish")
|
48
|
-
system("cp publish .blogs/
|
48
|
+
system("cp publish .blogs/views/around_austin/publish")
|
49
49
|
end
|
50
50
|
|
51
51
|
x.create_view("computing")
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
templates The first "default theme" - more later
|
3
|
+
├── README This file
|
4
|
+
├── about.html An "about" file (will move)
|
5
|
+
├── assets Assets for entire view (blog)
|
6
|
+
│ ├── application.css "Global" CSS
|
7
|
+
│ ├── favicon.ico Favicon
|
8
|
+
│ └── ... Other files later, images, etc.
|
9
|
+
├── blog ** The whole template for this view (blog)
|
10
|
+
│ ├── _postentry.lt3 Used repeatedly in list of blog posts
|
11
|
+
│ ├── generate.lt3 The "main wrapper" that actually generates everything
|
12
|
+
│ ├── index.lt3 The main "user editable" portion of the template
|
13
|
+
│ ├── navbar.lt3 The navigation bar
|
14
|
+
│ └── sidebar The sidebar (which may include different things)
|
15
|
+
│ ├── ad.lt3 Code to generate an advertisement
|
16
|
+
│ ├── calendar.lt3 Code for a calendar
|
17
|
+
│ ├── news.lt3 Recent news
|
18
|
+
│ └── tag-cloud.lt3 Tag cloud (generated automatically of course)
|
19
|
+
├── global.lt3 Some global settings
|
20
|
+
├── head.lt3 A standard <head> section
|
21
|
+
├── meta.lt3 Standard meta tags
|
22
|
+
└── post
|
23
|
+
├── head.lt3 Specific to post (adds to higher-level head)
|
24
|
+
├── generate.lt3 The "main wrapper" that actually generates the post
|
25
|
+
└── index.lt3 The main "user editable" portion of the post template
|
26
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# include variables before this file?
|
2
|
+
|
3
|
+
.post-title a {
|
4
|
+
color: #010101;
|
5
|
+
font-size: 28px;
|
6
|
+
float: right;
|
7
|
+
display: inline-block;
|
8
|
+
text-align: top;
|
9
|
+
text-decoration: none;
|
10
|
+
}
|
11
|
+
|
12
|
+
.post-title a:hover {
|
13
|
+
text-decoration: none;
|
14
|
+
}
|
15
|
+
|
16
|
+
.post-title-text a {
|
17
|
+
color: #0101a1;
|
18
|
+
font-size: 22px;
|
19
|
+
# float: right;
|
20
|
+
display: block;
|
21
|
+
text-decoration: none;
|
22
|
+
}
|
23
|
+
|
24
|
+
.post-title-text a:hover {
|
25
|
+
text-decoration: none;
|
26
|
+
}
|
27
|
+
|
28
|
+
.post-date {
|
29
|
+
color: #9a9a9a;
|
30
|
+
font-size: 15px;
|
31
|
+
display: block;
|
32
|
+
float: left;
|
33
|
+
text-align: top;
|
34
|
+
}
|
Binary file
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.mixin liveblog
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<!-- Editing this file is not recommended. -->
|
5
|
+
<!-- It was generated from $File on $$date. -->
|
6
|
+
|
7
|
+
.include global.lt3
|
8
|
+
.include blog/head.lt3
|
9
|
+
<body>
|
10
|
+
$.include navbar.lt3
|
11
|
+
<div class="content container-fluid mt-4">
|
12
|
+
<div class="row">
|
13
|
+
$.include blog-index.lt3
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</body>
|
17
|
+
</html>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<head> <!-- fix this later -->
|
2
|
+
|
3
|
+
.include meta.lt3
|
4
|
+
|
5
|
+
.stylesheet
|
6
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
|
7
|
+
sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T
|
8
|
+
.end
|
9
|
+
|
10
|
+
.script
|
11
|
+
https://code.jquery.com/jquery-3.3.1.slim.min.js
|
12
|
+
sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo
|
13
|
+
.end
|
14
|
+
|
15
|
+
.script
|
16
|
+
https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
|
17
|
+
sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1
|
18
|
+
.end
|
19
|
+
|
20
|
+
.script
|
21
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js
|
22
|
+
sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM
|
23
|
+
.end
|
24
|
+
|
25
|
+
</head>
|
26
|
+
|
27
|
+
.head
|
28
|
+
. # fix/remove later
|
29
|
+
.end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="post">
|
2
|
+
<table width=100%>
|
3
|
+
<tr>
|
4
|
+
<td width=8% valign=top>
|
5
|
+
<span class="post-date mt-1 mb-1">
|
6
|
+
<b>#{date}</b>
|
7
|
+
</span>
|
8
|
+
</td>
|
9
|
+
<td> <!-- <span class="post-title-box"> -->
|
10
|
+
<span class="post-title-text"><a href="#{url}">#{title}</a></span>
|
11
|
+
<p><b>#{teaser_text}</b>
|
12
|
+
<br>
|
13
|
+
<a style="text-decoration: none" href="#{url}"><small>Keep reading...</small></a></p> <!-- </span> -->
|
14
|
+
</td>
|
15
|
+
</tr>
|
16
|
+
</table>
|
17
|
+
<br>
|
18
|
+
<br>
|
19
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<head> <!-- fix this later -->
|
2
|
+
|
3
|
+
.include meta.lt3
|
4
|
+
|
5
|
+
.stylesheet
|
6
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
|
7
|
+
sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T
|
8
|
+
.end
|
9
|
+
|
10
|
+
.script
|
11
|
+
https://code.jquery.com/jquery-3.3.1.slim.min.js
|
12
|
+
sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo
|
13
|
+
.end
|
14
|
+
|
15
|
+
.script
|
16
|
+
https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
|
17
|
+
sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1
|
18
|
+
.end
|
19
|
+
|
20
|
+
.script
|
21
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js
|
22
|
+
sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM
|
23
|
+
.end
|
24
|
+
|
25
|
+
</head>
|
26
|
+
|
27
|
+
.head # fix/remove later
|
28
|
+
.end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.mixin liveblog
|
2
|
+
|
3
|
+
. FIXME?
|
4
|
+
|
5
|
+
<html>
|
6
|
+
<!-- Editing this file is not recommended. -->
|
7
|
+
<!-- It was generated from $File on $$date. -->
|
8
|
+
|
9
|
+
.include global.lt3
|
10
|
+
.include blog/head.lt3
|
11
|
+
<section class="post">
|
12
|
+
<div class="entry-content">
|
13
|
+
$.include post-index.lt3
|
14
|
+
</div>
|
15
|
+
</section>
|
16
|
+
</body>
|
17
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.mixin liveblog
|
2
|
+
. ^ get rid of this later
|
3
|
+
|
4
|
+
.post 0
|
5
|
+
|
6
|
+
.title The new amphitheatre is overrated
|
7
|
+
.pubdate 2019-07-09
|
8
|
+
.views around_austin
|
9
|
+
.tags
|
10
|
+
|
11
|
+
.teaser
|
12
|
+
It used to be that all major concerts played the Erwin Center.
|
13
|
+
|
14
|
+
.end
|
15
|
+
Now, depending on what you consider "major," blah blah blah...
|
16
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
.card2 Recent News
|
2
|
+
https://nest.com/whats-happening/,_blank,Google Is Turning Off the Works-with-Nest API
|
3
|
+
https://developers.googleblog.com/2019/05/Flutter-io19.html,_blank,Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
|
4
|
+
https://github.com/kkuchta/css-only-chat,_blank,Css-only-chat: A truly monstrous async web chat using no JS on the front end
|
5
|
+
https://jaycarlson.net/microcontrollers/,_blank,The Amazing $1 Microcontroller (2017)
|
6
|
+
.end
|
7
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.tag_cloud
|
2
|
+
https://google.com/,_blank,btn btn-dark m-1,Programming
|
3
|
+
https://google.com/,_blank,btn btn-danger m-1,Science Fiction
|
4
|
+
https://google.com/,_blank,btn btn-light m-1,Art
|
5
|
+
https://google.com/,_blank,btn btn-dark m-1,Robotics
|
6
|
+
https://google.com/,_blank,btn btn-warning m-1,Food and Travel
|
7
|
+
https://google.com/,_blank,btn btn-light m-1,DIY Hacks
|
8
|
+
https://google.com/,_blank,btn btn-info m-1,Surfing
|
9
|
+
.end
|
10
|
+
|
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.90
|
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-09-
|
11
|
+
date: 2019-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -77,7 +77,27 @@ files:
|
|
77
77
|
- test/general_test.rb
|
78
78
|
- test/make_blog.rb
|
79
79
|
- test/test
|
80
|
-
- themes/standard
|
80
|
+
- themes/standard/README
|
81
|
+
- themes/standard/about.html
|
82
|
+
- themes/standard/assets/blog.css
|
83
|
+
- themes/standard/assets/favicon.ico
|
84
|
+
- themes/standard/blog-index.lt3
|
85
|
+
- themes/standard/blog-meta.lt3
|
86
|
+
- themes/standard/blog-navbar.lt3
|
87
|
+
- themes/standard/blog/generate.lt3
|
88
|
+
- themes/standard/blog/head.lt3
|
89
|
+
- themes/standard/blog/post_entry.lt3
|
90
|
+
- themes/standard/global.lt3
|
91
|
+
- themes/standard/head.lt3
|
92
|
+
- themes/standard/meta.lt3
|
93
|
+
- themes/standard/navbar.lt3
|
94
|
+
- themes/standard/post-generate.lt3
|
95
|
+
- themes/standard/post-head.lt3
|
96
|
+
- themes/standard/post-index.lt3
|
97
|
+
- themes/standard/sidebar/ad.lt3
|
98
|
+
- themes/standard/sidebar/calendar.lt3
|
99
|
+
- themes/standard/sidebar/news.lt3
|
100
|
+
- themes/standard/sidebar/tag-cloud.lt3
|
81
101
|
homepage: https://github.com/Hal9000/runeblog
|
82
102
|
licenses:
|
83
103
|
- Ruby
|
data/themes/standard.tgz
DELETED
Binary file
|