runeblog 0.2.2 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/empty_view.tgz +0 -0
- data/lib/BAD.liveblog.rb +724 -0
- data/lib/KEEP.liveblog +646 -0
- data/lib/NEW-liveblog.rb +757 -0
- data/lib/OLD-liveblog.rb +661 -0
- data/lib/default.rb +1 -0
- data/lib/global.rb +5 -0
- data/lib/helpers-blog.rb +40 -14
- data/lib/liveblog.rb +60 -71
- data/lib/logging.rb +58 -0
- data/lib/post.rb +9 -0
- data/lib/publish.rb +7 -0
- data/lib/runeblog.rb +83 -62
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +8 -0
- data/runeblog.gemspec +3 -1
- data/test/make_blog.rb +11 -4
- data/themes/standard/blog/index.lt3 +3 -4
- data/themes/standard/blog/recent.lt3 +2 -0
- data/themes/standard/post/generate.lt3 +0 -2
- data/themes/standard/widgets/news/news.lt3 +1 -2
- data/themes/standard/widgets/pages/disclaim.html +6 -0
- data/themes/standard/widgets/pages/disclaim.lt3 +2 -3
- data/themes/standard/widgets/pages/faq.html +7 -0
- data/themes/standard/widgets/pages/faq.lt3 +1 -1
- data/themes/standard/widgets/pages/lifestory.html +7 -0
- data/themes/standard/widgets/pages/lifestory.lt3 +1 -1
- data/themes/standard/widgets/pages/like-dislike.html +7 -0
- data/themes/standard/widgets/pages/like-dislike.lt3 +1 -1
- data/themes/standard/widgets/pages/list.data +4 -4
- data/themes/standard/widgets/pages/pages.lt3 +2 -0
- metadata +14 -3
- data/themes/standard/widgets/pages/main.lt3 +0 -18
data/lib/default.rb
CHANGED
@@ -6,6 +6,7 @@ class RuneBlog::Default
|
|
6
6
|
def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_view",
|
7
7
|
teaser: "No teaser", body: "No body", tags: ["untagged"],
|
8
8
|
views: [], back: "javascript:history.go(-1)", home: "no url")
|
9
|
+
log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home])
|
9
10
|
viewlist = (views + [view.to_s]).join(" ")
|
10
11
|
taglist = ".tags " + tags.join(" ")
|
11
12
|
<<-TEXT
|
data/lib/global.rb
CHANGED
@@ -20,6 +20,7 @@ end
|
|
20
20
|
# Refactor, move stuff elsewhere?
|
21
21
|
|
22
22
|
def make_exception(sym, str)
|
23
|
+
log!(enter: __method__, args: [sym, str])
|
23
24
|
return if Object.constants.include?(sym)
|
24
25
|
Object.const_set(sym, StandardError.dup)
|
25
26
|
define_method(sym) do |*args|
|
@@ -30,10 +31,12 @@ def make_exception(sym, str)
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def prefix(num)
|
34
|
+
log!(enter: __method__, args: [num])
|
33
35
|
"#{'%04d' % num.to_i}"
|
34
36
|
end
|
35
37
|
|
36
38
|
def check_meta(meta, where = "")
|
39
|
+
log!(enter: __method__, args: [meta, where])
|
37
40
|
str = "--- #{where}\n"
|
38
41
|
str << "\ncheck_meta: \n" + caller.join("\n") + "\n meta = #{meta.inspect}\n"
|
39
42
|
str << " title missing!\n" unless meta.title
|
@@ -46,12 +49,14 @@ def check_meta(meta, where = "")
|
|
46
49
|
end
|
47
50
|
|
48
51
|
def verify(hash)
|
52
|
+
log!(enter: __method__, args: [hash])
|
49
53
|
hash.each_pair do |expr, msg|
|
50
54
|
puts "<< #{msg}" unless expr
|
51
55
|
end
|
52
56
|
end
|
53
57
|
|
54
58
|
def assure(hash) # really the same as verify for now...
|
59
|
+
log!(enter: __method__, args: [hash])
|
55
60
|
hash.each_pair do |expr, msg|
|
56
61
|
puts "<< #{msg}" unless expr
|
57
62
|
end
|
data/lib/helpers-blog.rb
CHANGED
@@ -6,39 +6,52 @@ require 'fileutils'
|
|
6
6
|
module RuneBlog::Helpers
|
7
7
|
|
8
8
|
def copy(src, dst)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
log!(enter: __method__, args: [src, dst])
|
10
|
+
cmd = "cp #{src} #{dst} 2>/dev/null"
|
11
|
+
# puts "\n--- pwd = #{Dir.pwd} \n Trying: #{cmd}"
|
12
|
+
# if src =~ /\*/
|
13
|
+
rc = system(cmd)
|
14
|
+
puts " FROM #{caller[0]}" unless rc
|
15
|
+
exit unless rc
|
16
|
+
# else
|
17
|
+
# FileUtils.cp(src, dst)
|
18
|
+
# end
|
14
19
|
end
|
15
20
|
|
16
21
|
def copy!(src, dst)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
+
log!(enter: __method__, args: [src, dst])
|
23
|
+
cmd = "cp -r #{src} #{dst} 2>/dev/null"
|
24
|
+
# puts "\n--- pwd = #{Dir.pwd} \n Trying: #{cmd}"
|
25
|
+
# if src =~ /\*/
|
26
|
+
rc = system(cmd)
|
27
|
+
puts " FROM #{caller[0]}" unless rc
|
28
|
+
exit unless rc
|
29
|
+
# else
|
30
|
+
# FileUtils.cp_r(src, dst)
|
31
|
+
# end
|
22
32
|
end
|
23
33
|
|
24
34
|
def stale?(src, dst)
|
35
|
+
log!(enter: __method__, args: [src, dst])
|
25
36
|
return true unless File.exist?(dst)
|
26
37
|
return true if File.mtime(src) > File.mtime(dst)
|
27
38
|
return false
|
28
39
|
end
|
29
40
|
|
30
41
|
def livetext(src, dst=nil)
|
42
|
+
log!(enter: __method__, args: [src, dst])
|
31
43
|
src << ".lt3" unless src.end_with?(".lt3")
|
32
44
|
if dst
|
33
45
|
dst << ".html" unless dst.end_with?(".html")
|
34
46
|
else
|
35
47
|
dst = src.sub(/.lt3$/, "")
|
36
48
|
end
|
37
|
-
|
49
|
+
# return unless stale?(src, dst)
|
38
50
|
system("livetext #{src} >#{dst}")
|
39
51
|
end
|
40
52
|
|
41
53
|
def get_root
|
54
|
+
log!(enter: __method__)
|
42
55
|
if $_blog
|
43
56
|
if $_blog.root
|
44
57
|
puts "0. Returned: #{$_blog.root}/"
|
@@ -54,7 +67,7 @@ module RuneBlog::Helpers
|
|
54
67
|
end
|
55
68
|
|
56
69
|
def read_config(file, *syms)
|
57
|
-
|
70
|
+
log!(enter: __method__, args: [file, *syms])
|
58
71
|
lines = File.readlines(file).map(&:chomp)
|
59
72
|
obj = ::OpenStruct.new
|
60
73
|
lines.each do |line|
|
@@ -79,6 +92,7 @@ module RuneBlog::Helpers
|
|
79
92
|
end
|
80
93
|
|
81
94
|
def try_read_config(file, hash)
|
95
|
+
log!(enter: __method__, args: [file, hash])
|
82
96
|
return hash.values unless File.exist?(file)
|
83
97
|
vals = read_config(file, *hash.keys)
|
84
98
|
# STDERR.puts vals.inspect
|
@@ -86,6 +100,7 @@ module RuneBlog::Helpers
|
|
86
100
|
end
|
87
101
|
|
88
102
|
def put_config(root:, view:"test_view", editor: "/usr/local/bin/vim")
|
103
|
+
log!(enter: __method__, args: [root, view, editor])
|
89
104
|
Dir.mkdir(root) unless Dir.exist?(root)
|
90
105
|
Dir.chdir(root) do
|
91
106
|
File.open("config", "w") do |cfg|
|
@@ -97,6 +112,7 @@ def put_config(root:, view:"test_view", editor: "/usr/local/bin/vim")
|
|
97
112
|
end
|
98
113
|
|
99
114
|
def write_config(obj, file)
|
115
|
+
log!(enter: __method__, args: [obj, file])
|
100
116
|
hash = obj.to_h
|
101
117
|
# Dir.chdir(::Home)
|
102
118
|
# puts "--- wc: pwd = #{Dir.pwd}"
|
@@ -108,6 +124,7 @@ end
|
|
108
124
|
end
|
109
125
|
|
110
126
|
def get_views # read from filesystem
|
127
|
+
log!(enter: __method__)
|
111
128
|
# Dir.chdir(::Home) do
|
112
129
|
verify(@root => "#@root is nil",
|
113
130
|
Dir.exist?(@root) => "#@root doesn't exist",
|
@@ -118,6 +135,7 @@ end
|
|
118
135
|
end
|
119
136
|
|
120
137
|
def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
|
138
|
+
log!(enter: __method__, args: [root, current_view, editor])
|
121
139
|
# raise BlogAlreadyExists if Dir.exist?(".blogs")
|
122
140
|
# Dir.mkdir(".blogs")
|
123
141
|
root = Dir.pwd + "/" + root
|
@@ -127,12 +145,14 @@ end
|
|
127
145
|
end
|
128
146
|
|
129
147
|
def new_sequence
|
148
|
+
log!(enter: __method__)
|
130
149
|
dump(0, "sequence")
|
131
150
|
version_info = "#{RuneBlog::VERSION}\nBlog created: #{Time.now.to_s}"
|
132
151
|
dump(version_info, "VERSION")
|
133
152
|
end
|
134
153
|
|
135
154
|
def subdirs(dir)
|
155
|
+
log!(enter: __method__, args: [dir])
|
136
156
|
verify(Dir.exist?(dir) => "Directory #{dir} not found")
|
137
157
|
dirs = Dir.entries(dir) - %w[. ..]
|
138
158
|
dirs.reject! {|x| ! File.directory?("#@root/views/#{x}") }
|
@@ -140,6 +160,7 @@ end
|
|
140
160
|
end
|
141
161
|
|
142
162
|
def find_draft_slugs
|
163
|
+
log!(enter: __method__)
|
143
164
|
verify(@root => "#@root is nil",
|
144
165
|
Dir.exist?(@root) => "#@root doesn't exist",
|
145
166
|
Dir.exist?("#@root/drafts") => "#@root/drafts doesn't exist")
|
@@ -154,6 +175,7 @@ end
|
|
154
175
|
end
|
155
176
|
|
156
177
|
def create_dirs(*dirs)
|
178
|
+
log!(enter: __method__, args: [*dirs])
|
157
179
|
dirs.each do |dir|
|
158
180
|
dir = dir.to_s # symbols allowed
|
159
181
|
next if Dir.exist?(dir)
|
@@ -163,24 +185,28 @@ end
|
|
163
185
|
end
|
164
186
|
end
|
165
187
|
|
166
|
-
def interpolate(str,
|
188
|
+
def interpolate(str, bind)
|
189
|
+
log!(enter: __method__, args: [str, bind])
|
167
190
|
wrap = "<<-EOS\n#{str}\nEOS"
|
168
|
-
eval wrap,
|
191
|
+
eval wrap, bind
|
169
192
|
end
|
170
193
|
|
171
194
|
def error(err) # Hmm, this is duplicated
|
195
|
+
log!(str: "duplicated method", enter: __method__, args: [err])
|
172
196
|
str = "\n Error: #{err}"
|
173
197
|
puts str
|
174
198
|
puts err.backtrace.join("\n")
|
175
199
|
end
|
176
200
|
|
177
201
|
def dump(obj, name)
|
202
|
+
log!(enter: __method__, args: [obj, name])
|
178
203
|
File.write(name, obj)
|
179
204
|
end
|
180
205
|
|
181
206
|
end
|
182
207
|
|
183
208
|
def dump(obj, name) # FIXME scope
|
209
|
+
log!(str: "scope problem", enter: __method__, args: [obj, name])
|
184
210
|
File.write(name, obj)
|
185
211
|
end
|
186
212
|
|
data/lib/liveblog.rb
CHANGED
@@ -410,15 +410,20 @@ def meta
|
|
410
410
|
end
|
411
411
|
|
412
412
|
def recent_posts # side-effect
|
413
|
-
_out
|
414
|
-
|
415
|
-
|
413
|
+
_out <<-HTML
|
414
|
+
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
|
415
|
+
<iframe id="main" style="width: 100vw; height: 100vh; position: relative;"
|
416
|
+
src='recent.html' width=100% frameborder="0" allowfullscreen>
|
417
|
+
</iframe>
|
418
|
+
</div>
|
419
|
+
HTML
|
416
420
|
end
|
417
421
|
|
418
422
|
def sidebar
|
419
423
|
_out %[<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">]
|
420
424
|
_args do |token|
|
421
425
|
tag = token.chomp.strip.downcase
|
426
|
+
# Doesn't handle "split personality" widgets yet
|
422
427
|
Dir.chdir("widgets/#{tag}") do
|
423
428
|
livetext tag, "card-#{tag}.html"
|
424
429
|
_include_file "card-#{tag}.html"
|
@@ -443,59 +448,43 @@ def script
|
|
443
448
|
_out %[<script src="#{url}" integrity="#{integ}" crossorigin="#{cross}"></script>]
|
444
449
|
end
|
445
450
|
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
<html>
|
484
|
-
<head><link rel="stylesheet" href="etc/blog.css"></head>
|
485
|
-
<body>
|
486
|
-
HTML
|
487
|
-
posts = _find_recent_posts
|
488
|
-
wanted = [5, posts.size].min # estimate how many we want?
|
489
|
-
enum = posts.each
|
490
|
-
wanted.times do
|
491
|
-
postid = File.basename(enum.next)
|
492
|
-
postid = postid.to_i
|
493
|
-
text << _teaser(postid) # side effect! calls _out
|
494
|
-
end
|
495
|
-
text << "</body></html>"
|
496
|
-
File.write("recent.html", text)
|
497
|
-
_out %[<iframe id="main" style="width: 100vw; height: 100vh; position: relative;" src='recent.html' width=100% frameborder="0" allowfullscreen></iframe>]
|
498
|
-
end
|
451
|
+
# def _find_recent_posts
|
452
|
+
# @vdir = _var(:FileDir).match(%r[(^.*/views/.*?)/])[1]
|
453
|
+
# posts = nil
|
454
|
+
# dir_posts = @vdir + "/posts"
|
455
|
+
# entries = Dir.entries(dir_posts)
|
456
|
+
# posts = entries.grep(/^\d\d\d\d/).map {|x| dir_posts + "/" + x }
|
457
|
+
# posts.select! {|x| File.directory?(x) }
|
458
|
+
# # directories that start with four digits
|
459
|
+
# posts = posts.sort {|a, b| b.to_i <=> a.to_i } # sort descending
|
460
|
+
# posts[0..19] # return 20 at most
|
461
|
+
# end
|
462
|
+
#
|
463
|
+
# def all_teasers
|
464
|
+
# open = <<-HTML
|
465
|
+
# <section class="posts">
|
466
|
+
# HTML
|
467
|
+
# close = <<-HTML
|
468
|
+
# </section>
|
469
|
+
# HTML
|
470
|
+
#
|
471
|
+
# text = <<-HTML
|
472
|
+
# <html>
|
473
|
+
# <head><link rel="stylesheet" href="etc/blog.css"></head>
|
474
|
+
# <body>
|
475
|
+
# HTML
|
476
|
+
# posts = _find_recent_posts
|
477
|
+
# wanted = [5, posts.size].min # estimate how many we want?
|
478
|
+
# enum = posts.each
|
479
|
+
# wanted.times do
|
480
|
+
# postid = File.basename(enum.next)
|
481
|
+
# postid = postid.to_i
|
482
|
+
# text << _teaser(postid) # side effect! calls _out
|
483
|
+
# end
|
484
|
+
# text << "</body></html>"
|
485
|
+
# File.write("recent.html", text)
|
486
|
+
# _out %[<iframe id="main" style="width: 100vw; height: 100vh; position: relative;" src='recent.html' width=100% frameborder="0" allowfullscreen></iframe>]
|
487
|
+
# end
|
499
488
|
|
500
489
|
def _post_lookup(postid) # side-effect
|
501
490
|
# .. = templates, ../.. = views/thisview
|
@@ -517,21 +506,21 @@ def _interpolate(str, context) # FIXME move this later
|
|
517
506
|
eval(wrapped, context)
|
518
507
|
end
|
519
508
|
|
520
|
-
def _teaser(slug)
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
end
|
509
|
+
# def _teaser(slug)
|
510
|
+
# id = slug.to_i
|
511
|
+
# text = nil
|
512
|
+
# post_entry_name = @theme + "blog/post_entry.lt3"
|
513
|
+
# @_post_entry ||= File.read(post_entry_name)
|
514
|
+
# vp = _post_lookup(id)
|
515
|
+
# nslug, aslug, title, date, teaser_text =
|
516
|
+
# vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
|
517
|
+
# path = vp.path
|
518
|
+
# url = "#{path}/#{aslug}.html" # Should be relative to .blogs!! FIXME
|
519
|
+
# date = Date.parse(date)
|
520
|
+
# date = date.strftime("%B %e<br>%Y")
|
521
|
+
# text = _interpolate(@_post_entry, binding)
|
522
|
+
# text
|
523
|
+
# end
|
535
524
|
|
536
525
|
def _card_generic(card_title:, middle:, extra: "")
|
537
526
|
front = <<-HTML
|
data/lib/logging.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
unless self.respond_to?("log!")
|
2
|
+
$logging = true
|
3
|
+
$log = File.new("/tmp/runeblog.log","w")
|
4
|
+
|
5
|
+
def log!(str: "", enter: nil, args: [], pwd: false, dir: false)
|
6
|
+
return unless $logging
|
7
|
+
time = Time.now.strftime("%H:%M:%S")
|
8
|
+
|
9
|
+
meth = ""
|
10
|
+
meth = "#{enter}" if enter
|
11
|
+
|
12
|
+
para = "(#{args.inspect[1..-2]})"
|
13
|
+
|
14
|
+
source = caller[0].sub(/.*\//, " in ").sub(/:/, " line ").sub(/:.*/, "")
|
15
|
+
source = "in #{source} (probably liveblog.rb)" if source.include? "(eval)"
|
16
|
+
|
17
|
+
str = " ... #{str}" unless str.empty?
|
18
|
+
indent = " "*12
|
19
|
+
|
20
|
+
$log.puts "#{time} #{meth}#{para}"
|
21
|
+
$log.puts "#{indent} #{str} " unless str.empty?
|
22
|
+
$log.puts "#{indent} #{source}"
|
23
|
+
$log.puts "#{indent} pwd = #{Dir.pwd} " if pwd
|
24
|
+
if dir
|
25
|
+
files = (Dir.entries('.') - %w[. ..]).join(" ")
|
26
|
+
$log.puts "#{indent} dir/* = #{files}"
|
27
|
+
end
|
28
|
+
# $log.puts "#{indent} livetext params = #{livedata.inpect} " unless livedata.nil?
|
29
|
+
$log.puts
|
30
|
+
$log.close
|
31
|
+
$log = File.new("/tmp/runeblog.log","a")
|
32
|
+
end
|
33
|
+
|
34
|
+
# def log(str: "", enter: nil, args: [], pwd: false, dir: false)
|
35
|
+
# return unless $logging
|
36
|
+
# time = Time.now.strftime("%H:%M:%S")
|
37
|
+
# meth = ""
|
38
|
+
# meth = "#{enter}" if enter
|
39
|
+
# para = " args: #{args.inspect[1..-2]}"
|
40
|
+
# source = caller[0].sub(/.*\//, " in ").sub(/:/, " line ").sub(/:.*/, "")
|
41
|
+
# source = " in #{source} (probably liveblog.rb)" if source.include? "(eval)"
|
42
|
+
# str = " ... #{str}" unless str.empty?
|
43
|
+
# indent = " "*12
|
44
|
+
# STDERR.puts "#{time} #{str} #{meth}"
|
45
|
+
# STDERR.puts "#{indent} #{source}"
|
46
|
+
# STDERR.puts "#{indent} pwd = #{Dir.pwd} " if pwd
|
47
|
+
# if dir
|
48
|
+
# files = (Dir.entries('.') - %w[. ..]).join(" ")
|
49
|
+
# STDERR.puts "#{indent} dir/* = #{files}"
|
50
|
+
# end
|
51
|
+
# STDERR.puts "#{indent} #{para} " unless args.empty?
|
52
|
+
# # STDERR.puts "#{indent} livetext params = #{livedata.inpect} " unless livedata.nil?
|
53
|
+
# STDERR.puts
|
54
|
+
# # $log.close
|
55
|
+
# # $log = File.new("/tmp/runeblog.log","a")
|
56
|
+
# end
|
57
|
+
end
|
58
|
+
|
data/lib/post.rb
CHANGED
@@ -11,12 +11,14 @@ class RuneBlog::Post
|
|
11
11
|
include RuneBlog::Helpers
|
12
12
|
|
13
13
|
def self.files(num, root)
|
14
|
+
log!(enter: __method__, args: [num, root])
|
14
15
|
files = Find.find(root).to_a
|
15
16
|
result = files.grep(/#{prefix(num)}-/)
|
16
17
|
result
|
17
18
|
end
|
18
19
|
|
19
20
|
def self.load(post)
|
21
|
+
log!(enter: __method__, args: [post])
|
20
22
|
raise "Doesn't work right now"
|
21
23
|
raise NoBlogAccessor if RuneBlog.blog.nil?
|
22
24
|
# "post" is a slug
|
@@ -41,6 +43,7 @@ class RuneBlog::Post
|
|
41
43
|
end
|
42
44
|
|
43
45
|
def write_metadata(meta) # FIXME ???
|
46
|
+
log!(enter: __method__, args: [meta])
|
44
47
|
debug "=== write_metadata:"
|
45
48
|
debug "-----\n#{meta.inspect}\n-----"
|
46
49
|
fname2 = "metadata.txt"
|
@@ -63,12 +66,14 @@ class RuneBlog::Post
|
|
63
66
|
end
|
64
67
|
|
65
68
|
def initialize
|
69
|
+
log!(enter: __method__)
|
66
70
|
@blog = RuneBlog.blog || raise(NoBlogAccessor)
|
67
71
|
@meta = OpenStruct.new
|
68
72
|
end
|
69
73
|
|
70
74
|
def self.create(title:, teaser:, body:, pubdate: Time.now.strftime("%Y-%m-%d"),
|
71
75
|
other_views:[])
|
76
|
+
log!(enter: __method__, args: [title, teaser, body, pubdate, other_views])
|
72
77
|
post = self.new
|
73
78
|
# ONLY place next_sequence is called!
|
74
79
|
num = post.meta.num = post.blog.next_sequence
|
@@ -97,6 +102,7 @@ class RuneBlog::Post
|
|
97
102
|
end
|
98
103
|
|
99
104
|
def edit
|
105
|
+
log!(enter: __method__)
|
100
106
|
verify(File.exist?(@draft) => "File #{@draft} not found")
|
101
107
|
result = system("vi #@draft +8") # TODO improve this
|
102
108
|
raise EditorProblem(draft) unless result
|
@@ -106,6 +112,7 @@ class RuneBlog::Post
|
|
106
112
|
end
|
107
113
|
|
108
114
|
def build
|
115
|
+
log!(enter: __method__)
|
109
116
|
post = self
|
110
117
|
views = post.meta.views
|
111
118
|
text = File.read(@draft)
|
@@ -118,6 +125,7 @@ class RuneBlog::ViewPost
|
|
118
125
|
:teaser_text
|
119
126
|
|
120
127
|
def initialize(view, postdir)
|
128
|
+
log!(enter: __method__, args: [view, postdir])
|
121
129
|
# Assumes already parsed/processed
|
122
130
|
@blog = RuneBlog.blog || raise(NoBlogAccessor)
|
123
131
|
@path = postdir.dup
|
@@ -133,6 +141,7 @@ class RuneBlog::ViewPost
|
|
133
141
|
end
|
134
142
|
|
135
143
|
def get_dirs
|
144
|
+
log!(enter: __method__, args: [view, postdir])
|
136
145
|
fname = File.basename(draft)
|
137
146
|
noext = fname.sub(/.lt3$/, "")
|
138
147
|
vdir = "#@root/views/#{view}"
|