runeblog 0.3.26 → 0.3.28
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.lt3 +8 -5
- data/README.md +3 -1
- data/bin/blog +5 -3
- data/bin/blog.rb +237 -0
- data/data/global.lt3 +1 -1
- data/empty_view/config/reddit/redpost.rb +1 -6
- data/lib/helpers-blog.rb +0 -7
- data/lib/liveblog.rb +92 -91
- data/lib/lowlevel.rb +6 -5
- data/lib/menus.rb +96 -22
- data/lib/processing.rb +6 -3
- data/lib/repl.rb +18 -25
- data/lib/runeblog.rb +32 -43
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +2 -2
- data/runeblog.gemspec +1 -1
- metadata +18 -17
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" => "
|
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
|
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
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
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
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
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
|
62
|
-
attr_accessor :root,
|
63
|
-
attr_accessor :view
|
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
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
@
|
145
|
-
@view =
|
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
|
-
|
148
|
-
@post_views = []
|
149
|
-
@post_tags = []
|
148
|
+
return instance
|
150
149
|
rescue => err
|
151
|
-
puts "
|
152
|
-
|
153
|
-
|
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
|
-
#
|
548
|
-
|
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}/ }
|
data/lib/runeblog_version.rb
CHANGED
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.
|
43
|
-
live.
|
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.
|
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.
|
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:
|
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.
|
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.
|
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.
|
260
|
+
rubygems_version: 3.2.3
|
260
261
|
signing_key:
|
261
262
|
specification_version: 4
|
262
263
|
summary: A command-line blogging system
|