runeblog 0.2.46 → 0.2.51
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 +4 -3
- data/empty_view/assets/austin-pano.jpg +0 -0
- data/empty_view/themes/standard/banner/about.lt3 +18 -0
- data/empty_view/themes/standard/banner/blog-banner.jpg +0 -0
- data/empty_view/themes/standard/banner/contact.lt3 +18 -0
- data/empty_view/themes/standard/banner/faq.lt3 +1 -0
- data/empty_view/themes/standard/banner/navbar.lt3 +17 -0
- data/empty_view/themes/standard/blog/generate.lt3 +5 -3
- data/empty_view/themes/standard/blog/post_entry.lt3 +4 -1
- data/empty_view/themes/standard/navbar/navbar.lt3 +1 -1
- data/empty_view/themes/standard/widgets/pages/faq.lt3 +34 -3
- data/lib/global.rb +13 -39
- data/lib/helpers-blog.rb +0 -29
- data/lib/helpers-repl.rb +1 -0
- data/lib/liveblog.rb +142 -10
- data/lib/post.rb +18 -14
- data/lib/publish.rb +0 -1
- data/lib/repl.rb +127 -13
- data/lib/runeblog.rb +95 -59
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +0 -1
- data/lib/xlate.rb +38 -32
- data/test/austin.rb +2 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 600dac0389d976fd41b8c3a5f4f63e4896a1b3f330525faa6b703dfb38e0b825
|
4
|
+
data.tar.gz: 52472d46f783f209ad13e95f8e230c89173780a98867389a075833fb3cb1edd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a650511f857069328ec4295e4ab1c70add5730118b68c16d45113844215f8db540bad78580225228b24ae4b26022abda6ab1e5af487edc231360d1a1c50fbda
|
7
|
+
data.tar.gz: 641d6ae9269a77d36929f36810ff779736cee66e81e0bb27660f8e7832f2f6ecce57977362a2128585789365d503a4f79b03580674293bf7a8575facadc296ac
|
data/bin/blog
CHANGED
@@ -23,7 +23,8 @@ TEXT
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def mainloop
|
26
|
-
|
26
|
+
info = @blog.view || "no view"
|
27
|
+
print fx("[#{info}] ", Red, :bold)
|
27
28
|
cmd = STDSCR.gets(history: @cmdhist, tab: @tabcom)
|
28
29
|
cmd_quit(nil) if cmd.nil? # ^D
|
29
30
|
cmd.chomp!
|
@@ -72,7 +73,7 @@ puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red)
|
|
72
73
|
|
73
74
|
loop { mainloop }
|
74
75
|
|
75
|
-
|
76
|
-
|
76
|
+
system("tput clear")
|
77
|
+
sleep 0.2
|
77
78
|
puts
|
78
79
|
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This is a sample file typical of page referenced
|
3
|
+
. directly from the navigation bar.
|
4
|
+
. It is like a special case of a page in the "pages"
|
5
|
+
. widget.
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
.set this.title="About me"
|
9
|
+
. make this better later
|
10
|
+
<html><body>
|
11
|
+
<div class="content container-fluid mt-4">
|
12
|
+
<div class="row">
|
13
|
+
<h1>$this.title</h1>
|
14
|
+
. content starts here...
|
15
|
+
Blah blah blah...
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</body></html>
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This is a sample file typical of page referenced
|
3
|
+
. directly from the navigation bar.
|
4
|
+
. It is like a special case of a page in the "pages"
|
5
|
+
. widget.
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
.set this.title="Contact"
|
9
|
+
. make this better later
|
10
|
+
<html><body>
|
11
|
+
<div class="content container-fluid mt-4">
|
12
|
+
<div class="row">
|
13
|
+
<h1>$this.title</h1>
|
14
|
+
. content starts here...
|
15
|
+
How to contact me by email, smoke signals, ICBM, seance, ...
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
.include ../widgets/pages/faq.lt3
|
@@ -0,0 +1,17 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This defines the content of the navigation bar.
|
3
|
+
. The first one is a special case.
|
4
|
+
. The others are understood to refer to .lt3 files
|
5
|
+
. such as navbar/about.lt3 (which is processed into
|
6
|
+
. HTML).
|
7
|
+
. The title may be more than one word. Quotes are
|
8
|
+
. not needed.
|
9
|
+
. --------------------------------------------------
|
10
|
+
|
11
|
+
.navbar2
|
12
|
+
index Home
|
13
|
+
about About
|
14
|
+
contact Contact
|
15
|
+
faq FAQ
|
16
|
+
.end
|
17
|
+
|
@@ -14,16 +14,18 @@
|
|
14
14
|
.include blog/head.lt3
|
15
15
|
<body>
|
16
16
|
|
17
|
+
.set color = #101035
|
18
|
+
|
17
19
|
. FIXME
|
18
|
-
<table width=100
|
20
|
+
<table width=100% bgcolor=$color>
|
19
21
|
<tr>
|
20
|
-
<td width=30% bgcolor
|
22
|
+
<td width=30% bgcolor=$color>
|
21
23
|
<div style="text-align: center; color: white">
|
22
24
|
<h1>Around Austin</h1><br>
|
23
25
|
The view from downtown...
|
24
26
|
</div>
|
25
27
|
</td>
|
26
|
-
<td><img src=assets/
|
28
|
+
<td><img src=assets/austin-pano.jpg width=100%></img>
|
27
29
|
</tr>
|
28
30
|
</table>
|
29
31
|
|
@@ -2,13 +2,14 @@
|
|
2
2
|
. This HTML fragment gives the format of a post's
|
3
3
|
. "index" entry (recent posts on blog front page).
|
4
4
|
. --------------------------------------------------
|
5
|
+
.nopara
|
5
6
|
|
6
7
|
<div class="post">
|
7
8
|
<table width=100% cellpadding=7>
|
8
9
|
<tr>
|
9
10
|
<td width=14% valign=top align=right style="margin-top: -1px;">
|
10
11
|
<!-- <span class="post-date mt-1 mb-1" style="margin-top: 3px; text-align: right"> -->
|
11
|
-
<font size=-1
|
12
|
+
<font size=-1>#{date}</font>
|
12
13
|
<!-- </span> -->
|
13
14
|
</td>
|
14
15
|
<td>
|
@@ -21,3 +22,5 @@
|
|
21
22
|
</tr>
|
22
23
|
</table>
|
23
24
|
</div>
|
25
|
+
|
26
|
+
<font size=-4><br></font>
|
@@ -1,9 +1,40 @@
|
|
1
1
|
.mixin liveblog
|
2
2
|
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
|
6
|
+
<style>
|
7
|
+
* { font-family: verdana }
|
8
|
+
</style>
|
9
|
+
|
10
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
11
|
+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"></link>
|
12
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap-theme.min.css"></link>
|
13
|
+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
14
|
+
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body>
|
18
|
+
|
3
19
|
<h2>Frequently Asked Questions</h2>
|
4
20
|
|
5
|
-
|
6
|
-
|
7
|
-
|
21
|
+
.faq Are you a rabbit?
|
22
|
+
Yes, I am.
|
23
|
+
.end
|
24
|
+
|
25
|
+
.faq Are you a frog?
|
26
|
+
Don't be stupid. I just told you I was a rabbit.
|
27
|
+
.end
|
28
|
+
|
29
|
+
.faq Why do you answer a question with a question?
|
30
|
+
*Do I in fact answer a question with a question?
|
31
|
+
.end
|
32
|
+
|
33
|
+
.faq Are you serious?
|
34
|
+
No, I'm a rabbit.
|
35
|
+
.end
|
8
36
|
|
9
37
|
.backlink
|
38
|
+
|
39
|
+
</body>
|
40
|
+
</html>
|
data/lib/global.rb
CHANGED
@@ -30,48 +30,22 @@ def make_exception(sym, str)
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
33
|
+
def system!(str, show: false)
|
34
|
+
log!(enter: __method__, args: [str], level: 2)
|
35
|
+
STDERR.puts str if show
|
36
|
+
rc = system(str)
|
37
|
+
if rc
|
38
|
+
return rc
|
39
|
+
else
|
40
|
+
STDERR.puts "FAILED: #{str.inspect}"
|
41
|
+
STDERR.puts "\ncaller = \n#{caller.join("\n ")}\n"
|
42
|
+
return rc
|
43
|
+
end
|
44
|
+
rc
|
45
|
+
end
|
46
46
|
|
47
47
|
def prefix(num)
|
48
48
|
log!(enter: __method__, args: [num], level: 3)
|
49
49
|
"#{'%04d' % num.to_i}"
|
50
50
|
end
|
51
51
|
|
52
|
-
def check_meta(meta, where = "")
|
53
|
-
log!(enter: __method__, args: [meta, where], level: 3)
|
54
|
-
str = "--- #{where}\n"
|
55
|
-
str << "\ncheck_meta: \n" + caller.join("\n") + "\n meta = #{meta.inspect}\n"
|
56
|
-
str << " title missing!\n" unless meta.title
|
57
|
-
str << " title missing! (empty)" if meta.title && meta.title.empty?
|
58
|
-
str << " num missing!\n" unless meta.num
|
59
|
-
if str =~ /missing!/
|
60
|
-
debug str
|
61
|
-
raise str
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def verify(hash)
|
66
|
-
log!(enter: __method__, args: [hash], level: 3)
|
67
|
-
hash.each_pair do |expr, msg|
|
68
|
-
puts "<< #{msg}" unless expr
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def assure(hash) # really the same as verify for now...
|
73
|
-
log!(enter: __method__, args: [hash], level: 3)
|
74
|
-
hash.each_pair do |expr, msg|
|
75
|
-
puts "<< #{msg}" unless expr
|
76
|
-
end
|
77
|
-
end
|
data/lib/helpers-blog.rb
CHANGED
@@ -19,22 +19,6 @@ module RuneBlog::Helpers
|
|
19
19
|
puts " Failed: #{cmd} - from #{caller[0]}" unless rc
|
20
20
|
end
|
21
21
|
|
22
|
-
# def get_root
|
23
|
-
# log!(enter: __method__)
|
24
|
-
# if $_blog
|
25
|
-
# if $_blog.root
|
26
|
-
# puts "0. Returned: #{$_blog.root}/"
|
27
|
-
# return $_blog.root + "/"
|
28
|
-
# else
|
29
|
-
# puts "1. Returned: ./"
|
30
|
-
# return "./"
|
31
|
-
# end
|
32
|
-
# else
|
33
|
-
# puts "2. Returned: ./"
|
34
|
-
# return "./"
|
35
|
-
# end
|
36
|
-
# end
|
37
|
-
|
38
22
|
def read_config(file, *syms)
|
39
23
|
log!(enter: __method__, args: [file, *syms], level: 3)
|
40
24
|
lines = File.readlines(file).map(&:chomp)
|
@@ -67,18 +51,6 @@ module RuneBlog::Helpers
|
|
67
51
|
vals
|
68
52
|
end
|
69
53
|
|
70
|
-
# def put_config(root:, view:"test_view", editor: "/usr/local/bin/vim")
|
71
|
-
# log!(enter: __method__, args: [root, view, editor])
|
72
|
-
# Dir.mkdir(root) unless Dir.exist?(root)
|
73
|
-
# Dir.chdir(root) do
|
74
|
-
# File.open("config", "w") do |cfg|
|
75
|
-
# cfg.puts "root: #{root}"
|
76
|
-
# cfg.puts "current_view: #{view}"
|
77
|
-
# cfg.puts "editor: #{editor}"
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
# end
|
81
|
-
|
82
54
|
def write_config(obj, file)
|
83
55
|
log!(enter: __method__, args: [obj, file], level: 2)
|
84
56
|
hash = obj.to_h
|
@@ -155,7 +127,6 @@ module RuneBlog::Helpers
|
|
155
127
|
log!(enter: __method__, args: [obj, name], level: 3)
|
156
128
|
File.write(name, obj)
|
157
129
|
end
|
158
|
-
|
159
130
|
end
|
160
131
|
|
161
132
|
def dump(obj, name) # FIXME scope
|
data/lib/helpers-repl.rb
CHANGED
data/lib/liveblog.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
require 'pp'
|
3
3
|
require 'date'
|
4
|
+
require 'find'
|
4
5
|
|
5
6
|
require 'runeblog'
|
6
7
|
require 'pathmagic'
|
@@ -64,13 +65,64 @@ def post_trailer
|
|
64
65
|
# damned syntax highlighting
|
65
66
|
end
|
66
67
|
|
68
|
+
def faq
|
69
|
+
@faq_count ||= 0
|
70
|
+
_out "<br>" if @faq_count == 0
|
71
|
+
@faq_count += 1
|
72
|
+
ques = _data.chomp
|
73
|
+
ans = _body_text
|
74
|
+
id = "faq#@faq_count"
|
75
|
+
# _out %[ <a class="btn btn-default btn-xs" data-toggle="collapse" href="##{id}" role="button" aria-expanded="false" aria-controls="collapseExample">+</a>]
|
76
|
+
_out %[ <a data-toggle="collapse" href="##{id}" role="button" aria-expanded="false" aria-controls="collapseExample"><font size=+3>⌄</font></a>]
|
77
|
+
_out %[ <b>#{ques}</b>]
|
78
|
+
# _out "<font size=-2><br></font>" if @faq_count == 1
|
79
|
+
# _out "<br>" unless @faq_count == 1
|
80
|
+
_out %[<div class="collapse" id="#{id}"><br><font size=+1> #{ans}</font></div>\n]
|
81
|
+
_out "<br>" unless @faq_count == 1
|
82
|
+
_optional_blank_line
|
83
|
+
end
|
84
|
+
|
67
85
|
def backlink
|
68
86
|
_out %[<br><a href="javascript:history.go(-1)">[Back]</a>]
|
69
87
|
end
|
70
88
|
|
89
|
+
def banner # still experimental
|
90
|
+
_out "<table>"
|
91
|
+
_body do |line|
|
92
|
+
pieces = line.split
|
93
|
+
cols = pieces.size
|
94
|
+
span = cols == 2 ? 1 : 2 # whaaat?
|
95
|
+
_out " <tr>"
|
96
|
+
pieces.each do |piece|
|
97
|
+
_out " <td colspan=#{span}>"
|
98
|
+
case
|
99
|
+
when piece.start_with?("hnav")
|
100
|
+
# horizontal navbar
|
101
|
+
# _out "<center>hnav1 hnav2 hnav3 hnav4</center>"
|
102
|
+
when piece.start_with?("vnav")
|
103
|
+
# vertical navbar
|
104
|
+
# _out "vnav1<br>vnav2<br>vnav3<br>vnav4<br>"
|
105
|
+
when piece.start_with?("text")
|
106
|
+
file = piece.split(":")[1]
|
107
|
+
file ||= "banner/text.html"
|
108
|
+
_out File.read(file)
|
109
|
+
when piece.start_with?("image")
|
110
|
+
image = piece.split(":")[1]
|
111
|
+
image ||= "banner/banner.jpg"
|
112
|
+
_out " <img src=#{image} height=100></img>"
|
113
|
+
else
|
114
|
+
_out " '#{piece}' isn't known"
|
115
|
+
end
|
116
|
+
_out " </td>"
|
117
|
+
end
|
118
|
+
_out " </tr>"
|
119
|
+
end
|
120
|
+
_out "</table>"
|
121
|
+
end
|
122
|
+
|
71
123
|
def quote
|
72
124
|
_passthru "<blockquote>"
|
73
|
-
_passthru _body
|
125
|
+
_passthru _body.join(" ")
|
74
126
|
_passthru "</blockquote>"
|
75
127
|
_optional_blank_line
|
76
128
|
end
|
@@ -219,6 +271,18 @@ def pin
|
|
219
271
|
_debug "data = #{_args}"
|
220
272
|
# verify only already-specified views?
|
221
273
|
@meta.pinned = _args.dup
|
274
|
+
dir = @blog.view.dir/"themes/standard/widgets/pinned/"
|
275
|
+
datafile = dir/"list.data"
|
276
|
+
pins = File.readlines(datafile) rescue []
|
277
|
+
damn = File.new("/tmp/dammit", "w")
|
278
|
+
pins << "#{@meta.num} #{@meta.title}\n"
|
279
|
+
damn.puts pins
|
280
|
+
pins.uniq!
|
281
|
+
damn.puts pins
|
282
|
+
damn.close
|
283
|
+
File.open(datafile, "w") do
|
284
|
+
pins.each {|pin| File.puts pin }
|
285
|
+
end
|
222
286
|
_optional_blank_line
|
223
287
|
end
|
224
288
|
|
@@ -364,8 +428,8 @@ def _load_local(widget)
|
|
364
428
|
code
|
365
429
|
end
|
366
430
|
rescue => err
|
367
|
-
|
368
|
-
|
431
|
+
STDERR.puts err.to_s
|
432
|
+
STDERR.puts err.backtrace.join("\n")
|
369
433
|
exit
|
370
434
|
end
|
371
435
|
|
@@ -402,7 +466,12 @@ def sidebar
|
|
402
466
|
end
|
403
467
|
end
|
404
468
|
|
405
|
-
|
469
|
+
depend = %w[card.css main.css custom.rb local.rb]
|
470
|
+
depend += ["#{wtag}.lt3", "#{wtag}.rb"]
|
471
|
+
depend += %w[pieces/card-head.lt3 pieces/card-tail.lt3]
|
472
|
+
depend += %w[pieces/main-head.lt3 pieces/main-tail.lt3]
|
473
|
+
depend.map! {|x| @blog.view.dir/"themes/standard/widgets"/wtag/x }
|
474
|
+
xlate cwd: wtag, src: tag, dst: tcard, force: true, deps: depend , debug: (tag == "ad")
|
406
475
|
_include_file wtag/tcard
|
407
476
|
end
|
408
477
|
_out %[</div>]
|
@@ -412,6 +481,26 @@ rescue => err
|
|
412
481
|
exit
|
413
482
|
end
|
414
483
|
|
484
|
+
=begin
|
485
|
+
ets/widgets/pages//card.css
|
486
|
+
ets/widgets/pages//custom.rb
|
487
|
+
ets/widgets/pages//disclaim.lt3
|
488
|
+
ets/widgets/pages//faq.lt3
|
489
|
+
ets/widgets/pages//like-dislike.lt3
|
490
|
+
ets/widgets/pages//list.data
|
491
|
+
ets/widgets/pages//local-vars.lt3
|
492
|
+
ets/widgets/pages//local.rb
|
493
|
+
ets/widgets/pages//main.css
|
494
|
+
ets/widgets/pages//other-stuff.lt3
|
495
|
+
ets/widgets/pages//pages.lt3
|
496
|
+
ets/widgets/pages//pages.rb
|
497
|
+
ets/widgets/pages//pieces
|
498
|
+
ets/widgets/pages//pieces/card-head.lt3
|
499
|
+
ets/widgets/pages//pieces/card-tail.lt3
|
500
|
+
ets/widgets/pages//pieces/main-head.lt3
|
501
|
+
ets/widgets/pages//pieces/main-tail.lt3
|
502
|
+
=end
|
503
|
+
|
415
504
|
def stylesheet
|
416
505
|
lines = _body
|
417
506
|
url = lines[0]
|
@@ -480,10 +569,16 @@ class Livetext::Functions
|
|
480
569
|
::Livetext::Vars[name] || "[:#{name} is undefined]"
|
481
570
|
end
|
482
571
|
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
572
|
+
# def link(param = nil)
|
573
|
+
# puts "--- WTF?? param = #{param.inspect}"; gets
|
574
|
+
# file, cdata = param.split("||", 2)
|
575
|
+
# %[<a href="assets/#{file}">#{cdata}</a>]
|
576
|
+
# end
|
577
|
+
#
|
578
|
+
# def link(param = nil)
|
579
|
+
# file, cdata = param.split("||", 2)
|
580
|
+
# %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}#{file}" title="#{_var(:title)}">]
|
581
|
+
# end
|
487
582
|
end
|
488
583
|
|
489
584
|
###
|
@@ -550,6 +645,42 @@ def tag_cloud
|
|
550
645
|
_out close
|
551
646
|
end
|
552
647
|
|
648
|
+
def vnavbar
|
649
|
+
end
|
650
|
+
|
651
|
+
def navbar2
|
652
|
+
vdir = @blog.view.dir
|
653
|
+
title = _var(:blog)
|
654
|
+
|
655
|
+
open = <<-HTML
|
656
|
+
<nav class="navbar navbar-light bg-light">
|
657
|
+
<a class="navbar-brand" href="index.html">#{title}</a>
|
658
|
+
<ul class="navbar-nav mr-auto">
|
659
|
+
HTML
|
660
|
+
close = <<-HTML
|
661
|
+
</ul>
|
662
|
+
</div>
|
663
|
+
</nav>
|
664
|
+
HTML
|
665
|
+
|
666
|
+
first = true
|
667
|
+
_out open
|
668
|
+
lines = _body
|
669
|
+
lines.each do |line|
|
670
|
+
basename, cdata = line.chomp.strip.split(" ", 2)
|
671
|
+
full = :navbar/basename+".html"
|
672
|
+
href_main = _main(full)
|
673
|
+
if first
|
674
|
+
first = false # hardcode this part??
|
675
|
+
_out %[<li class="nav-item active"> <a class="nav-link" href="index.html">#{cdata}<span class="sr-only">(current)</span></a> </li>]
|
676
|
+
else
|
677
|
+
xlate cwd: "navbar", src: basename, dst: vdir/"remote/navbar"/basename+".html" # , debug: true
|
678
|
+
_out %[<li class="nav-item"> <a class="nav-link" #{href_main}>#{cdata}</a> </li>]
|
679
|
+
end
|
680
|
+
end
|
681
|
+
_out close
|
682
|
+
end
|
683
|
+
|
553
684
|
def navbar
|
554
685
|
vdir = @blog.view.dir
|
555
686
|
title = _var(:blog)
|
@@ -587,7 +718,8 @@ def navbar
|
|
587
718
|
first = false # hardcode this part??
|
588
719
|
_out %[<li class="nav-item active"> <a class="nav-link" href="index.html">#{cdata}<span class="sr-only">(current)</span></a> </li>]
|
589
720
|
else
|
590
|
-
|
721
|
+
depend = Find.find(@blog.root/:views/@blog.view.to_s/"themes/standard/navbar/").to_a
|
722
|
+
xlate cwd: "navbar", src: basename, dst: vdir/"remote/navbar"/basename+".html", deps: depend # , debug: true
|
591
723
|
_out %[<li class="nav-item"> <a class="nav-link" #{href_main}>#{cdata}</a> </li>]
|
592
724
|
end
|
593
725
|
end
|
@@ -747,7 +879,7 @@ end
|
|
747
879
|
|
748
880
|
def _write_metadata
|
749
881
|
File.write("teaser.txt", @meta.teaser)
|
750
|
-
fields = [:num, :title, :date, :pubdate, :views, :tags]
|
882
|
+
fields = [:num, :title, :date, :pubdate, :views, :tags, :pinned]
|
751
883
|
fname2 = "metadata.txt"
|
752
884
|
f2 = File.open(fname2, "w") do |f2|
|
753
885
|
fields.each {|fld| f2.puts "#{fld}: #{@meta.send(fld)}" }
|