runeblog 0.3.26 → 0.3.28

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.
data/lib/repl.rb CHANGED
@@ -39,7 +39,7 @@ module RuneBlog::REPL
39
39
 
40
40
  def cmd_config
41
41
  hash = {"Variables (general)" => "global.lt3",
42
- " View-specific" => "../../settings/view.txt",
42
+ " View-specific" => "../settings/view.txt",
43
43
  " Recent posts" => "../../settings/recent.txt",
44
44
  " Publishing" => "../../settings/publish.txt",
45
45
  "Configuration: enable/disable" => "../../settings/features.txt",
@@ -253,7 +253,6 @@ log! str: "=== ...finished!"
253
253
  name = @blog.view.name
254
254
  k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n, wrap: true)
255
255
  return if name.nil?
256
- log! str: "cv Setting to #{name.inspect}"
257
256
  @blog.view = name
258
257
  # puts "\n ", fx(name, :bold), "\n"
259
258
  return
@@ -371,7 +370,8 @@ log! str: "cv Setting to #{name.inspect}"
371
370
 
372
371
  def cmd_list_views
373
372
  puts
374
- @blog.views.each do |v|
373
+ list = @blog.views
374
+ list.each do |v|
375
375
  v = v.to_s
376
376
  title = view2title(v)
377
377
  v = fx(v, :bold) if v == @blog.view.name
@@ -412,22 +412,16 @@ log! str: "cv Setting to #{name.inspect}"
412
412
  if curr_drafts.empty?
413
413
  puts "\n No drafts\n "
414
414
  return
415
- else
416
- puts
417
- curr_drafts.each do |draft|
418
- base = draft.sub(/.lt3$/, "")
419
- dir = @blog.root/:posts/base
420
- meta = nil
421
- Dir.chdir(dir) { meta = @blog.read_metadata }
422
- num, title = meta.num, meta.title
423
- num = '%4d' % num.to_s
424
- puts " ", fx(num, Red), " ", fx(title, Black)
425
- other = @blog._get_views(@blog.root/:drafts/draft) - [@blog.view.to_s]
426
- unless other.empty?
427
- print fx(" "*9 + "also in: ", :bold)
428
- puts other.join(", ")
429
- end
430
- end
415
+ end
416
+ puts
417
+ curr_drafts.each do |draft|
418
+ base = draft.sub(/.lt3$/, "")
419
+ dir = @blog.root/:posts/base
420
+ meta = nil
421
+ Dir.chdir(dir) { meta = @blog.read_metadata }
422
+ num, title = meta.num, meta.title
423
+ num = '%4d' % num.to_s
424
+ puts " ", fx(num, Red), " ", fx(title, Black)
431
425
  end
432
426
  puts
433
427
  end
@@ -438,12 +432,11 @@ log! str: "cv Setting to #{name.inspect}"
438
432
  if assets.empty?
439
433
  puts " No assets"
440
434
  return
441
- else
442
- puts
443
- assets.each do |name|
444
- asset = File.basename(name)
445
- puts " ", fx(asset, Blue)
446
- end
435
+ end
436
+ puts
437
+ assets.each do |name|
438
+ asset = File.basename(name)
439
+ puts " ", fx(asset, Blue)
447
440
  end
448
441
  puts
449
442
  end
data/lib/runeblog.rb CHANGED
@@ -58,9 +58,9 @@ class RuneBlog
58
58
  include ErrorChecks
59
59
  end
60
60
 
61
- attr_reader :views, :sequence
62
- attr_accessor :root, :editor, :features
63
- attr_accessor :view # overridden
61
+ attr_reader :views, :sequence
62
+ attr_accessor :root, :editor, :features
63
+ attr_accessor :view # overridden
64
64
  attr_accessor :post
65
65
 
66
66
  attr_accessor :post_views, :post_tags, :dirty_views
@@ -74,7 +74,7 @@ class RuneBlog
74
74
  teaser: "No teaser", body: "No body", tags: ["untagged"],
75
75
  views: [], back: "javascript:history.go(-1)", home: "no url")
76
76
  log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
77
- viewlist = (views + [view.to_s]).join(" ")
77
+ viewlist = (views + [view.to_s]).join(" ").uniq
78
78
  taglist = ".tags " + tags.join(" ")
79
79
 
80
80
  <<~TEXT
@@ -96,9 +96,9 @@ class RuneBlog
96
96
 
97
97
  def self.create_new_blog_repo(root_rel = ".blogs")
98
98
  log!(enter: __method__, args: [root_rel])
99
+ check_error(BlogRepoAlreadyExists) { Dir.exist?(repo_root) }
99
100
  check_nonempty_string(root_rel)
100
101
  repo_root = Dir.pwd/root_rel
101
- check_error(BlogRepoAlreadyExists) { Dir.exist?(repo_root) }
102
102
 
103
103
  create_dirs(repo_root)
104
104
  Dir.chdir(repo_root) do
@@ -110,7 +110,6 @@ class RuneBlog
110
110
  unless File.exist?(repo_root/"data/VIEW")
111
111
  copy_data(repo_root/:data)
112
112
  end
113
- # copy_data(:extra, repo_root/:config)
114
113
  write_repo_config(root: repo_root)
115
114
  # Weird. Like a singleton - dumbass circular dependency?
116
115
  self.blog = blog = self.new
@@ -128,32 +127,35 @@ class RuneBlog
128
127
  _tmp_error(err)
129
128
  end
130
129
 
131
- def initialize(root_rel = ".blogs") # always assumes existing blog
132
- log!(enter: "initialize", args: [root_rel])
133
- # Weird. Like a singleton - dumbass circular dependency?
134
- self.class.blog = self
135
-
136
- @root = Dir.pwd/root_rel
137
- # write_repo_config(root: @root) # ?? FIXME
138
- get_repo_config
139
- read_features # top level
140
- @views = retrieve_views
141
- self.view = File.read(@root/"data/VIEW").chomp
142
- md = Dir.pwd.match(%r[.*/views/(.*?)/])
143
- if md
144
- @view_name = md[1]
145
- @view = str2view(@view_name)
130
+ ################
131
+
132
+ def self.read(root_rel = ".blogs") # always assumes existing blog
133
+ log!(enter: "RuneBlog.read", args: [root_rel])
134
+ instance = RuneBlog.allocate
135
+ instance.instance_eval do
136
+ @blog = instance # Duhhh
137
+ @root = Dir.pwd/root_rel
138
+ # _init_get_view ##########??????
139
+ # self.class.blog = self # Weird, like singleton. Dumbass circular dependency?
140
+ RuneBlog.blog = instance
141
+ dirs = subdirs("#@root/views/").sort
142
+ @views = dirs.map {|name| RuneBlog::View.new(name) }
143
+ @curr = str2view(File.read(@root/"data/VIEW").chomp)
144
+ @view = @curr
145
+ # ...was init_get_view
146
+ @sequence, @post_views, @post_tags = get_sequence, [], []
146
147
  end
147
- @sequence = get_sequence
148
- @post_views = []
149
- @post_tags = []
148
+ return instance
150
149
  rescue => err
151
- puts "Error - see stdout.txt"
152
- STDERR.puts err.inspect
153
- STDERR.puts err&.backtrace
150
+ puts "ERROR - #{err.inspect}"
151
+ # puts "Error - see stderr.out"
152
+ puts err.inspect + "\n" + err&.backtrace
154
153
  sleep 3
155
154
  end
156
155
 
156
+ def initialize ##### FIXME ??
157
+ end
158
+
157
159
  def complete_file(name, vars, hash)
158
160
  debugging = vars.nil?
159
161
  return if hash.empty?
@@ -270,14 +272,6 @@ class RuneBlog
270
272
  views.any? {|x| x.name == name }
271
273
  end
272
274
 
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
280
-
281
275
  def str2view(str)
282
276
  log!(enter: __method__, args: [str], level: 3)
283
277
  check_nonempty_string(str) # redundant?
@@ -297,15 +291,12 @@ class RuneBlog
297
291
  @view = nil
298
292
  return
299
293
  end
300
- # STDERR.puts "view= #{arg.inspect}"
301
-
302
294
  case arg
303
295
  when RuneBlog::View
304
296
  @view = arg
305
297
  @view.get_globals(true)
306
298
  when String
307
299
  new_view = str2view(arg)
308
- # STDERR.puts "view= new view #{new_view.inspect}"
309
300
  check_error(NoSuchView, arg) { new_view.nil? }
310
301
  @view = new_view
311
302
  else
@@ -541,11 +532,10 @@ class RuneBlog
541
532
  next unless Dir.exist?(postdir)
542
533
  meta = nil
543
534
  Dir.chdir(postdir) { meta = read_metadata }
544
- # puts [draft, meta.views].inspect
545
535
  list << draft if meta.views.include?(self.view.to_s)
546
536
  end
547
- # list.sort
548
- curr_drafts
537
+ # curr_drafts
538
+ list.sort
549
539
  end
550
540
 
551
541
  def all_drafts
@@ -739,8 +729,7 @@ args = {cwd: pdraft, src: draft, debug: true, dst: "guts.html",
739
729
 
740
730
  def remove_post(num)
741
731
  log!(enter: __method__, args: [num], level: 1)
742
- check_integer(num)
743
- # FIXME update original draft .views
732
+ check_integer(num) # FIXME update original draft .views
744
733
  tag = prefix(num)
745
734
  files = Find.find(self.view.dir).to_a
746
735
  list = files.select {|x| File.directory?(x) and x =~ /#{tag}/ }
@@ -1,7 +1,7 @@
1
1
  if !defined?(RuneBlog::Path)
2
2
 
3
3
  class RuneBlog
4
- VERSION = "0.3.26"
4
+ VERSION = "0.3.28"
5
5
 
6
6
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
7
7
  Path = File.dirname(path)
data/lib/view.rb CHANGED
@@ -39,8 +39,8 @@ class RuneBlog::View
39
39
 
40
40
  live = Livetext.customize(call: ".nopara")
41
41
  live.xform_file(gfile)
42
- live._setvar("ViewDir", @blog.root/:views/@name)
43
- live._setvar("View", @name)
42
+ live.setvar("ViewDir", @blog.root/:views/@name)
43
+ live.setvar("View", @name)
44
44
  @globals = live.vars
45
45
  # dump_globals_stderr
46
46
  end
data/runeblog.gemspec CHANGED
@@ -21,7 +21,7 @@ spec = Gem::Specification.new do |s|
21
21
  s.authors = ["Hal Fulton"]
22
22
  s.email = 'rubyhacker@gmail.com'
23
23
  s.executables << "blog"
24
- s.add_runtime_dependency 'livetext', '~> 0.9', '>= 0.9.10'
24
+ s.add_runtime_dependency 'livetext', '~> 0.9', '>= 0.9.33'
25
25
  s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.23'
26
26
  s.add_runtime_dependency 'rouge', '~> 3.25', '>= 3.25.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.3.26
4
+ version: 0.3.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-09 00:00:00.000000000 Z
11
+ date: 2024-02-10 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.10
22
+ version: 0.9.33
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.10
32
+ version: 0.9.33
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rubytext
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -54,42 +54,42 @@ dependencies:
54
54
  name: rouge
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 3.25.0
60
57
  - - "~>"
61
58
  - !ruby/object:Gem::Version
62
59
  version: '3.25'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.25.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 3.25.0
70
67
  - - "~>"
71
68
  - !ruby/object:Gem::Version
72
69
  version: '3.25'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 3.25.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: minitest
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 5.10.0
80
77
  - - "~>"
81
78
  - !ruby/object:Gem::Version
82
79
  version: '5.10'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 5.10.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 5.10.0
90
87
  - - "~>"
91
88
  - !ruby/object:Gem::Version
92
89
  version: '5.10'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 5.10.0
93
93
  description: A blog system based on Ruby and Livetext
94
94
  email: rubyhacker@gmail.com
95
95
  executables:
@@ -101,6 +101,7 @@ files:
101
101
  - "./README.md"
102
102
  - "./runeblog.gemspec"
103
103
  - bin/blog
104
+ - bin/blog.rb
104
105
  - bin/mkwidget
105
106
  - data/EDITOR
106
107
  - data/ROOT
@@ -256,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
257
  - !ruby/object:Gem::Version
257
258
  version: '0'
258
259
  requirements: []
259
- rubygems_version: 3.0.8
260
+ rubygems_version: 3.2.3
260
261
  signing_key:
261
262
  specification_version: 4
262
263
  summary: A command-line blogging system