runeblog 0.2.84 → 0.2.89

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: f0a0162c325b884d416802f6502ca34273cc388d7af3e58347e886c1b1e4c4d1
4
- data.tar.gz: 450abb053bea34e25e392e6421fbd38cd6ded80d9bc93379b3a0f288f9dd60e3
3
+ metadata.gz: 69a5bfa546e814106599e4bd829ddf169bc07053b592db267bce813675f57119
4
+ data.tar.gz: 05dfce46838cf7002e57dc1f279e8da776463a06734f3a445ca2d710d82b4e2a
5
5
  SHA512:
6
- metadata.gz: 886ae461d1898a79c2b674b728418975b3d28bd48a43c7d1cd2706133495c4497fbda6d1af3d365015929e7e53d6fab76047f4b7b17697cfed88f4dbacda153d
7
- data.tar.gz: 100ef7fd298aff83c714070fc7beda5cedf03d063bf1b8dc5a9a150a16e56bada728842e23acbcb61b827eacea22404e5f743a74de905daf614629265b8e1f10
6
+ metadata.gz: 170e5b90aff508ad77410a0b774bf30b79282e0928f863147d6da681879448e78a8e0d8053bf3c50a97a465b22a88d36409aaca16efe1c1fb20b59f1a365260b
7
+ data.tar.gz: 37135518327009fd0300cc082914b29992934ecead7a62fe3c3f3bcbb72c6f290f0e7911a6ee94ed26f2b554d77cfd4da84f56cbfa6f95f5b15cac576639aa2a
data/bin/blog CHANGED
@@ -12,9 +12,7 @@ include RuneBlog::REPL
12
12
  def yesno(question, noskip=false)
13
13
  puts fx("\n #{question}", :bold)
14
14
  puts unless noskip
15
- r, c = STDSCR.rc
16
- num, str = STDSCR.menu(r: r, c: c+6, items: ["yes", "no"])
17
- num == 0
15
+ STDSCR.yesno
18
16
  end
19
17
 
20
18
  def pick_editor
@@ -24,29 +22,57 @@ def pick_editor
24
22
  file = `which #{name}`.chomp
25
23
  end
26
24
 
25
+ def get_universal
26
+ univ = "#{@blog.root}/data/universal.lt3"
27
+ if yesno("Faster initial setup? (no: edit universal.lt3)")
28
+ author = ask("Author name: ")
29
+ site = ask("Site/domain: ")
30
+ # Now stash it...
31
+ str = File.read(univ)
32
+ str = str.gsub(/AUTHOR/, author)
33
+ str = str.gsub(/SITE_DOMAIN/, site)
34
+ else
35
+ vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(AUTHOR.*\|SITE.*\)"'
36
+ edit_file(univ, vim: vim_params)
37
+ end
38
+ end
39
+
40
+ def get_global
41
+ if yesno("Faster view setup? (no: edit global.lt3)")
42
+ view_name = ask("\nFilename: ")
43
+ @blog.create_view(view_name) # call change_view??
44
+ title = ask("View title: ")
45
+ subtitle = ask("Subtitle : ")
46
+ gname = "#{@blog.root}/views/#{view_name}/themes/standard/global.lt3"
47
+ text = File.read(gname)
48
+ text = text.gsub(/VIEW_NAME/, view_name)
49
+ text = text.gsub(/VIEW_TITLE/, title)
50
+ text = text.gsub(/VIEW_SUBTITLE/, subtitle)
51
+ File.write(gname, text)
52
+ else
53
+ view_name = ask("\nFilename: ")
54
+ @blog.create_view(view_name) # call change_view??
55
+ vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
56
+ edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
57
+ end
58
+ end
59
+
27
60
  def get_started
28
61
  if yesno("Do you want to qo a quick setup?")
29
62
  puts " First choose your editor."
30
63
  @blog.editor = pick_editor
31
64
  File.write("#{@blog.root}/data/EDITOR", @blog.editor)
32
65
 
33
- if yesno("Edit settings now?")
34
- fname = "#{@blog.root}/data/universal.lt3"
35
- vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(AUTHOR.*\|SITE.*\)"'
36
- edit_file(fname, vim: vim_params)
37
- end
66
+ get_universal
38
67
  # Now create a custom global.lt3
39
68
  @blog._generate_global
40
- noview = true
41
69
  puts fx("\n Quick setup complete!", :bold)
42
70
  if yesno("Create your first view now?")
43
- cmd_new_view(nil)
44
- noview = false
71
+ get_global
45
72
  puts "\n View #{@blog.view} created!\n "
46
73
  end
47
74
  end
48
75
 
49
-
50
76
  puts
51
77
  print fx(" For help", :bold)
52
78
  puts " type h or help."
@@ -0,0 +1 @@
1
+ meh
@@ -1,5 +1,6 @@
1
- .nopara
2
- <svg width="98%" height="100"
1
+ .seek global.lt3 # FIXME this is a hack!
2
+
3
+ <svg width="98%" height="120"
3
4
  viewBox="0 0 98% 100">
4
5
  <defs>
5
6
  <linearGradient id="grad1" x1="100%" y1="100%" x2="0%" y2="100%">
@@ -8,12 +9,12 @@
8
9
  </linearGradient>
9
10
  </defs>
10
11
  <style>
11
- .small { font: 20px sans-serif; fill: #98baff }
12
- .heavy { font: bold 55px sans-serif; fill: #76a9ff }
12
+ .small { font: 18px sans-serif; fill: #98baff }
13
+ .heavy { font: bold 52px sans-serif; fill: #76a9ff }
13
14
  </style>
14
15
 
15
16
  <rect x="20" y="20" rx="15" ry="15" width="98%" height="100" fill="url(#grad1)"/>
16
17
 
17
- <text x="25" y="60" class=heavy>$blog</text>
18
- <text x="25" y="90" class=small>$blog.desc</text>
18
+ <text x="45" y="70" class=heavy>$blog</text>
19
+ <text x="45" y="98" class=small>$blog.desc</text>
19
20
  </svg>
@@ -4,8 +4,6 @@
4
4
  . The user will more often edit blog/index.lt3 in
5
5
  . the process of blog setup.
6
6
  . --------------------------------------------------
7
- .nopara
8
- .mixin liveblog
9
7
 
10
8
  <html>
11
9
  <!-- Generated from $File on $$date.
@@ -2,7 +2,6 @@
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
6
5
 
7
6
  <div class="post">
8
7
  <table width=100% cellpadding=7>
@@ -2,7 +2,6 @@
2
2
  . This file is processed to create blog.css
3
3
  . Most of the global CSS goes here
4
4
  . --------------------------------------------------
5
- .nopara
6
5
 
7
6
  .seek themes/standard/global.lt3
8
7
 
@@ -8,10 +8,11 @@ def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_vie
8
8
  log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
9
9
  viewlist = (views + [view.to_s]).join(" ")
10
10
  taglist = ".tags " + tags.join(" ")
11
- <<-TEXT
12
- .mixin liveblog
13
- . ^ get rid of this later
14
11
 
12
+ # .mixin liveblog
13
+ # . ^ get rid of this later
14
+
15
+ <<-TEXT
15
16
  .post #{num}
16
17
 
17
18
  .title #{title}
@@ -18,6 +18,8 @@ def init_liveblog # FIXME - a lot of this logic sucks
18
18
  @vdir = @blog.view.dir rescue "NONAME"
19
19
  @version = RuneBlog::VERSION
20
20
  @theme = @vdir/:themes/:standard
21
+ rescue
22
+ raise "Only works inside a blog repo"
21
23
  end
22
24
 
23
25
  ##################
@@ -90,7 +92,6 @@ end
90
92
 
91
93
  def banner
92
94
  count = 0
93
- span = 1
94
95
  bg = "white" # outside loop
95
96
  wide = nil
96
97
  high = 250
@@ -111,23 +112,23 @@ def banner
111
112
  image = "banner"/image
112
113
  wide = data[0]
113
114
  width = wide ? "width=#{wide}" : ""
114
- str2 << " <td colspan=#{span}><img src=#{image} #{width} height=#{high}></img></td>" + "\n"
115
+ str2 << " <td><img src=#{image} #{width} height=#{high}></img></td>" + "\n"
115
116
  when "svg_title"
116
117
  stuff, hash = _svg_title(*data)
117
118
  wide = hash["width"]
118
- str2 << " <td colspan=#{span} width=#{wide}>#{stuff}</td>" + "\n"
119
+ str2 << " <td width=#{wide}>#{stuff}</td>" + "\n"
119
120
  when "text"
120
121
  data[0] ||= "top.html"
121
122
  file = "banner"/data[0]
122
123
  if ! File.exist?(file)
123
124
  src = file.sub(/html$/, "lt3")
124
125
  if File.exist?(src)
125
- preprocess src: src, dst: file, vars: Livetext::Vars
126
+ preprocess src: src, dst: file, call: ".nopara" # , vars: @blog.view.globals
126
127
  else
127
128
  raise "Neither #{file} nor #{src} found"
128
129
  end
129
130
  end
130
- str2 << "<td colspan=#{span}>" + File.read(file) + "</td>" + "\n"
131
+ str2 << "<td>" + File.read(file) + "</td>" + "\n"
131
132
  when "navbar"
132
133
  dir = @blog.root/:views/@blog.view/"themes/standard/banner/" + "\n"
133
134
  _make_navbar # horiz is default
@@ -139,7 +140,6 @@ def banner
139
140
  file = "banner/vnavbar.html"
140
141
  navbar = File.read(file)
141
142
  when "break"
142
- # span = count - 1
143
143
  str2 << " </tr>\n <tr>" + "\n"
144
144
  else
145
145
  str2 << " '#{tag}' isn't known" + "\n"
@@ -159,28 +159,6 @@ rescue => err
159
159
  gets
160
160
  end
161
161
 
162
- def _parse_colon_args(args, hash) # really belongs in livetext
163
- h2 = hash.dup
164
- e = args.each
165
- loop do
166
- arg = e.next.chop.to_sym
167
- raise "_parse_args: #{arg} is unknown" unless hash.keys.include?(arg)
168
- h2[arg] = e.next
169
- end
170
- h2 = h2.reject {|k,v| v.nil? }
171
- h2.each_pair {|k, v| raise "#{k} has no value" if v.empty? }
172
- h2
173
- end
174
-
175
- def _get_arg(name, args) # really belongs in livetext
176
- raise "(#{name}) Expected an array" unless args.is_a? Array
177
- raise "(#{name}) Expected an arg" if args.empty?
178
- raise "(#{name}) Too many args: #{args.inspect}" if args.size > 1
179
- val = args[0]
180
- raise "Expected an argument '#{name}'" if val.nil?
181
- val
182
- end
183
-
184
162
  def _svg_title(*args)
185
163
  width = "95%"
186
164
  height = 90
@@ -574,11 +552,10 @@ def sidebar
574
552
  num = rand(1..4)
575
553
  img = "widgets/ad/ad#{num}.png"
576
554
  src, dst = img, @root/:views/@view_name/"remote/widgets/ad/"
577
- system!("cp #{src} #{dst}") # , show: true)
578
- File.open(wtag/"vars.lt3", "w") do |f|
579
- f.puts ".set ad.image = #{img}"
580
- end
581
- preprocess cwd: wtag, src: tag, dst: tcard, force: true # , debug: true # , deps: depend
555
+ system!("cp #{src} #{dst}")
556
+ File.open(wtag/"vars.lt3", "w") {|f| f.puts ".set ad.image = #{img}" }
557
+ preprocess cwd: wtag, src: tag, dst: tcard, call: ".nopara",
558
+ force: true # , debug: true # , deps: depend
582
559
  end
583
560
 
584
561
  _include_file wtag/tcard
@@ -722,7 +699,8 @@ def _make_navbar(orient = :horiz)
722
699
  output.puts %[#{li1} <a class="nav-link" href="index.html">#{cdata}<span class="sr-only">(current)</span></a> #{li2}]
723
700
  else
724
701
  dir = @blog.root/:views/@blog.view/"themes/standard/banner"
725
- preprocess cwd: dir, src: basename, dst: vdir/"remote/banner"/basename+".html" # , debug: true
702
+ dest = vdir/"remote/banner"/basename+".html"
703
+ preprocess cwd: dir, src: basename, dst: dest, call: ".nopara" # , debug: true
726
704
  output.puts %[#{li1} <a class="nav-link" #{href_main}>#{cdata}</a> #{li2}]
727
705
  end
728
706
  end
@@ -1,5 +1,4 @@
1
1
  require 'runeblog'
2
- require 'global'
3
2
  require 'pathmagic'
4
3
 
5
4
  class RuneBlog::Post
@@ -9,12 +8,6 @@ class RuneBlog::Post
9
8
 
10
9
  include RuneBlog::Helpers
11
10
 
12
- # def self.files(num, root)
13
- # log!(enter: __method__, args: [num, root], level: 3)
14
- # files = ::Find.find(root).to_a
15
- # result = files.grep(/#{prefix(num)}-/)
16
- # result
17
- # end
18
11
 
19
12
  def self.load(post)
20
13
  log!(enter: __method__, args: [post], level: 3)
@@ -22,7 +15,6 @@ class RuneBlog::Post
22
15
  raise NoBlogAccessor if RuneBlog.blog.nil?
23
16
  # "post" is a slug
24
17
  pdir = RuneBlog.blog.root/:drafts/post
25
- puts "-- load: opening #{pdir}"
26
18
  meta = nil
27
19
  Dir.chdir(pdir) do
28
20
  meta = read_config("metadata.txt")
@@ -22,7 +22,8 @@ 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, vars: nil)
25
+ deps: [], copy: nil, debug: false, force: false,
26
+ mix: [], call: [], vars: {})
26
27
  src += LEXT unless src.end_with?(LEXT)
27
28
  dst += ".html" unless (dst.end_with?(".html") || strip)
28
29
  sp = " "*12
@@ -37,8 +38,8 @@ def preprocess(cwd: Dir.pwd, src:,
37
38
  end
38
39
  stale = stale?(src, dst, deps, force)
39
40
  if stale
40
- live = Livetext.new
41
- out = live.xform_file(src, vars: vars)
41
+ live = Livetext.customize(mix: "liveblog", call: call, vars: vars)
42
+ out = live.xform_file(src)
42
43
  File.write(dst, out)
43
44
  system!("cp #{dst} #{copy}") if copy
44
45
  end
@@ -2,7 +2,6 @@ if ! defined?(Already_publish)
2
2
 
3
3
  Already_publish = nil
4
4
 
5
- require 'global'
6
5
  require 'pathmagic'
7
6
 
8
7
  class RuneBlog::Publishing
@@ -17,6 +16,7 @@ class RuneBlog::Publishing
17
16
  @blog = RuneBlog.blog
18
17
  gfile = @blog.root/:views/view/"themes/standard/global.lt3"
19
18
  data = File.readlines(gfile)
19
+ # Please refactor the Hal out of this
20
20
  grab = ->(var) { data.grep(/^#{var} /).first.chomp.split(" ", 2)[1] }
21
21
  @user = grab.call("publish.user")
22
22
  @server = grab.call("publish.server")
@@ -1,5 +1,4 @@
1
1
  require 'runeblog'
2
- require 'global'
3
2
  require 'ostruct'
4
3
  require 'helpers-repl' # FIXME structure
5
4
 
@@ -39,27 +38,22 @@ module RuneBlog::REPL
39
38
  end
40
39
 
41
40
  def cmd_config(arg, testing = false)
42
- list = ["global.lt3 Global configuration",
43
- "blog/generate.lt3 Generator for view (usu not edited)",
44
- ".... head.lt3 HEAD info for view",
45
- ".... banner.lt3 banner description",
46
- ".... index.lt3 User-edited detail for view",
47
- ".... post_entry.lt3 Generator for post entry in recent-posts",
48
- "etc/blog.css.lt3 Global CSS",
49
- "... externals.lt3 External JS/CSS (Bootstrap, etc.)",
50
- "post/generate.lt3 Generator for a post",
51
- ".... head.lt3 HEAD info for post",
52
- ".... index.lt3 Content for post",
53
- ".... permalink.lt3 Generator for permalink"]
54
-
55
- name = ["global.lt3", "blog/generate.lt3", "blog/head.lt3", "blog/banner.lt3",
56
- "blog/index.lt3", "blog/post_entry.lt3", "etc/blog.css.lt3",
57
- "blog/externals.lt3", "post/generate.lt3", "post/head.lt3",
58
- "post/index.lt3", "post/permalink.lt3"]
41
+ hash = {"global.lt3 Global configuration" => "global.lt3",
42
+ "blog/generate.lt3 Generator for view (usu not edited)" => "blog/generate.lt3",
43
+ ".... head.lt3 HEAD info for view" => "blog/head.lt3",
44
+ ".... banner.lt3 banner description" => "blog/banner.lt3",
45
+ ".... index.lt3 User-edited detail for view" => "blog/index.lt3",
46
+ ".... post_entry.lt3 Generator for post entry in recent-posts" => "blog/post_entry.lt3",
47
+ "etc/blog.css.lt3 Global CSS" => "etc/blog.css.lt3",
48
+ "... externals.lt3 External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3",
49
+ "post/generate.lt3 Generator for a post" => "post/generate.lt3",
50
+ ".... head.lt3 HEAD info for post" => "post/head.lt3",
51
+ ".... index.lt3 Content for post" => "post/index.lt3",
52
+ ".... permalink.lt3 Generator for permalink" => "post/permalink.lt3",
53
+ }
59
54
 
60
55
  dir = @blog.view.dir/"themes/standard/"
61
- num, str = STDSCR.menu(title: "Edit file:", items: list)
62
- target = name[num]
56
+ num, target = STDSCR.menu(title: "Edit file:", items: hash)
63
57
  edit_file(dir/target)
64
58
  end
65
59
 
@@ -192,7 +186,7 @@ module RuneBlog::REPL
192
186
  puts unless testing
193
187
  reset_output
194
188
  unless @blog.view.can_publish?
195
- msg = "Can't publish... see globals.lt3"
189
+ msg = "Can't publish... see global.lt3"
196
190
  puts msg unless testing
197
191
  output! msg
198
192
  return @out
@@ -253,6 +247,7 @@ module RuneBlog::REPL
253
247
  viewnames = @blog.views.map {|x| x.name }
254
248
  n = viewnames.find_index(@blog.view.name)
255
249
  name = @blog.view.name
250
+ # TODO: Add view description
256
251
  k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n) unless testing
257
252
  return if name.nil?
258
253
  @blog.view = name
@@ -9,7 +9,6 @@ require 'ostruct'
9
9
  require 'logging'
10
10
 
11
11
  require 'runeblog_version'
12
- require 'global'
13
12
  require 'helpers-blog'
14
13
  require 'default'
15
14
  require 'view'
@@ -107,13 +106,14 @@ class RuneBlog
107
106
 
108
107
  def _generate_global
109
108
  vars = read_vars("#@root/data/universal.lt3")
110
- global = File.read("#@root/data/global.lt3")
109
+ gfile = "#@root/data/global.lt3"
110
+ global = File.read(gfile)
111
111
  global.gsub!(/AUTHOR/, vars["author"])
112
112
  global.gsub!(/SITE/, vars["site"])
113
113
  global.gsub!(/FONT/, vars["font.family"])
114
114
  global.gsub!(/CHARSET/, vars["charset"])
115
115
  global.gsub!(/LOCALE/, vars["locale"])
116
- File.write("#@root/data/global.lt3", global)
116
+ File.write(gfile, global)
117
117
  end
118
118
 
119
119
  def _deploy_local(dir)
@@ -163,7 +163,8 @@ class RuneBlog
163
163
  dir = @root/:posts/nslug
164
164
  create_dirs(dir)
165
165
  # FIXME dependencies?
166
- preprocess cwd: dir, src: @root/:drafts/sourcefile # , debug: true
166
+ preprocess cwd: dir, src: @root/:drafts/sourcefile,
167
+ mix: "liveblog" # , debug: true
167
168
  _deploy_local(dir)
168
169
  rescue => err
169
170
  _tmp_error(err)
@@ -336,8 +337,10 @@ class RuneBlog
336
337
  @theme = @view.dir/"themes/standard"
337
338
  post_entry_name = @theme/"blog/post_entry.lt3"
338
339
  depend = [post_entry_name]
339
- preprocess src: post_entry_name, dst: "/tmp/post_entry.html" # , deps: depend # , debug: true
340
- @_post_entry ||= File.read("/tmp/post_entry.html")
340
+ html = "/tmp/post_entry.html"
341
+ preprocess src: post_entry_name, dst: html,
342
+ call: ".nopara" # , deps: depend # , debug: true
343
+ @_post_entry ||= File.read(html)
341
344
  vp = post_lookup(id)
342
345
  nslug, aslug, title, date, teaser_text =
343
346
  vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
@@ -389,13 +392,11 @@ class RuneBlog
389
392
  end
390
393
  else
391
394
  text << <<-HTML
392
- <svg width="95%" height="95%" viewBox="0 0 95% 95%">
393
- <style> .huge { font: italic 100px sans-serif; fill: white } </style>
395
+ <svg width="95%" height="75%" viewBox="0 0 95% 95%">
396
+ <style> .huge { font: italic 90px sans-serif; fill: white } </style>
394
397
  <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>
398
+ <text x="120" y="250" class=huge>No posts</text>
399
+ <text x="120" y="350" class=huge>here yet</text>
399
400
  </svg>
400
401
  HTML
401
402
  end
@@ -466,9 +467,11 @@ class RuneBlog
466
467
  # @theme/"navbar/navbar.lt3",
467
468
  @theme/"blog/index.lt3"] # FIXME what about assets?
468
469
  preprocess cwd: vdir/"themes/standard/etc", # deps: depend, debug: true,
469
- src: "blog.css.lt3", copy: vdir/"remote/etc/" # , dst: "blog.css"
470
+ src: "blog.css.lt3", copy: vdir/"remote/etc/",
471
+ call: ".nopara" # , dst: "blog.css"
470
472
  preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
471
- src: "blog/generate.lt3", dst: vdir/:remote/"index.html"
473
+ src: "blog/generate.lt3", dst: vdir/:remote/"index.html",
474
+ call: ".nopara"
472
475
  copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
473
476
  copy_widget_html(view)
474
477
  rescue => err
@@ -576,7 +579,8 @@ class RuneBlog
576
579
  # Step 1...
577
580
  create_dirs(pdraft)
578
581
  # FIXME dependencies?
579
- preprocess cwd: pdraft, src: draft, dst: "guts.html" # , debug: true
582
+ preprocess cwd: pdraft, src: draft, dst: "guts.html",
583
+ mix: "liveblog" # , debug: true
580
584
  _post_metadata(draft, pdraft)
581
585
  # Step 2...
582
586
  vposts = @root/:views/view_name/:posts
@@ -587,10 +591,12 @@ class RuneBlog
587
591
  # Step 4...
588
592
  # FIXME dependencies?
589
593
  preprocess cwd: @theme/:post, src: "generate.lt3", force: true,
590
- dst: remote/ahtml, copy: @theme/:post # , debug: true
594
+ dst: remote/ahtml, copy: @theme/:post,
595
+ call: ".nopara" # , debug: true
591
596
  # FIXME dependencies?
592
597
  preprocess cwd: @theme/:post, src: "permalink.lt3",
593
- dst: remote/:permalink/ahtml # , debug: true
598
+ dst: remote/:permalink/ahtml,
599
+ mix: "liveblog" # , debug: true
594
600
  copy_widget_html(view_name)
595
601
  rescue => err
596
602
  _tmp_error(err)
@@ -1,11 +1,65 @@
1
+ if !defined?(RuneBlog::Path)
1
2
 
2
- if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
3
+ # if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
3
4
 
4
5
  class RuneBlog
5
- VERSION = "0.2.84"
6
+ VERSION = "0.2.89"
6
7
 
7
8
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
8
9
  Path = File.dirname(path)
9
10
  end
10
11
 
12
+ # skeleton
13
+
14
+ class RuneBlog
15
+ module Helpers
16
+ end
17
+
18
+ class Default
19
+ end
20
+
21
+ class View
22
+ end
23
+
24
+ class Publishing
25
+ end
26
+
27
+ class Post
28
+ end
29
+ end
30
+
31
+ # Refactor, move stuff elsewhere?
32
+
33
+ def make_exception(sym, str)
34
+ log!(enter: __method__, args: [sym, str], level: 3)
35
+ return if Object.constants.include?(sym)
36
+ Object.const_set(sym, StandardError.dup)
37
+ define_method(sym) do |*args|
38
+ msg = str
39
+ args.each.with_index {|arg, i| msg.sub!("$#{i+1}", arg) }
40
+ Object.class_eval(sym.to_s).new(msg)
41
+ end
42
+ end
43
+
44
+ def system!(str, show: false)
45
+ log!(enter: __method__, args: [str], level: 2)
46
+ STDERR.puts str if show
47
+ rc = system(str)
48
+ if rc
49
+ return rc
50
+ else
51
+ STDERR.puts "FAILED: #{str.inspect}"
52
+ STDERR.puts "\ncaller = \n#{caller.join("\n ")}\n"
53
+ exit
54
+ return rc
55
+ end
56
+ rc
57
+ end
58
+
59
+ def prefix(num)
60
+ log!(enter: __method__, args: [num], level: 3)
61
+ "#{'%04d' % num.to_i}"
62
+ end
63
+
64
+
11
65
  end
@@ -1,8 +1,7 @@
1
- require 'global'
2
1
  require 'logging'
3
2
 
4
3
  class RuneBlog::View
5
- attr_reader :name, :state
4
+ attr_reader :name, :state, :globals
6
5
  attr_accessor :publisher
7
6
 
8
7
  include RuneBlog::Helpers
@@ -15,6 +14,10 @@ class RuneBlog::View
15
14
  @publisher = RuneBlog::Publishing.new(name)
16
15
  @can_publish = true # FIXME
17
16
  @blog.view = self
17
+ gfile = @blog.root/"views/#{name}/themes/standard/global.lt3"
18
+ live = Livetext.customize(call: ".nopara")
19
+ live.xform_file(gfile)
20
+ @globals = live.vars
18
21
  end
19
22
 
20
23
  def dir
@@ -20,8 +20,8 @@ spec = Gem::Specification.new do |s|
20
20
  s.authors = ["Hal Fulton"]
21
21
  s.email = 'rubyhacker@gmail.com'
22
22
  s.executables << "blog"
23
- s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.96'
24
- s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.18'
23
+ s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.99'
24
+ s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.20'
25
25
 
26
26
  s.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.0'
27
27
 
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.84
4
+ version: 0.2.89
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-17 00:00:00.000000000 Z
11
+ date: 2019-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '0.8'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.8.96
22
+ version: 0.8.99
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '0.8'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.8.96
32
+ version: 0.8.99
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rubytext
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '0.1'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.1.18
42
+ version: 0.1.20
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '0.1'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.1.18
52
+ version: 0.1.20
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: minitest
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -89,6 +89,7 @@ files:
89
89
  - data/universal.lt3
90
90
  - empty_view/assets/austin-pano.jpg
91
91
  - empty_view/assets/sky2.jpg
92
+ - empty_view/posts/GIT_IS_DUMB
92
93
  - empty_view/remote/assets/GIT_IS_DUMB
93
94
  - empty_view/remote/banner/austin-pano.jpg
94
95
  - empty_view/remote/etc/GIT_IS_DUMB
@@ -183,7 +184,6 @@ files:
183
184
  - lib/exper/gen_svg.rb
184
185
  - lib/exper/s2.html
185
186
  - lib/exper/varmint.rb
186
- - lib/global.rb
187
187
  - lib/helpers-blog.rb
188
188
  - lib/helpers-repl.rb
189
189
  - lib/liveblog.rb
@@ -1,52 +0,0 @@
1
- # skeleton
2
-
3
- class RuneBlog
4
- module Helpers
5
- end
6
-
7
- class Default
8
- end
9
-
10
- class View
11
- end
12
-
13
- class Publishing
14
- end
15
-
16
- class Post
17
- end
18
- end
19
-
20
- # Refactor, move stuff elsewhere?
21
-
22
- def make_exception(sym, str)
23
- log!(enter: __method__, args: [sym, str], level: 3)
24
- return if Object.constants.include?(sym)
25
- Object.const_set(sym, StandardError.dup)
26
- define_method(sym) do |*args|
27
- msg = str
28
- args.each.with_index {|arg, i| msg.sub!("$#{i+1}", arg) }
29
- Object.class_eval(sym.to_s).new(msg)
30
- end
31
- end
32
-
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
- exit
43
- return rc
44
- end
45
- rc
46
- end
47
-
48
- def prefix(num)
49
- log!(enter: __method__, args: [num], level: 3)
50
- "#{'%04d' % num.to_i}"
51
- end
52
-