runeblog 0.3.21 → 0.3.26

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 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