runeblog 0.3.21 → 0.3.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f946568cd1dd92fc6c3f7bfbb605b02eedf12b8725103b617320b564241494d4
4
- data.tar.gz: 120d8f2af493052ece7fc811f37d08bc175521a9838109cec2671053f6ec4532
3
+ metadata.gz: 646006af4da125dc3a6d968d76078b017e3b88d109a566e9e6b58cf90b24f91e
4
+ data.tar.gz: 2c6de1ce325f0183ad07c72fd13f73464079c2939a0980d35aedaa339117b866
5
5
  SHA512:
6
- metadata.gz: e5c951593ebf282712c37fdeb315507233febabae2bb13abbf7d21e491a58bfb9b8a7f8f2d78dafb1877286a35bccacac55df32b84bc4bab3b12ea0eb3f64604
7
- data.tar.gz: 0ae1ec7ecb6d1f6b6465a534965d0741963f1da3a76c687be6bafb672ee6a3bab801756f84aa116d284989bf943fa3e772df9a186eac8ce89893c2216f125818
6
+ metadata.gz: 3bf8be383a0b54359dfc55da15f33008348039de26d6ce79806c49db682c4015e6239a6cc0614dd50cc630de4e2df8d403e75c6b6640cd750fdf6f91d6d96ebd
7
+ data.tar.gz: 551c4be7d6f9d3b89c4e9a681083fbb63598a8e885b2bf1fc86816cc469ae39319a08e68590a1740d30e234698f54e8ea4e8e54d03b477fccddbca4b45acbe26
data/bin/blog CHANGED
@@ -27,8 +27,12 @@ end
27
27
  def get_universal
28
28
  univ = "#{@blog.root}/data/universal.lt3"
29
29
  if yesno("Faster initial setup? (no: edit universal.lt3)")
30
- author = ask!(" Author name: ")
31
- site = ask!(" Site/domain: ")
30
+ # author = ask!(" Author name: ")
31
+ # site = ask!(" Site/domain: ")
32
+ # Temporarily, for speed:
33
+ author, site = "Hal Fulton", "somedomain.com"
34
+ puts " Author name: #{author}"
35
+ puts " Site/domain: #{site}"
32
36
  # Now stash it...
33
37
  str = File.read(univ)
34
38
  str = str.gsub(/AUTHOR/, author)
@@ -41,22 +45,16 @@ def get_universal
41
45
  end
42
46
 
43
47
  def get_global
48
+ view_name = ask!(" Filename: ")
49
+ @blog.create_view(view_name) # call change_view??
44
50
  if yesno("Faster view setup? (no: edit global.lt3)")
45
- view_name = ask!(" Filename: ")
46
- @blog.create_view(view_name) # call change_view??
47
51
  title = ask!(" View title: ")
48
52
  subtitle = ask!(" Subtitle : ")
49
53
  domain = ask!(" Domain : ")
50
-
51
- vfile = "#{@blog.root}/views/#{view_name}/settings/view.txt"
52
- hash = {/VIEW_NAME/ => view_name,
53
- /VIEW_TITLE/ => title,
54
- /VIEW_SUBTITLE/ => subtitle,
55
- /VIEW_DOMAIN/ => domain}
56
- @blog.complete_file(vfile, nil, hash)
54
+ modify_view_global(view_name)
55
+ modify_view_settings(name: view_name, title: title, subtitle: subtitle,
56
+ domain: domain)
57
57
  else
58
- view_name = ask!(" Filename: ")
59
- @blog.create_view(view_name) # call change_view??
60
58
  vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
61
59
  edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
62
60
  end
@@ -109,7 +107,12 @@ def mainloop
109
107
  puts "Don't understand '#{cmd.inspect}'\n "
110
108
  end
111
109
  rescue => err
110
+ log!(str: err.to_s)
111
+ log!(str: err.backtrace.join("\n")) if err.respond_to?(:backtrace)
112
+ puts "Current dir = #{Dir.pwd}"
112
113
  puts err
114
+ puts err.backtrace.join("\n")
115
+ puts "Pausing..."; gets
113
116
  end
114
117
 
115
118
  def cmdline_preview
@@ -159,57 +162,82 @@ def handle_cmdline
159
162
  exit
160
163
  end
161
164
 
162
- ### Main
163
-
164
- major, minor = RUBY_VERSION.split(".").values_at(0,1)
165
- ver = major.to_i*10 + minor.to_i
166
- unless ver >= 24
167
- RubyText.stop
168
- sleep 0.2
169
- puts "Needs Ruby 2.4 or greater"
170
- exit
165
+ def check_ruby_version
166
+ major, minor = RUBY_VERSION.split(".").values_at(0,1)
167
+ ver = major.to_i*10 + minor.to_i
168
+ unless ver >= 24
169
+ RubyText.stop
170
+ sleep 0.2
171
+ puts "Needs Ruby 2.4 or greater"
172
+ exit
173
+ end
171
174
  end
172
175
 
173
- include RuneBlog::Helpers # for try_read_config
176
+ def reopen_stderr
177
+ errfile = File.new("stderr.out", "w")
178
+ STDERR.reopen(errfile)
179
+ end
174
180
 
175
- handle_cmdline unless ARGV.empty?
181
+ def set_fgbg
182
+ # read a .rubytext file here?? Call it something else?
183
+ home = ENV['HOME']
184
+ @fg, @bg = Blue, White ## FIXME!! try_read_config("#{home}/.rubytext", fg: Blue, bg: White)
185
+ @fg = @fg.downcase.to_sym
186
+ @bg = @bg.downcase.to_sym
176
187
 
177
- errfile = File.new("stderr.out", "w")
178
- STDERR.reopen(errfile)
188
+ RubyText.start(:_echo, :keypad, scroll: true, log: "binblog.txt", fg: @fg, bg: @bg)
189
+ end
179
190
 
180
- # read a .rubytext file here?? Call it something else?
181
- home = ENV['HOME']
182
- @fg, @bg = Blue, White ## FIXME!! try_read_config("#{home}/.rubytext", fg: Blue, bg: White)
183
- @fg = @fg.downcase.to_sym
184
- @bg = @bg.downcase.to_sym
191
+ def create_new_repo?
192
+ new_repo = false
193
+ if ! RuneBlog.exist?
194
+ exit unless yesno("No blog repo found. Create new one?")
195
+ RuneBlog.create_new_blog_repo
196
+ puts fx(" Blog repo successfully created.", :bold)
197
+ new_repo = true
198
+ end
185
199
 
186
- RubyText.start(:_echo, :keypad, scroll: true, log: "binblog.txt", fg: @fg, bg: @bg)
200
+ @blog = RuneBlog.new
201
+ get_started if new_repo
202
+ rescue => err
203
+ STDERR.puts "Error - #{err.to_s}"
204
+ STDERR.puts err.backtrace if err.respond_to?(:backtrace)
205
+ end
187
206
 
207
+ def print_intro
208
+ print fx(" For help", :bold)
209
+ puts " type h or help.\n "
188
210
 
189
- new_repo = false
190
- if ! RuneBlog.exist?
191
- exit unless yesno("No blog repo found. Create new one?")
192
- RuneBlog.create_new_blog_repo
193
- puts fx(" Blog repo successfully created.", :bold)
194
- new_repo = true
211
+ puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red)
195
212
  end
196
213
 
197
- @blog = RuneBlog.new
198
- get_started if new_repo
214
+ def cmd_history_etc
215
+ @cmdhist = []
216
+ @tabcom = RuneBlog::REPL::Patterns.keys.uniq - RuneBlog::REPL::Abbr.keys
217
+ @tabcom.map! {|x| x.sub(/ [\$\>].*/, "") + " " }
218
+ @tabcom.sort!
219
+ end
199
220
 
200
- print fx(" For help", :bold)
201
- puts " type h or help.\n "
221
+ def exit_repl
222
+ # RubyText.stop
223
+ sleep 0.2
224
+ puts
225
+ end
202
226
 
203
- puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red)
227
+ ### Main
204
228
 
205
- @cmdhist = []
206
- @tabcom = RuneBlog::REPL::Patterns.keys.uniq - RuneBlog::REPL::Abbr.keys
207
- @tabcom.map! {|x| x.sub(/ [\$\>].*/, "") + " " }
208
- @tabcom.sort!
209
-
210
- loop { mainloop }
229
+ include RuneBlog::Helpers # for try_read_config
211
230
 
212
- # system("tput clear")
213
- sleep 0.2
214
- puts
231
+ reopen_stderr
215
232
 
233
+ check_ruby_version
234
+ handle_cmdline unless ARGV.empty?
235
+ set_fgbg
236
+ print_intro
237
+ # STDERR.puts "cp 6 - pause"; gets
238
+ create_new_repo?
239
+ # STDERR.puts "cp 7 - pause"; gets
240
+ cmd_history_etc
241
+ # STDERR.puts "cp 8 - pause"; gets
242
+ loop { mainloop }
243
+ exit_repl
@@ -3,11 +3,11 @@
3
3
  . <variable> <value>
4
4
  . --------------------------------------------------
5
5
 
6
- .variables view ../../settings/view.txt
6
+ .variables view ../settings/view.txt
7
7
 
8
- .variables recent ../../settings/recent.txt
8
+ .variables recent ../settings/recent.txt
9
9
 
10
- .variables publish ../../settings/publish.txt
10
+ .variables publish ../settings/publish.txt
11
11
 
12
12
  .variables
13
13
  host http://SITE
@@ -7,6 +7,8 @@
7
7
  . --------------------------------------------------
8
8
  .nopara
9
9
 
10
+ .set Root=REPO_ROOT
11
+
10
12
  .variables
11
13
  univ.author AUTHOR
12
14
  univ.site SITE_DOMAIN
File without changes
@@ -1,4 +1,4 @@
1
- .seek global.lt3 # FIXME this is a hack!
1
+ .include $ViewDir/data/global.lt3
2
2
 
3
3
  <svg width="98%" height="120"
4
4
  viewBox="0 0 98% 100">
@@ -8,7 +8,7 @@
8
8
  <html>
9
9
  <!-- Generated from $File on $$date.
10
10
  Editing not recommended. -->
11
- $.seek global.lt3
11
+ $.include $ViewDir/data/global.lt3
12
12
  $.include blog/head.lt3
13
13
  <body>
14
14
  $.include banner/banner.lt3
@@ -3,7 +3,7 @@
3
3
  . Most of the global CSS goes here
4
4
  . --------------------------------------------------
5
5
 
6
- .seek global.lt3
6
+ .include $ViewDir/data/global.lt3
7
7
 
8
8
  body { font-family: $font.family }
9
9
 
@@ -8,9 +8,9 @@
8
8
  <html>
9
9
  <!-- Generated from $File on $$date; editing not recommended. -->
10
10
 
11
- .seek global.lt3
11
+ .include $ViewDir/data/global.lt3
12
12
 
13
- .variables post metadata.txt
13
+ .variables! post metadata.txt
14
14
 
15
15
  . FIXME
16
16
  .head
@@ -12,7 +12,7 @@
12
12
  <!-- Editing this file is not recommended. -->
13
13
  <!-- It was generated from $File on $$date. -->
14
14
 
15
- .seek global.lt3
15
+ .include $ViewDir/data/global.lt3
16
16
 
17
17
  .head
18
18
  og:title $title
@@ -55,11 +55,12 @@ module RuneBlog::Helpers
55
55
  puts
56
56
  end
57
57
 
58
- def get_repo_config
58
+ def get_repo_config(root = ".blogs")
59
59
  log!(enter: __method__, level: 3)
60
- @editor = File.read(".blogs/data/EDITOR").chomp
61
- @current_view = File.read(".blogs/data/VIEW").chomp
62
- @root = File.read(".blogs/data/ROOT").chomp
60
+ @editor = File.read("#{root}/data/EDITOR").chomp
61
+ @current_view = File.read("#{root}/data/VIEW").chomp
62
+ @root = File.read("#{root}/data/ROOT").chomp
63
+ # Huh? Why not just @root = root? Hal.wtf?
63
64
  rescue => err
64
65
  puts "Can't read config: #{err}"
65
66
  puts err.backtrace.join("\n")
@@ -12,6 +12,7 @@ require 'processing'
12
12
 
13
13
 
14
14
  def init_liveblog # FIXME - a lot of this logic sucks
15
+ log!(enter: __method__)
15
16
  dir = Dir.pwd.sub(/\.blogs.*/, "")
16
17
  @blog = nil
17
18
  Dir.chdir(dir) { @blog = RuneBlog.new }
@@ -19,6 +20,8 @@ def init_liveblog # FIXME - a lot of this logic sucks
19
20
  @view = @blog.view
20
21
  @view_name = @blog.view.name unless @view.nil?
21
22
  @vdir = @blog.view.dir rescue "NONAME"
23
+ setvar("View", @view_name)
24
+ setvar("ViewDir", @blog.root/:views/@view_name)
22
25
  @version = RuneBlog::VERSION
23
26
  @theme = @vdir/:themes/:standard
24
27
 
@@ -33,9 +36,10 @@ def init_liveblog # FIXME - a lot of this logic sucks
33
36
  </a>
34
37
  HTML
35
38
  end
39
+ log!(str: "End of init_liveblog")
36
40
  rescue => err
37
41
  STDERR.puts "err = #{err}"
38
- STDERR.puts err.backtrace.join("\n")
42
+ STDERR.puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
39
43
  end
40
44
 
41
45
  ##################
@@ -43,6 +47,7 @@ end
43
47
  ##################
44
48
 
45
49
  def dropcap
50
+ log!(enter: __method__)
46
51
  # Bad form: adds another HEAD
47
52
  text = _data
48
53
  _out " "
@@ -53,6 +58,7 @@ def dropcap
53
58
  end
54
59
 
55
60
  def post
61
+ log!(enter: __method__)
56
62
  @meta = OpenStruct.new
57
63
  @meta.num = _args[0]
58
64
  setvar("post.num", @meta.num.to_i)
@@ -60,6 +66,7 @@ def post
60
66
  end
61
67
 
62
68
  def _got_python?
69
+ log!(enter: __method__)
63
70
  # Dumb - fix later - check up front as needed
64
71
  # Should also check for praw lib
65
72
  str = `which python3`
@@ -67,6 +74,7 @@ end
67
74
  end
68
75
 
69
76
  def _reddit_post_url(vdir, date, title, url)
77
+ log!(enter: __method__)
70
78
  _got_python?
71
79
  tmpfile = "/tmp/reddit-post-url.txt"
72
80
  File.open(tmpfile, "w") do |tmp|
@@ -80,6 +88,7 @@ end
80
88
  end
81
89
 
82
90
  def post_toolbar
91
+ log!(enter: __method__)
83
92
  back_icon = %[<img src="assets/back-icon.png" width=24 height=24 alt="Go back"></img>]
84
93
  back = %[<a style="text-decoration: none" href="javascript:history.go(-1)">#{back_icon}</a>]
85
94
  _out <<~HTML
@@ -88,14 +97,15 @@ def post_toolbar
88
97
  end
89
98
 
90
99
  def post_trailer
100
+ log!(enter: __method__)
91
101
  # Not called from *inside* a post, therefore no @meta --
92
102
  # can/must call read_metadata
93
103
  num = _var("post.num").to_i
94
- puts "post_trailer: num = #{num}"
104
+ log! str: "post_trailer: num = #{num}"
95
105
  vp = _post_lookup(num)
96
- puts "post_trailer: lookup = #{vp.num} #{vp.title}"
106
+ log! str: "post_trailer: lookup = #{vp.num} #{vp.title}"
97
107
  dir = @blog.root/:posts/vp.nslug
98
- puts " -- dir = #{dir}"
108
+ log! str: " -- dir = #{dir}"
99
109
  meta = Dir.chdir(dir) { @blog.read_metadata }
100
110
  nslug = @blog.make_slug(meta)
101
111
  aslug = nslug[5..-1]
@@ -112,10 +122,10 @@ puts " -- dir = #{dir}"
112
122
  date = meta.date
113
123
  rid_file = vdir/:posts/nslug/"reddit.id"
114
124
  if File.exist?(rid_file)
115
- puts " reading #{rid_file}"
125
+ STDERR.puts " reading #{rid_file}"
116
126
  rid = File.read(rid_file).chomp
117
127
  else
118
- puts " creating #{rid_file}"
128
+ STDERR.puts " creating #{rid_file}"
119
129
  title = meta.title
120
130
  rid = _reddit_post_url(vdir, date, title, perma)
121
131
  dump(rid, rid_file)
@@ -127,7 +137,7 @@ puts " -- dir = #{dir}"
127
137
  HTML
128
138
  # damned syntax highlighting </>
129
139
  end
130
- print "Pause... "; getch
140
+ # STDERR.print "Pausing... "; getch
131
141
  _out <<~HTML
132
142
  #{reddit_txt}
133
143
  <hr>
@@ -139,6 +149,7 @@ print "Pause... "; getch
139
149
  end
140
150
 
141
151
  def faq
152
+ log!(enter: __method__)
142
153
  @faq_count ||= 0
143
154
  _out "<br>" if @faq_count == 0
144
155
  @faq_count += 1
@@ -153,15 +164,18 @@ def faq
153
164
  end
154
165
 
155
166
  def backlink
167
+ log!(enter: __method__)
156
168
  _out %[<br><a href="javascript:history.go(-1)">[Back]</a>]
157
169
  end
158
170
 
159
171
  def code
172
+ log!(enter: __method__)
160
173
  lines = _body # _text
161
174
  _out "<font size=+1><pre>\n#{lines}\n</pre></font>"
162
175
  end
163
176
 
164
177
  def _read_navbar_data
178
+ log!(enter: __method__)
165
179
  vdir = @blog.root/:views/@blog.view
166
180
  dir = vdir/"themes/standard/banner/navbar/"
167
181
  datafile = dir/"list.data"
@@ -169,6 +183,7 @@ def _read_navbar_data
169
183
  end
170
184
 
171
185
  def banner
186
+ log!(enter: __method__)
172
187
  count = 0
173
188
  bg = "white" # outside loop
174
189
  wide = nil
@@ -182,6 +197,7 @@ def banner
182
197
  count += 1
183
198
  tag, *data = line.split
184
199
  data ||= []
200
+ deps = [@blog.view.globals[:ViewDir]/:data/"global.lt3"]
185
201
  case tag
186
202
  when "width"; wide = data[0]
187
203
  when "height"; high = data[0]
@@ -202,7 +218,7 @@ def banner
202
218
  if ! File.exist?(file)
203
219
  src = file.sub(/html$/, "lt3")
204
220
  if File.exist?(src)
205
- preprocess src: src, dst: file, call: ".nopara" # , vars: @blog.view.globals
221
+ preprocess src: src, dst: file, deps: deps, call: ".nopara", vars: @blog.view.globals
206
222
  else
207
223
  raise FoundNeither(file, src)
208
224
  end
@@ -228,11 +244,11 @@ def banner
228
244
  _out navbar if navbar
229
245
  rescue => err
230
246
  STDERR.puts "err = #{err}"
231
- STDERR.puts err.backtrace.join("\n")
232
- gets
247
+ STDERR.puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
233
248
  end
234
249
 
235
250
  def _svg_title(*args)
251
+ log!(enter: __method__)
236
252
  width = "95%"
237
253
  height = 90
238
254
  bgcolor = "black"
@@ -288,6 +304,7 @@ def _svg_title(*args)
288
304
  end
289
305
 
290
306
  def quote
307
+ log!(enter: __method__)
291
308
  _passthru "<blockquote>"
292
309
  _passthru _body.join(" ")
293
310
  _passthru "</blockquote>"
@@ -295,9 +312,11 @@ def quote
295
312
  end
296
313
 
297
314
  def categories # does nothing right now
315
+ log!(enter: __method__)
298
316
  end
299
317
 
300
318
  def style
319
+ log!(enter: __method__)
301
320
  fname = _args[0]
302
321
  _passthru %[<link rel="stylesheet" href="???/etc/#{fname}')">]
303
322
  end
@@ -314,6 +333,7 @@ def h6; _passthru "<h6>#{@_data}</h6>"; end
314
333
  def hr; _passthru "<hr>"; end
315
334
 
316
335
  def nlist
336
+ log!(enter: __method__)
317
337
  _out "<ol>"
318
338
  _body {|line| _out "<li>#{line}</li>" }
319
339
  _out "</ol>"
@@ -321,6 +341,7 @@ def nlist
321
341
  end
322
342
 
323
343
  def list
344
+ log!(enter: __method__)
324
345
  _out "<ul>"
325
346
  _body {|line| _out "<li>#{line}</li>" }
326
347
  _out "</ul>"
@@ -328,6 +349,7 @@ def list
328
349
  end
329
350
 
330
351
  def list!
352
+ log!(enter: __method__)
331
353
  _out "<ul>"
332
354
  lines = _body.each
333
355
  loop do
@@ -346,6 +368,7 @@ end
346
368
  ### inset
347
369
 
348
370
  def inset
371
+ log!(enter: __method__)
349
372
  lines = _body
350
373
  box = ""
351
374
  output = []
@@ -377,6 +400,7 @@ def inset
377
400
  end
378
401
 
379
402
  def title
403
+ log!(enter: __method__)
380
404
  raise NoPostCall unless @meta
381
405
  title = @_data.chomp
382
406
  @meta.title = title
@@ -386,6 +410,7 @@ def title
386
410
  end
387
411
 
388
412
  def pubdate
413
+ log!(enter: __method__)
389
414
  raise NoPostCall unless @meta
390
415
  _debug "data = #@_data"
391
416
  # Check for discrepancy?
@@ -398,6 +423,7 @@ def pubdate
398
423
  end
399
424
 
400
425
  def tags
426
+ log!(enter: __method__)
401
427
  raise NoPostCall unless @meta
402
428
  _debug "args = #{_args}"
403
429
  @meta.tags = _args.dup || []
@@ -405,6 +431,7 @@ def tags
405
431
  end
406
432
 
407
433
  def views
434
+ log!(enter: __method__)
408
435
  raise NoPostCall unless @meta
409
436
  _debug "data = #{_args}"
410
437
  @meta.views = _args.dup
@@ -412,6 +439,7 @@ def views
412
439
  end
413
440
 
414
441
  def pin
442
+ log!(enter: __method__)
415
443
  raise NoPostCall unless @meta
416
444
  _debug "data = #{_args}" # verify only valid views?
417
445
  pinned = @_args
@@ -427,21 +455,22 @@ def pin
427
455
  _optional_blank_line
428
456
  rescue => err
429
457
  STDERR.puts "err = #{err}"
430
- STDERR.puts err.backtrace.join("\n")
431
- gets
458
+ STDERR.puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
432
459
  end
433
460
 
434
461
  def write_post
462
+ log!(enter: __method__)
435
463
  raise NoPostCall unless @meta
436
464
  @meta.views = @meta.views.join(" ") if @meta.views.is_a? Array
437
465
  @meta.tags = @meta.tags.join(" ") if @meta.tags.is_a? Array
438
466
  _write_metadata
439
467
  rescue => err
440
468
  puts "err = #{err}"
441
- puts err.backtrace.join("\n")
469
+ puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
442
470
  end
443
471
 
444
472
  def teaser
473
+ log!(enter: __method__)
445
474
  raise NoPostCall unless @meta
446
475
  text = _body.join("\n")
447
476
  @meta.teaser = text
@@ -456,6 +485,7 @@ def teaser
456
485
  end
457
486
 
458
487
  def finalize
488
+ log!(str: "Now exiting livetext processing...")
459
489
  return unless @meta
460
490
  return @meta if @blog.nil?
461
491
 
@@ -467,6 +497,7 @@ def finalize
467
497
  end
468
498
 
469
499
  def head # Does NOT output <head> tags
500
+ log!(enter: __method__)
470
501
  args = _args
471
502
  args.each do |inc|
472
503
  self.data = inc
@@ -522,6 +553,7 @@ end
522
553
  ########## newer stuff...
523
554
 
524
555
  def meta
556
+ log!(enter: __method__)
525
557
  args = _args
526
558
  enum = args.each
527
559
  str = "<meta"
@@ -541,6 +573,7 @@ def meta
541
573
  end
542
574
 
543
575
  def recent_posts # side-effect
576
+ log!(enter: __method__)
544
577
  _out <<-HTML
545
578
  <div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
546
579
  <iframe id="main" style="width: 70vw; height: 100vh; position: relative;"
@@ -551,6 +584,7 @@ def recent_posts # side-effect
551
584
  end
552
585
 
553
586
  def _make_class_name(app)
587
+ log!(enter: __method__)
554
588
  if app =~ /[-_]/
555
589
  words = app.split(/[-_]/)
556
590
  name = words.map(&:capitalize).join
@@ -561,6 +595,7 @@ def _make_class_name(app)
561
595
  end
562
596
 
563
597
  def _load_local(widget)
598
+ log!(enter: __method__)
564
599
  Dir.chdir("../../widgets/#{widget}") do
565
600
  rclass = _make_class_name(widget)
566
601
  found = (require("./#{widget}") if File.exist?("#{widget}.rb"))
@@ -569,12 +604,13 @@ def _load_local(widget)
569
604
  end
570
605
  rescue => err
571
606
  STDERR.puts err.to_s
572
- STDERR.puts err.backtrace.join("\n")
607
+ STDERR.puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
573
608
  sleep 6; RubyText.stop
574
609
  exit
575
610
  end
576
611
 
577
612
  def _handle_standard_widget(tag)
613
+ log!(enter: __method__)
578
614
  wtag = "../../widgets"/tag
579
615
  code = _load_local(tag)
580
616
  if code
@@ -586,6 +622,7 @@ def _handle_standard_widget(tag)
586
622
  end
587
623
 
588
624
  def sidebar
625
+ log!(enter: __method__)
589
626
  _debug "--- handling sidebar\r"
590
627
  if _args.include? "off"
591
628
  _body { } # iterate, do nothing
@@ -613,12 +650,13 @@ def sidebar
613
650
  _out %[</div>]
614
651
  rescue => err
615
652
  puts "err = #{err}"
616
- puts err.backtrace.join("\n")
653
+ puts err.backtrace.join("\n") if err.respond_to?(:backtrace)
617
654
  sleep 6; RubyText.stop
618
655
  exit
619
656
  end
620
657
 
621
658
  def stylesheet
659
+ log!(enter: __method__)
622
660
  lines = _body
623
661
  url = lines[0]
624
662
  integ = lines[1]
@@ -627,6 +665,7 @@ def stylesheet
627
665
  end
628
666
 
629
667
  def script
668
+ log!(enter: __method__)
630
669
  lines = _body
631
670
  url = lines[0]
632
671
  integ = lines[1]
@@ -676,6 +715,7 @@ end
676
715
 
677
716
 
678
717
  def tag_cloud
718
+ log!(enter: __method__)
679
719
  title = _data
680
720
  title = "Tag Cloud" if title.empty?
681
721
  open = <<-HTML
@@ -699,18 +739,22 @@ def tag_cloud
699
739
  end
700
740
 
701
741
  def vnavbar
742
+ log!(enter: __method__)
702
743
  str = _make_navbar(:vert)
703
744
  end
704
745
 
705
746
  def hnavbar
747
+ log!(enter: __method__)
706
748
  str = _make_navbar # horiz is default
707
749
  end
708
750
 
709
751
  def navbar
752
+ log!(enter: __method__)
710
753
  str = _make_navbar # horiz is default
711
754
  end
712
755
 
713
756
  def _make_navbar(orient = :horiz)
757
+ log!(enter: __method__)
714
758
  vdir = @root/:views/@blog.view
715
759
  title = _var("view.title")
716
760
 
@@ -751,7 +795,7 @@ def _make_navbar(orient = :horiz)
751
795
  else
752
796
  dir = @blog.root/:views/@blog.view/"themes/standard/banner/navbar"
753
797
  dest = vdir/"remote/banner/navbar"/basename+".html"
754
- preprocess cwd: dir, src: basename, dst: dest, call: ".nopara" # , debug: true
798
+ preprocess cwd: dir, src: basename, dst: dest, call: ".nopara", vars: @blog.view.globals # , debug: true
755
799
  output.puts %[#{li1} <a class="nav-link" #{href_main}>#{cdata}</a> #{li2}]
756
800
  end
757
801
  end
@@ -766,6 +810,7 @@ end
766
810
  ##################
767
811
 
768
812
  def _html_body(file, css = nil)
813
+ log!(enter: __method__)
769
814
  file.puts "<html>"
770
815
  if css
771
816
  file.puts " <head>"
@@ -778,10 +823,12 @@ def _html_body(file, css = nil)
778
823
  end
779
824
 
780
825
  def _errout(*args)
826
+ log!(enter: __method__)
781
827
  ::STDERR.puts *args
782
828
  end
783
829
 
784
830
  def _passthru(line)
831
+ log!(enter: __method__)
785
832
  return if line.nil?
786
833
  line = _format(line)
787
834
  _out line + "\n"
@@ -789,6 +836,7 @@ def _passthru(line)
789
836
  end
790
837
 
791
838
  def _passthru_noline(line)
839
+ log!(enter: __method__)
792
840
  return if line.nil?
793
841
  line = _format(line)
794
842
  _out line
@@ -796,6 +844,7 @@ def _passthru_noline(line)
796
844
  end
797
845
 
798
846
  def _write_metadata
847
+ log!(enter: __method__)
799
848
  File.write("teaser.txt", @meta.teaser)
800
849
  fields = [:num, :title, :date, :pubdate, :views, :tags, :pinned]
801
850
  fname = "metadata.txt"
@@ -805,20 +854,32 @@ def _write_metadata
805
854
  end
806
855
 
807
856
  def _post_lookup(postid) # side-effect
857
+ log!(enter: __method__)
808
858
  # .. = templates, ../.. = views/thisview
809
859
  slug = title = date = teaser_text = nil
810
860
 
861
+ view = @blog.view
862
+ vdir = view.dir rescue "NONAME"
863
+ setvar("View", view.name)
864
+ setvar("ViewDir", @blog.root/:views/view.name)
865
+ tmp = File.new("/tmp/PL-#{Time.now.to_i}.txt", "w")
866
+ tmp.puts "_post_lookup: blog.view = #{@blog.view.inspect}"
867
+ tmp.puts "_post_lookup: vdir = #{vdir}"
811
868
  dir_posts = @vdir/:posts
812
869
  posts = Dir.entries(dir_posts).grep(/^\d\d\d\d/).map {|x| dir_posts/x }
813
870
  posts.select! {|x| File.directory?(x) }
814
871
 
872
+ tmp.puts "_post_lookup: postid = #{postid}"
873
+ tmp.puts "_post_lookup: posts = \n#{posts.inspect}"
874
+ tmp.close
815
875
  posts = posts.select {|x| File.basename(x).to_i == postid }
816
- postdir = exactly_one(posts)
876
+ postdir = exactly_one(posts, posts.inspect)
817
877
  vp = RuneBlog::ViewPost.new(@blog.view, postdir)
818
878
  vp
819
879
  end
820
880
 
821
881
  def _card_generic(card_title:, middle:, extra: "")
882
+ log!(enter: __method__)
822
883
  front = <<-HTML
823
884
  <div class="card #{extra} mb-3">
824
885
  <div class="card-body">
@@ -834,14 +895,17 @@ def _card_generic(card_title:, middle:, extra: "")
834
895
  end
835
896
 
836
897
  def _var(name) # FIXME scope issue!
898
+ log!(enter: __method__)
837
899
  ::Livetext::Vars[name] || "[:#{name} is undefined]"
838
900
  end
839
901
 
840
902
  def _main(url)
903
+ log!(enter: __method__)
841
904
  %[href="javascript: void(0)" onclick="javascript:open_main('#{url}')"]
842
905
  end
843
906
 
844
907
  def _blank(url)
908
+ log!(enter: __method__)
845
909
  %[href='#{url}' target='blank']
846
910
  end
847
911