runeblog 0.2.83 → 0.2.84
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 +1 -5
- data/empty_view/themes/standard/banner/top.lt3 +19 -0
- data/empty_view/themes/standard/blog/banner.lt3 +0 -2
- data/lib/liveblog.rb +41 -97
- data/lib/processing.rb +2 -2
- data/lib/repl.rb +3 -0
- data/lib/runeblog.rb +22 -9
- data/lib/runeblog_version.rb +1 -1
- metadata +3 -4
- data/empty_view/remote/banner/top.html +0 -4
- data/empty_view/themes/standard/banner/top.html +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0a0162c325b884d416802f6502ca34273cc388d7af3e58347e886c1b1e4c4d1
|
4
|
+
data.tar.gz: 450abb053bea34e25e392e6421fbd38cd6ded80d9bc93379b3a0f288f9dd60e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 886ae461d1898a79c2b674b728418975b3d28bd48a43c7d1cd2706133495c4497fbda6d1af3d365015929e7e53d6fab76047f4b7b17697cfed88f4dbacda153d
|
7
|
+
data.tar.gz: 100ef7fd298aff83c714070fc7beda5cedf03d063bf1b8dc5a9a150a16e56bada728842e23acbcb61b827eacea22404e5f743a74de905daf614629265b8e1f10
|
data/bin/blog
CHANGED
@@ -26,7 +26,7 @@ end
|
|
26
26
|
|
27
27
|
def get_started
|
28
28
|
if yesno("Do you want to qo a quick setup?")
|
29
|
-
puts "
|
29
|
+
puts " First choose your editor."
|
30
30
|
@blog.editor = pick_editor
|
31
31
|
File.write("#{@blog.root}/data/EDITOR", @blog.editor)
|
32
32
|
|
@@ -37,19 +37,15 @@ def get_started
|
|
37
37
|
end
|
38
38
|
# Now create a custom global.lt3
|
39
39
|
@blog._generate_global
|
40
|
-
sleep 1
|
41
40
|
noview = true
|
42
41
|
puts fx("\n Quick setup complete!", :bold)
|
43
42
|
if yesno("Create your first view now?")
|
44
43
|
cmd_new_view(nil)
|
45
44
|
noview = false
|
46
|
-
sleep 1
|
47
45
|
puts "\n View #{@blog.view} created!\n "
|
48
46
|
end
|
49
|
-
system("cp #@root/data/global.lt3 #@root/views/#{@blog.view}/themes/standard/")
|
50
47
|
end
|
51
48
|
|
52
|
-
sleep 0.5
|
53
49
|
|
54
50
|
puts
|
55
51
|
print fx(" For help", :bold)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
.nopara
|
2
|
+
<svg width="98%" height="100"
|
3
|
+
viewBox="0 0 98% 100">
|
4
|
+
<defs>
|
5
|
+
<linearGradient id="grad1" x1="100%" y1="100%" x2="0%" y2="100%">
|
6
|
+
<stop offset="0%" style="stop-color:rgb(198,198,228);stop-opacity:1" />
|
7
|
+
<stop offset="100%" style="stop-color:rgb(30,30,50);stop-opacity:1" />
|
8
|
+
</linearGradient>
|
9
|
+
</defs>
|
10
|
+
<style>
|
11
|
+
.small { font: 20px sans-serif; fill: #98baff }
|
12
|
+
.heavy { font: bold 55px sans-serif; fill: #76a9ff }
|
13
|
+
</style>
|
14
|
+
|
15
|
+
<rect x="20" y="20" rx="15" ry="15" width="98%" height="100" fill="url(#grad1)"/>
|
16
|
+
|
17
|
+
<text x="25" y="60" class=heavy>$blog</text>
|
18
|
+
<text x="25" y="90" class=small>$blog.desc</text>
|
19
|
+
</svg>
|
data/lib/liveblog.rb
CHANGED
@@ -91,7 +91,7 @@ end
|
|
91
91
|
def banner
|
92
92
|
count = 0
|
93
93
|
span = 1
|
94
|
-
|
94
|
+
bg = "white" # outside loop
|
95
95
|
wide = nil
|
96
96
|
high = 250
|
97
97
|
str2 = ""
|
@@ -103,12 +103,9 @@ def banner
|
|
103
103
|
tag, *data = line.split
|
104
104
|
data ||= []
|
105
105
|
case tag
|
106
|
-
when "width"
|
107
|
-
|
108
|
-
when "
|
109
|
-
high = data[0]
|
110
|
-
when "bgcolor"
|
111
|
-
@bg = data[0] || "white"
|
106
|
+
when "width"; wide = data[0]
|
107
|
+
when "height"; high = data[0]
|
108
|
+
when "bgcolor"; bg = data[0] || "white"
|
112
109
|
when "image"
|
113
110
|
image = data[0] || "banner.jpg"
|
114
111
|
image = "banner"/image
|
@@ -122,31 +119,39 @@ def banner
|
|
122
119
|
when "text"
|
123
120
|
data[0] ||= "top.html"
|
124
121
|
file = "banner"/data[0]
|
122
|
+
if ! File.exist?(file)
|
123
|
+
src = file.sub(/html$/, "lt3")
|
124
|
+
if File.exist?(src)
|
125
|
+
preprocess src: src, dst: file, vars: Livetext::Vars
|
126
|
+
else
|
127
|
+
raise "Neither #{file} nor #{src} found"
|
128
|
+
end
|
129
|
+
end
|
125
130
|
str2 << "<td colspan=#{span}>" + File.read(file) + "</td>" + "\n"
|
126
131
|
when "navbar"
|
127
132
|
dir = @blog.root/:views/@blog.view/"themes/standard/banner/" + "\n"
|
128
133
|
_make_navbar # horiz is default
|
129
134
|
file = "banner/navbar.html"
|
130
135
|
navbar = File.read(file)
|
131
|
-
# str2 << "<td colspan=#{span}><div style='text-align: center'>#{stuff}</div></td>" + "\n"
|
132
136
|
when "vnavbar"
|
133
137
|
dir = @blog.root/:views/@blog.view/"themes/standard/banner/"
|
134
138
|
_make_navbar(:vert)
|
135
139
|
file = "banner/vnavbar.html"
|
136
140
|
navbar = File.read(file)
|
137
|
-
# str2 << "<td colspan=#{span}>" + File.read(file) + "</td>" + "\n"
|
138
141
|
when "break"
|
139
|
-
|
142
|
+
# span = count - 1
|
140
143
|
str2 << " </tr>\n <tr>" + "\n"
|
141
144
|
else
|
142
145
|
str2 << " '#{tag}' isn't known" + "\n"
|
143
146
|
end
|
144
147
|
end
|
145
|
-
_out
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
148
|
+
_out <<~HTML
|
149
|
+
<table width=100% bgcolor=#{bg}>
|
150
|
+
<tr>
|
151
|
+
#{str2}
|
152
|
+
</tr>
|
153
|
+
</table>
|
154
|
+
HTML
|
150
155
|
_out navbar if navbar
|
151
156
|
rescue => err
|
152
157
|
STDERR.puts "err = #{err}"
|
@@ -177,9 +182,9 @@ def _get_arg(name, args) # really belongs in livetext
|
|
177
182
|
end
|
178
183
|
|
179
184
|
def _svg_title(*args)
|
180
|
-
width =
|
181
|
-
height =
|
182
|
-
bgcolor = "
|
185
|
+
width = "95%"
|
186
|
+
height = 90
|
187
|
+
bgcolor = "black"
|
183
188
|
style = nil
|
184
189
|
size = ""
|
185
190
|
font = "sans-serif"
|
@@ -194,103 +199,43 @@ def _svg_title(*args)
|
|
194
199
|
align2 = "center"
|
195
200
|
|
196
201
|
e = args.each
|
197
|
-
hash = {}
|
202
|
+
hash = {} # TODO get rid of hash??
|
203
|
+
|
204
|
+
valid = %w[width height bgcolor style size font color xy
|
205
|
+
align style2 size2 font2 color2 xy2 align2]
|
206
|
+
os = OpenStruct.new
|
198
207
|
loop do
|
199
208
|
arg = e.next
|
200
209
|
arg = arg.chop
|
201
|
-
|
202
|
-
|
203
|
-
when "height"; height = e.next
|
204
|
-
when "bgcolor"; bgcolor = e.next
|
205
|
-
when "style"; style = e.next
|
206
|
-
when "size"; size = e.next
|
207
|
-
when "font"; font = e.next
|
208
|
-
when "color"; color = e.next
|
209
|
-
when "xy"; xy = e.next
|
210
|
-
when "align"; align = e.next
|
211
|
-
when "style2"; style2 = e.next
|
212
|
-
when "size2"; size2 = e.next
|
213
|
-
when "font2"; font2 = e.next
|
214
|
-
when "color2"; color2 = e.next
|
215
|
-
when "xy2"; xy2 = e.next
|
216
|
-
when "align2"; align2 = e.next
|
217
|
-
end
|
210
|
+
raise "Don't know '#{arg}'" unless valid.include?(arg)
|
211
|
+
os.send(arg+"=", e.next)
|
218
212
|
end
|
219
213
|
x, y = xy.split(",")
|
220
214
|
x2, y2 = xy2.split(",")
|
221
|
-
|
222
|
-
hash[
|
223
|
-
hash["x2"] = x2
|
224
|
-
hash["y2"] = y2
|
225
|
-
hash["width"] = width
|
226
|
-
hash["height"] = height
|
227
|
-
hash["bgcolor"] = bgcolor
|
228
|
-
hash["style"] = style
|
229
|
-
hash["size"] = size
|
230
|
-
hash["font"] = font
|
231
|
-
hash["color"] = color
|
232
|
-
hash["xy"] = xy
|
233
|
-
hash["align"] = align
|
234
|
-
hash["style2"] = style2
|
235
|
-
hash["size2"] = size2
|
236
|
-
hash["font2"] = font2
|
237
|
-
hash["color2"] = color2
|
238
|
-
hash["align2"] = align2
|
215
|
+
names = %w[x y x2 y2] + valid
|
216
|
+
names.each {|name| hash[name] = os.send(name) }
|
239
217
|
result = <<~HTML
|
240
218
|
<svg width="#{width}" height="#{height}"
|
241
219
|
viewBox="0 0 #{width} #{height}">
|
220
|
+
<defs>
|
221
|
+
<linearGradient id="grad1" x1="100%" y1="100%" x2="0%" y2="100%">
|
222
|
+
<stop offset="0%" style="stop-color:rgb(198,198,228);stop-opacity:1" />
|
223
|
+
<stop offset="100%" style="stop-color:rgb(30,30,50);stop-opacity:1" />
|
224
|
+
</linearGradient>
|
225
|
+
</defs>
|
242
226
|
<style>
|
243
227
|
.title { font: #{style} #{size} #{font}; fill: #{color} }
|
244
228
|
.subtitle { font: #{style2} #{size2} #{font2}; fill: #{color2} }
|
245
229
|
</style>
|
246
|
-
<rect x="10" y="10" rx="10" ry="10" width="#{width
|
230
|
+
<rect x="10" y="10" rx="10" ry="10" width="#{width}" height="#{height}" fill="url(#grad1)"/>
|
247
231
|
<text text-anchor="#{align}" x="#{x}" y="#{y}" class="title">#{Livetext::Vars[:blog]} </text>
|
248
232
|
<text text-anchor="#{align2}" x="#{x2}" y="#{y2}" class="subtitle">#{Livetext::Vars["blog.desc"]} </text>
|
249
|
-
</svg>
|
233
|
+
</svg>
|
234
|
+
<!-- ^ how does syntax highlighting get messed up? </svg> -->
|
250
235
|
HTML
|
251
236
|
[result, hash]
|
252
237
|
end
|
253
238
|
|
254
|
-
def svg_title_SOON
|
255
|
-
tstyle = tsize = tfont = tcolor = txy = talign = nil
|
256
|
-
t2style = t2size = t2font = t2color = t2xy = t2align = nil
|
257
|
-
wide, high, hue = 450, 150, "white"
|
258
|
-
_body do |line|
|
259
|
-
count += 1
|
260
|
-
tag, *data = line.split
|
261
|
-
data ||= []
|
262
|
-
title_params = {style: nil, size: "", font: "sans-serif", color: "white",
|
263
|
-
xy: "5,5", align: "left"}
|
264
|
-
case tag
|
265
|
-
when "title";
|
266
|
-
hash = _parse_colon_args(data, title_params)
|
267
|
-
tstyle, tsize, tfont, tcolor, txy, talign =
|
268
|
-
hash.values_at(:tstyle, :tsize, :tfont, :tcolor, :txy, :talign)
|
269
|
-
tx, ty = txy.split(",")
|
270
|
-
when "title2";
|
271
|
-
hash = _parse_colon_args(data, title_params)
|
272
|
-
t2style, t2size, t2font, t2color, t2xy, t2align =
|
273
|
-
hash.values_at(:t2style, :t2size, :t2font, :t2color, :t2xy, :t2align)
|
274
|
-
t2x, t2y = t2xy.split(",")
|
275
|
-
when "width"; wide = _get_arg(:width, data)
|
276
|
-
when "height"; high = _get_arg(:height, data)
|
277
|
-
when "bgcolor"; hue = _get_arg(:bgcolor, data)
|
278
|
-
end
|
279
|
-
end
|
280
|
-
<<~HTML
|
281
|
-
<svg width="#{wide}" height="#{high}"
|
282
|
-
viewBox="0 0 #{wide} #{high}">
|
283
|
-
<style>
|
284
|
-
.title { font: #{tstyle} #{tsize} #{tfont}; fill: #{tcolor} }
|
285
|
-
.subtitle { font: #{t2style} #{t2size} #{t2font}; fill: #{t2color} }
|
286
|
-
</style>
|
287
|
-
<rect x="0" y="0" rx="10" ry="10" width="#{wide}" height="#{height}" fill="#{bgcolor}"/>
|
288
|
-
<text text-anchor="#{talign}" x="#{tx}" y="#{tx}" class="title">$blog </text>
|
289
|
-
<text text-anchor="#{t2align}" x="#{t2x}" y="#{t2y}" class="subtitle">$blog.desc </text>
|
290
|
-
</svg>
|
291
|
-
HTML
|
292
|
-
end
|
293
|
-
|
294
239
|
def quote
|
295
240
|
_passthru "<blockquote>"
|
296
241
|
_passthru _body.join(" ")
|
@@ -753,7 +698,6 @@ def _make_navbar(orient = :horiz)
|
|
753
698
|
list1, list2 = '<l class="navbar-nav mr-auto">', "</ul>"
|
754
699
|
end
|
755
700
|
|
756
|
-
# <!-- FIXME weird bug here!!! -->
|
757
701
|
start = <<-HTML
|
758
702
|
<table><tr><td>
|
759
703
|
<nav class="navbar #{extra} navbar-light bg-light">
|
data/lib/processing.rb
CHANGED
@@ -22,7 +22,7 @@ end
|
|
22
22
|
|
23
23
|
def preprocess(cwd: Dir.pwd, src:,
|
24
24
|
dst: (strip = true; File.basename(src).sub(/.lt3$/,"")),
|
25
|
-
deps: [], copy: nil, debug: false, force: false)
|
25
|
+
deps: [], copy: nil, debug: false, force: false, vars: nil)
|
26
26
|
src += LEXT unless src.end_with?(LEXT)
|
27
27
|
dst += ".html" unless (dst.end_with?(".html") || strip)
|
28
28
|
sp = " "*12
|
@@ -38,7 +38,7 @@ def preprocess(cwd: Dir.pwd, src:,
|
|
38
38
|
stale = stale?(src, dst, deps, force)
|
39
39
|
if stale
|
40
40
|
live = Livetext.new
|
41
|
-
out = live.xform_file(src)
|
41
|
+
out = live.xform_file(src, vars: vars)
|
42
42
|
File.write(dst, out)
|
43
43
|
system!("cp #{dst} #{copy}") if copy
|
44
44
|
end
|
data/lib/repl.rb
CHANGED
@@ -276,6 +276,9 @@ module RuneBlog::REPL
|
|
276
276
|
puts
|
277
277
|
end
|
278
278
|
@blog.create_view(arg)
|
279
|
+
text = File.read("#{@blog.root}/data/global.lt3")
|
280
|
+
File.write("#{@blog.root}/views/#{@blog.view}/themes/standard/global.lt3",
|
281
|
+
text.gsub(/VIEW_NAME/, @blog.view.to_s))
|
279
282
|
vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
|
280
283
|
edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
|
281
284
|
@blog.change_view(arg)
|
data/lib/runeblog.rb
CHANGED
@@ -376,15 +376,28 @@ class RuneBlog
|
|
376
376
|
<body>
|
377
377
|
HTML
|
378
378
|
posts = _sorted_posts
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
379
|
+
if posts.size > 0
|
380
|
+
wanted = [8, posts.size].min # estimate how many we want?
|
381
|
+
enum = posts.each
|
382
|
+
entries = []
|
383
|
+
wanted.times do
|
384
|
+
postid = File.basename(enum.next)
|
385
|
+
postid = postid.to_i
|
386
|
+
entry = index_entry(postid)
|
387
|
+
entries << entry
|
388
|
+
text << entry
|
389
|
+
end
|
390
|
+
else
|
391
|
+
text << <<-HTML
|
392
|
+
<svg width="95%" height="95%" viewBox="0 0 95% 95%">
|
393
|
+
<style> .huge { font: italic 100px sans-serif; fill: white } </style>
|
394
|
+
<rect x="0" y="0" rx="50" ry="50" width="95%" height="95%" fill="lightblue"/>
|
395
|
+
<text x="250" y="120" class=huge>No</text>
|
396
|
+
<text x="250" y="230" class=huge>posts</text>
|
397
|
+
<text x="250" y="340" class=huge>here</text>
|
398
|
+
<text x="250" y="450" class=huge>yet</text>
|
399
|
+
</svg>
|
400
|
+
HTML
|
388
401
|
end
|
389
402
|
text << "</body></html>"
|
390
403
|
File.write(@vdir/:remote/file, text)
|
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.2.
|
4
|
+
version: 0.2.84
|
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-12-
|
11
|
+
date: 2019-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -91,7 +91,6 @@ files:
|
|
91
91
|
- empty_view/assets/sky2.jpg
|
92
92
|
- empty_view/remote/assets/GIT_IS_DUMB
|
93
93
|
- empty_view/remote/banner/austin-pano.jpg
|
94
|
-
- empty_view/remote/banner/top.html
|
95
94
|
- empty_view/remote/etc/GIT_IS_DUMB
|
96
95
|
- empty_view/remote/permalink/GIT_IS_DUMB
|
97
96
|
- empty_view/remote/widgets/ad/GIT_IS_DUMB
|
@@ -104,7 +103,7 @@ files:
|
|
104
103
|
- empty_view/themes/standard/banner/contact.lt3
|
105
104
|
- empty_view/themes/standard/banner/faq.lt3
|
106
105
|
- empty_view/themes/standard/banner/list.data
|
107
|
-
- empty_view/themes/standard/banner/top.
|
106
|
+
- empty_view/themes/standard/banner/top.lt3
|
108
107
|
- empty_view/themes/standard/blog/banner.lt3
|
109
108
|
- empty_view/themes/standard/blog/generate.lt3
|
110
109
|
- empty_view/themes/standard/blog/head.lt3
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<svg width="95%" height="55"
|
2
|
-
viewBox="0 0 95% 55">
|
3
|
-
<defs>
|
4
|
-
<linearGradient id="grad1" x1="100%" y1="100%" x2="0%" y2="100%">
|
5
|
-
<stop offset="0%" style="stop-color:rgb(198,198,228);stop-opacity:1" />
|
6
|
-
<stop offset="100%" style="stop-color:rgb(30,30,50);stop-opacity:1" />
|
7
|
-
</linearGradient>
|
8
|
-
</defs>
|
9
|
-
<style>
|
10
|
-
.small { font: 13px sans-serif; fill: #98baff }
|
11
|
-
.heavy { font: bold 35px sans-serif; fill: #76a9ff }
|
12
|
-
</style>
|
13
|
-
|
14
|
-
<rect x="0" y="0" rx="3" ry="3" width="95%" height="55" fill="url(#grad1)"/>
|
15
|
-
|
16
|
-
<text x="5" y="33" class=heavy>$blog</text>
|
17
|
-
<text x="5" y="48" class=small>$blog.desc</text>
|
18
|
-
</svg>
|