runeblog 0.3.19 → 0.3.24

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.
@@ -49,6 +49,7 @@ class RuneBlog
49
49
  ConfigFile = "config"
50
50
  Themes = RuneBlog::Path/"../themes"
51
51
 
52
+ include Helpers
52
53
  include ErrorChecks
53
54
 
54
55
  class << self
@@ -60,10 +61,10 @@ class RuneBlog
60
61
  attr_reader :views, :sequence
61
62
  attr_accessor :root, :editor, :features
62
63
  attr_accessor :view # overridden
64
+ attr_accessor :post
63
65
 
64
66
  attr_accessor :post_views, :post_tags, :dirty_views
65
67
 
66
- include Helpers
67
68
 
68
69
  class Default
69
70
 
@@ -96,7 +97,6 @@ class RuneBlog
96
97
  def self.create_new_blog_repo(root_rel = ".blogs")
97
98
  log!(enter: __method__, args: [root_rel])
98
99
  check_nonempty_string(root_rel)
99
- self.blog = self # Weird. Like a singleton - dumbass circular dependency?
100
100
  repo_root = Dir.pwd/root_rel
101
101
  check_error(BlogRepoAlreadyExists) { Dir.exist?(repo_root) }
102
102
 
@@ -112,16 +112,17 @@ class RuneBlog
112
112
  end
113
113
  # copy_data(:extra, repo_root/:config)
114
114
  write_repo_config(root: repo_root)
115
- @blog = self.new
116
- @blog
115
+ # Weird. Like a singleton - dumbass circular dependency?
116
+ self.blog = blog = self.new
117
+ blog
117
118
  rescue => err
118
119
  puts "Can't create blog repo: '#{repo_root}' - #{err}"
119
120
  puts err.backtrace.join("\n")
120
121
  end
121
122
 
122
123
  def self.open(root_rel = ".blogs")
124
+ raise "Not impl"
123
125
  log!(enter: __method__, args: [root_rel])
124
- self.blog = self # Weird. Like a singleton - dumbass circular dependency?
125
126
  blog = self.new(root_rel)
126
127
  rescue => err
127
128
  _tmp_error(err)
@@ -129,10 +130,11 @@ class RuneBlog
129
130
 
130
131
  def initialize(root_rel = ".blogs") # always assumes existing blog
131
132
  log!(enter: "initialize", args: [root_rel])
132
- self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
133
+ # Weird. Like a singleton - dumbass circular dependency?
134
+ self.class.blog = self
133
135
 
134
136
  @root = Dir.pwd/root_rel
135
- write_repo_config(root: @root) # ?? FIXME
137
+ # write_repo_config(root: @root) # ?? FIXME
136
138
  get_repo_config
137
139
  read_features # top level
138
140
  @views = retrieve_views
@@ -145,6 +147,11 @@ class RuneBlog
145
147
  @sequence = get_sequence
146
148
  @post_views = []
147
149
  @post_tags = []
150
+ rescue => err
151
+ puts "Error - see stdout.txt"
152
+ STDERR.puts err.inspect
153
+ STDERR.puts err&.backtrace
154
+ sleep 3
148
155
  end
149
156
 
150
157
  def complete_file(name, vars, hash)
@@ -216,6 +223,7 @@ class RuneBlog
216
223
  meta = read_pairs!("metadata.txt")
217
224
  meta.views = meta.views.split
218
225
  meta.tags = meta.tags.split
226
+ RuneBlog.blog.post = meta
219
227
  meta
220
228
  end
221
229
 
@@ -239,7 +247,7 @@ class RuneBlog
239
247
  create_dirs(dir)
240
248
  # FIXME dependencies?
241
249
  preprocess cwd: dir, src: @root/:drafts/sourcefile, dst: @root/:posts/sourcefile.sub(/.lt3/, ".html"), # ZZZ
242
- mix: "liveblog" # , debug: true
250
+ mix: "liveblog", vars: @view.globals # , debug: true
243
251
  _deploy_local(dir)
244
252
  rescue => err
245
253
  _tmp_error(err)
@@ -262,13 +270,13 @@ class RuneBlog
262
270
  views.any? {|x| x.name == name }
263
271
  end
264
272
 
265
- def view(name = nil)
266
- log!(enter: __method__, args: [name], level: 3)
267
- return @view if name.nil?
268
-
269
- check_nonempty_string(name)
270
- return str2view(name)
271
- end
273
+ # def view(name = nil)
274
+ # log!(enter: __method__, args: [name], level: 3)
275
+ # return @view if name.nil?
276
+ #
277
+ # check_nonempty_string(name)
278
+ # return str2view(name)
279
+ # end
272
280
 
273
281
  def str2view(str)
274
282
  log!(enter: __method__, args: [str], level: 3)
@@ -285,25 +293,28 @@ class RuneBlog
285
293
 
286
294
  def view=(arg)
287
295
  log!(enter: __method__, args: [arg], level: 2)
296
+ if arg == "[no view]"
297
+ @view = nil
298
+ return
299
+ end
300
+ # STDERR.puts "view= #{arg.inspect}"
301
+
288
302
  case arg
289
- when "[no view]"
290
- # puts "Warning: No current view set"
291
- @view = nil
292
303
  when RuneBlog::View
293
304
  @view = arg
294
- read_features(@view)
295
- @view.get_globals
296
- _set_publisher
305
+ @view.get_globals(true)
297
306
  when String
298
307
  new_view = str2view(arg)
308
+ # STDERR.puts "view= new view #{new_view.inspect}"
299
309
  check_error(NoSuchView, arg) { new_view.nil? }
300
310
  @view = new_view
301
- read_features(@view)
302
- @view.get_globals
303
- _set_publisher
304
311
  else
305
312
  raise CantAssignView(arg.class.to_s)
306
313
  end
314
+ read_features(@view)
315
+ @view.get_globals(true)
316
+ _set_publisher
317
+ File.write(@root/"data/VIEW", @view.to_s)
307
318
  rescue => err
308
319
  _tmp_error(err)
309
320
  end
@@ -324,7 +335,9 @@ class RuneBlog
324
335
  log!(enter: __method__, args: [v], level: 3)
325
336
  return @view if v.nil?
326
337
  check_nonempty_string(v)
327
- return @root/:views/v
338
+ dir = @root/:views/v
339
+ puts "Dir = #{dir}" # ; sleep 5
340
+ return dir
328
341
  end
329
342
 
330
343
  def self.exist?
@@ -372,8 +385,9 @@ class RuneBlog
372
385
  make_empty_view_tree(view_name)
373
386
  add_view(view_name)
374
387
  mark_last_published("Initial creation")
375
- system("cp #@root/data/global.lt3 #@root/views/#{view_name}/themes/standard/global.lt3")
376
- @view.get_globals
388
+ # system("cp #@root/data/global.lt3 #@root/views/#{view_name}/themes/standard/global.lt3")
389
+ system("cp #@root/data/global.lt3 #@root/views/#{view_name}/data/global.lt3")
390
+ @view.get_globals(true)
377
391
  rescue => err
378
392
  _tmp_error(err)
379
393
  end
@@ -405,7 +419,7 @@ class RuneBlog
405
419
  posts.select! {|x| File.directory?(x) }
406
420
 
407
421
  posts = posts.select {|x| File.basename(x).to_i == postid }
408
- postdir = exactly_one(posts)
422
+ postdir = exactly_one(posts, posts.join("/"))
409
423
  vp = RuneBlog::ViewPost.new(self.view, postdir)
410
424
  vp
411
425
  rescue => err
@@ -421,7 +435,7 @@ class RuneBlog
421
435
  depend = [post_entry_name]
422
436
  html = "/tmp/post_entry.html"
423
437
  preprocess src: post_entry_name, dst: html,
424
- call: ".nopara" # , deps: depend # , debug: true
438
+ call: ".nopara", vars: @view.globals # , deps: depend # , debug: true
425
439
  @_post_entry = File.read(html)
426
440
  vp = post_lookup(id)
427
441
  nslug, aslug, title, date, teaser_text =
@@ -530,7 +544,8 @@ class RuneBlog
530
544
  # puts [draft, meta.views].inspect
531
545
  list << draft if meta.views.include?(self.view.to_s)
532
546
  end
533
- list.sort
547
+ # list.sort
548
+ curr_drafts
534
549
  end
535
550
 
536
551
  def all_drafts
@@ -562,15 +577,16 @@ class RuneBlog
562
577
  log!(enter: __method__, args: [view])
563
578
  vdir = @root/:views/view
564
579
  @theme = @root/:views/view/:themes/:standard
565
- depend = [vdir/"remote/etc/blog.css.lt3", @theme/"global.lt3",
580
+ @data = @root/:views/view/:data
581
+ depend = [vdir/"remote/etc/blog.css.lt3", @data/"global.lt3",
566
582
  @theme/"blog/head.lt3",
567
583
  # @theme/"navbar/navbar.lt3",
568
584
  @theme/"blog/index.lt3"] # FIXME what about assets?
569
585
  preprocess cwd: vdir/"themes/standard/etc", src: "blog.css.lt3",
570
- copy: vdir/"remote/etc/", call: [".nopara"], strip: true
586
+ copy: vdir/"remote/etc/", call: [".nopara"], strip: true , vars: @view.globals
571
587
  preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
572
588
  src: "blog/generate.lt3", dst: vdir/:remote/"index.html",
573
- call: ".nopara"
589
+ call: ".nopara" , vars: @view.globals
574
590
  copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/") # includes navbar/
575
591
  copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
576
592
  # rebuild widgets?
@@ -584,7 +600,7 @@ class RuneBlog
584
600
  def _get_views(draft)
585
601
  log!(enter: __method__, args: [draft], level: 2)
586
602
  # FIXME dumb code
587
- view_line = exactly_one(File.readlines(draft).grep(/^.views /))
603
+ view_line = exactly_one(File.readlines(draft).grep(/^.views /), ".view line")
588
604
  views = view_line[7..-1].split
589
605
  views.uniq
590
606
  rescue => err
@@ -622,10 +638,14 @@ class RuneBlog
622
638
  title = meta.title
623
639
  tags = meta.tags
624
640
  # FIXME simplify
625
- addvar(hash, "post.num" => pnum, "post.aslug" => aslug,
626
- "post.date" => date, title: title.chomp,
627
- "post.tags" => tags.join(" "), teaser: excerpt.chomp,
628
- longdate: longdate)
641
+ addvar(hash, "post.num" => pnum,
642
+ "post.aslug" => aslug,
643
+ "post.date" => date,
644
+ title: title.chomp,
645
+ teaser: excerpt.chomp,
646
+ longdate: longdate,
647
+ "post.nslug" => pnum + "-" + aslug,
648
+ "post.tags" => tags.join(" "))
629
649
  end
630
650
  hash
631
651
  rescue => err
@@ -634,19 +654,25 @@ class RuneBlog
634
654
 
635
655
  def copy_widget_html(view)
636
656
  log!(enter: __method__, level: 2)
657
+ log! str: "=== cwh cp 1"
637
658
  vdir = @root/:views/view
638
659
  remote = vdir/:remote
639
660
  wdir = vdir/:widgets
640
661
  widgets = Dir[wdir/"*"].select {|w| File.directory?(w) }
662
+ log! str: "=== cwh cp 2"
641
663
  widgets.each do |w|
642
664
  dir = File.basename(w)
643
665
  rem = w.sub(/widgets/, "remote/widgets")
666
+ log! str: "=== cwh cp 3 w = #{w.inspect}"
644
667
  create_dirs(rem)
645
668
  files = Dir[w/"*"]
646
669
  # files = files.select {|x| x =~ /(html|css)$/ }
647
670
  tag = File.basename(w)
648
- files.each {|file| system!("cp #{file} #{rem}", show: (tag == "zzz")) }
671
+ log! str: "=== cwh cp 4 tag = #{tag.inspect}"
672
+ files.each {|file| system!("cp #{file} #{rem}", show: true) }
673
+ log! str: "=== cwh cp 5 tag was #{tag.inspect}"
649
674
  end
675
+ log! str: "=== cwh cp 6"
650
676
  rescue => err
651
677
  _tmp_error(err)
652
678
  end
@@ -662,22 +688,34 @@ class RuneBlog
662
688
  pdraft = @root/:posts/nslug
663
689
  remote = @root/:views/view_name/:remote
664
690
  @theme = @root/:views/view_name/:themes/:standard
691
+ pmeta = @root/:views/view_name/:posts/nslug
692
+
665
693
 
666
694
  create_dirs(pdraft) # Step 1...
695
+ @view.globals ||= {}
696
+ args = {cwd: pdraft, src: draft, debug: true, dst: "guts.html",
697
+ mix: "liveblog", vars: @view.globals}
667
698
  preprocess cwd: pdraft, src: draft, # FIXME dependencies?
668
- dst: "guts.html", mix: "liveblog"
699
+ debug: true,
700
+ dst: "guts.html", mix: "liveblog", vars: @view.globals
669
701
  hash = _post_metadata(draft, pdraft)
702
+ hash[:CurrentPost] = pmeta
670
703
  vposts = @root/:views/view_name/:posts # Step 2...
671
704
  copy!(pdraft, vposts) # ??
672
- copy(pdraft/"guts.html", @theme/:post) # Step 3...
673
- preprocess cwd: @theme/:post, src: "generate.lt3", # Step 4...
674
- force: true, vars: hash,
675
- dst: remote/ahtml, call: ".nopara"
705
+ copy(pdraft/"guts.html", vposts/nslug) # Step 3...
706
+ # Step 4...
707
+ preprocess cwd: pmeta, src: "../../themes/standard/post/generate.lt3",
708
+ force: true, vars: hash, debug: true,
709
+ dst: remote/ahtml, call: ".nopara"
676
710
  FileUtils.rm_f(remote/"published")
677
711
  timelog("Generated", remote/"history")
678
712
  copy_widget_html(view_name)
679
713
  rescue => err
680
- _tmp_error(err)
714
+ puts "Error - see stdout.txt"
715
+ STDERR.puts err.inspect
716
+ STDERR.puts err&.backtrace
717
+ # _tmp_error(err)
718
+ # puts err.backtrace.join("\n")
681
719
  end
682
720
 
683
721
  def _check_view?(view)
@@ -689,7 +727,9 @@ class RuneBlog
689
727
  def generate_post(draft, force = false)
690
728
  log!(enter: __method__, args: [draft], level: 1)
691
729
  views = _get_views(draft)
692
- views.each {|view| _handle_post(draft, view) }
730
+ views.each do |view|
731
+ _handle_post(draft, view)
732
+ end
693
733
  # For current view:
694
734
  slug = File.basename(draft).sub(/.lt3$/, "")
695
735
  postdir = self.view.dir/"remote/post/"/slug
@@ -1,7 +1,7 @@
1
1
  if !defined?(RuneBlog::Path)
2
2
 
3
3
  class RuneBlog
4
- VERSION = "0.3.19"
4
+ VERSION = "0.3.24"
5
5
 
6
6
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
7
7
  Path = File.dirname(path)
@@ -13,17 +13,36 @@ class RuneBlog::View
13
13
  @name = name
14
14
  @publisher = RuneBlog::Publishing.new(name)
15
15
  @can_publish = true # FIXME
16
- @blog.view = self
16
+ # @blog.view = self # NOOOO??
17
17
  get_globals
18
18
  end
19
19
 
20
- def get_globals
21
- gfile = @blog.root/"views/#{name}/themes/standard/global.lt3"
20
+ def dump_globals_stderr
21
+ log!(enter: __method__, args: [list], level: 2)
22
+ list2 = list.select(&block)
23
+ STDERR.puts "-- globals = "
24
+ log!(str: "-- globals = ")
25
+ @globals.each_pair do |k, v|
26
+ msg = sprintf " %-10s %s\n", k, v if k.is_a? Symbol
27
+ STDERR.puts msg
28
+ log!(str: msg)
29
+ end
30
+ STDERR.puts
31
+ log!(str: "")
32
+ end
33
+
34
+ def get_globals(force = false)
35
+ return if @globals && !force
36
+ # gfile = @blog.root/"views/#@name/themes/standard/global.lt3"
37
+ gfile = @blog.root/"views/#@name/data/global.lt3"
22
38
  return unless File.exist?(gfile) # Hackish!! how is View.new called from create_view??
23
39
 
24
40
  live = Livetext.customize(call: ".nopara")
25
41
  live.xform_file(gfile)
42
+ live._setvar("ViewDir", @blog.root/:views/@name)
43
+ live._setvar("View", @name)
26
44
  @globals = live.vars
45
+ # dump_globals_stderr
27
46
  end
28
47
 
29
48
  def dir
@@ -8,6 +8,7 @@ require "runeblog_version"
8
8
  Gem.post_install do |spec|
9
9
  Dir.chdir(RuneBlog::Path)
10
10
  system("livetext -i liveblog.rb")
11
+ system("livetext -i code_rouge.rb")
11
12
  end
12
13
 
13
14
  spec = Gem::Specification.new do |s|
@@ -20,8 +21,9 @@ spec = Gem::Specification.new do |s|
20
21
  s.authors = ["Hal Fulton"]
21
22
  s.email = 'rubyhacker@gmail.com'
22
23
  s.executables << "blog"
23
- s.add_runtime_dependency 'livetext', '~> 0.9', '>= 0.9.04'
24
- s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.22'
24
+ s.add_runtime_dependency 'livetext', '~> 0.9', '>= 0.9.09'
25
+ s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.23'
26
+ s.add_runtime_dependency 'rouge', '~> 3.25', '>= 3.25.0'
25
27
 
26
28
  s.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.0'
27
29
 
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.3.19
4
+ version: 0.3.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-14 00:00:00.000000000 Z
11
+ date: 2020-12-07 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.9'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.9.04
22
+ version: 0.9.09
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.9'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.9.04
32
+ version: 0.9.09
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.22
42
+ version: 0.1.23
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,27 @@ dependencies:
49
49
  version: '0.1'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.1.22
52
+ version: 0.1.23
53
+ - !ruby/object:Gem::Dependency
54
+ name: rouge
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 3.25.0
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.25'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 3.25.0
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '3.25'
53
73
  - !ruby/object:Gem::Dependency
54
74
  name: minitest
55
75
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +129,7 @@ files:
109
129
  - empty_view/config/twitter/tw.html
110
130
  - empty_view/config/twitter/tw.js
111
131
  - empty_view/config/twitter/twitter.rb
132
+ - empty_view/data/GIT_IS_DUMB
112
133
  - empty_view/posts/GIT_IS_DUMB
113
134
  - empty_view/remote/assets/GIT_IS_DUMB
114
135
  - empty_view/remote/banner/navbar/GIT_IS_DUMB
@@ -137,6 +158,7 @@ files:
137
158
  - empty_view/themes/standard/etc/blog.css.lt3
138
159
  - empty_view/themes/standard/etc/externals.lt3
139
160
  - empty_view/themes/standard/etc/favicon.ico
161
+ - empty_view/themes/standard/etc/github.css
140
162
  - empty_view/themes/standard/etc/misc.js
141
163
  - empty_view/themes/standard/post/generate.lt3
142
164
  - empty_view/themes/standard/post/head.lt3
@@ -150,6 +172,7 @@ files:
150
172
  - lib/logging.rb
151
173
  - lib/lowlevel.rb
152
174
  - lib/menus.rb
175
+ - lib/newpost.rb
153
176
  - lib/pathmagic.rb
154
177
  - lib/post.rb
155
178
  - lib/processing.rb
@@ -233,8 +256,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
256
  - !ruby/object:Gem::Version
234
257
  version: '0'
235
258
  requirements: []
236
- rubygems_version: 3.0.4
237
- signing_key:
259
+ rubygems_version: 3.0.8
260
+ signing_key:
238
261
  specification_version: 4
239
262
  summary: A command-line blogging system
240
263
  test_files: []