runeblog 0.0.64 → 0.0.65

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
  SHA1:
3
- metadata.gz: 257ad84648e005ad01f71886994183bd9f98ecb5
4
- data.tar.gz: 06bfe5ebcdfdabc497bd47c9d6191c4a460f7e1f
3
+ metadata.gz: 337899305625d6e47d1651fc7f5c74cbe01d9dac
4
+ data.tar.gz: c115cf315621933d753bfdb663e7030506354df5
5
5
  SHA512:
6
- metadata.gz: 7aa6da6a32b8fe50b20c7b9ef64a28f5ff325c16a7eed7582ff08d9b116a0dd265961c00a1bd2745c8001bc07645a63ee02d01337b5766e36c6293d85933ec8e
7
- data.tar.gz: 663840e9aa0f0b4a53a885ad8b460f9a7a18ba2dfae752ae03d90acd5dc58061fb79add1ae3787f31130baa09a2d1b66d85c2aa7ec29752d69230dabc8de5c90
6
+ metadata.gz: f653637ca0fbbc59f34faf72b263546befc886a3bb10ec3569de9c4209bee45a30c7e267af30f297d5701b76e201955d48827cb87258e9695cd91012ddb348d2
7
+ data.tar.gz: f56f552eb2475dd785d00b3ec2cb16b3bfa166a5bdc46adfcbbd3d19e908d8412d6db09a5a8322b6062c3519409c79f52e3f8801fee1236072dc0cddafa9abde
data/data/VERSION CHANGED
@@ -1 +1 @@
1
- RuneBlog v 0.0.64 2018-09-21
1
+ RuneBlog v 0.0.65 2018-09-27
data/lib/repl.rb CHANGED
@@ -4,8 +4,6 @@ require 'helpers-repl' # FIXME structure
4
4
 
5
5
  module RuneBlog::REPL
6
6
 
7
- # @blog = open_blog
8
-
9
7
  def cmd_quit(arg)
10
8
  check_empty(arg)
11
9
  abort "\n "
@@ -33,8 +31,9 @@ module RuneBlog::REPL
33
31
  error(err)
34
32
  end
35
33
 
36
- def cmd_open_local
34
+ def cmd_preview(arg)
37
35
  reset_output
36
+ check_empty(arg)
38
37
  local = @blog.viewdir(@blog.view) + "/index.html"
39
38
  result = system("open #{local}")
40
39
  raise CantOpen, local unless result
@@ -77,7 +76,7 @@ module RuneBlog::REPL
77
76
  check_empty(arg)
78
77
  puts
79
78
  files = @blog.find_src_slugs
80
- files.each {|file| rebuild_post(file) }
79
+ files.each {|file| @blog.rebuild_post(file) }
81
80
  nil
82
81
  rescue => err
83
82
  error(err)
@@ -210,7 +209,7 @@ module RuneBlog::REPL
210
209
  result = system("vi #{@blog.root}/src/#{file}")
211
210
  raise "Problem editing #{file}" unless result
212
211
 
213
- rebuild_post(file)
212
+ @blog.rebuild_post(file)
214
213
  nil
215
214
  rescue => err
216
215
  error(err)
@@ -292,32 +291,4 @@ module RuneBlog::REPL
292
291
  @out
293
292
  end
294
293
 
295
- ## Funky stuff -- needs to move?
296
-
297
- # def new_blog!(arg) # FIXME weird?
298
- # check_empty(arg)
299
- # return if RuneBlog.exist?
300
- # yes = yesno(red(" No .blog found. Create new blog? "))
301
- # RuneBlog.create_new_blog if yes
302
- # rescue => err
303
- # error(err)
304
- # end
305
-
306
- # def open_blog # Crude - FIXME later
307
- # @blog = RuneBlog.new
308
- # @view = @blog.view # current view
309
- # @sequence = @blog.sequence
310
- # @root = @blog.root
311
- # @deploy ||= {}
312
- # @blog.views.each do |view|
313
- # deployment = @blog.viewdir(@view) + "deploy"
314
- # check_file_exists(deployment)
315
- # lines = File.readlines(deployment).map {|x| x.chomp }
316
- # @deploy[@view] = lines
317
- # end
318
- # @blog
319
- # rescue => err
320
- # error(err)
321
- # end
322
-
323
294
  end
data/lib/runeblog.rb CHANGED
@@ -2,19 +2,36 @@ require 'find'
2
2
  require 'yaml'
3
3
  require 'livetext'
4
4
 
5
+ def create_dir(dir) # FIXME move later
6
+ cmd = "mkdir -p #{dir} >/dev/null 2>&1"
7
+ result = system(cmd)
8
+ raise "Can't create #{dir}" unless result
9
+ end
10
+
11
+ def interpolate(str)
12
+ wrap = "<<-EOS\n#{str}\nEOS"
13
+ eval wrap
14
+ end
15
+
16
+ def error(err) # FIXME - this is duplicated
17
+ str = "\n Error: #{err}"
18
+ puts str
19
+ puts err.backtrace # [0]
20
+ end
21
+
5
22
  class RuneBlog
6
- VERSION = "0.0.64"
23
+ VERSION = "0.0.65"
7
24
 
8
25
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
9
- DefaultData = Path + "/../data"
26
+ DefaultData = Path + "/../data/views/_default"
10
27
 
11
- BlogHeaderPath = DefaultData + "/custom/blog_header.html"
12
- BlogTrailerPath = DefaultData + "/custom/blog_trailer.html"
13
- BlogTemplatePath = DefaultData + "/custom/blog_trailer.html"
28
+ BlogHeaderPath = DefaultData + "/custom/blog_header.html"
29
+ BlogTrailerPath = DefaultData + "/custom/blog_trailer.html"
30
+ PostTemplatePath = DefaultData + "/custom/post_template.html"
14
31
 
15
- BlogHeader = File.read(BlogHeaderPath) rescue "not found"
16
- BlogTrailer = File.read(BlogTrailerPath) rescue "not found"
17
- BlogTemplate = File.read(BlogTemplatePath) rescue "not found"
32
+ BlogHeader = File.read(BlogHeaderPath) rescue "not found"
33
+ BlogTrailer = File.read(BlogTrailerPath) rescue "not found"
34
+ PostTemplate = File.read(PostTemplatePath) rescue "not found"
18
35
 
19
36
  attr_reader :root, :views, :sequence
20
37
  attr_accessor :view # FIXME
@@ -68,7 +85,7 @@ class RuneBlog
68
85
 
69
86
  File.write(dir + "custom/blog_header.html", RuneBlog::BlogHeader)
70
87
  File.write(dir + "custom/blog_trailer.html", RuneBlog::BlogTrailer)
71
- File.write(dir + "custom/post_template.html", RuneBlog::BlogTemplate)
88
+ File.write(dir + "custom/post_template.html", RuneBlog::PostTemplate)
72
89
  File.write(dir + "last_deployed", "Initial creation")
73
90
  self.views << arg
74
91
  end
@@ -103,28 +120,10 @@ class RuneBlog
103
120
  end
104
121
 
105
122
  def create_new_post(title, testing = false)
106
- view = @view
107
- date = Time.now.strftime("%Y-%m-%d")
108
- @template = <<-EOS
109
- .mixin liveblog
110
-
111
- .title #{title}
112
- .pubdate #{date}
113
- .views #{view}
114
-
115
- .teaser
116
- Teaser goes here.
117
- .end
118
- Remainder of post goes here.
119
- EOS
120
-
121
- num, @slug = make_slug(title)
122
- @fname = @slug + ".lt3"
123
- File.open("#@root/src/#@fname", "w") {|f| f.puts @template }
124
- edit_initial_post(@fname) unless testing
125
- process_post(@fname) #- FIXME handle each view
126
- publish_post(@meta)
127
- num
123
+ post = RuneBlog::Post.new(title, @view)
124
+ post.edit unless testing
125
+ post.publish
126
+ post.num
128
127
  rescue => err
129
128
  puts err # error(err)
130
129
  end
@@ -152,10 +151,9 @@ EOS
152
151
  end
153
152
 
154
153
  def process_post(file)
155
- @main ||= Livetext.new
156
- @main.main.output = File.new("/tmp/WHOA","w") # FIXME srsly?
157
154
  path = @root + "/src/#{file}"
158
- @meta = @main.process_file(path, binding)
155
+ livetext = Livetext.new(STDOUT) # (nil)
156
+ @meta = livetext.process_file(path, binding)
159
157
  raise "process_file returned nil" if @meta.nil?
160
158
 
161
159
  num, slug = self.make_slug(@meta.title, self.sequence)
@@ -215,16 +213,6 @@ EOS
215
213
  self.views.each {|view| generate_index(view) }
216
214
  end
217
215
 
218
- def reload_post(file)
219
- @main ||= Livetext.new
220
- @main.main.output = File.new("/tmp/WHOA","w") # FIXME srsly?
221
- @meta = process_post(file)
222
- @meta.slug = file.sub(/.lt3$/, "")
223
- @meta
224
- rescue => err
225
- error(err)
226
- end
227
-
228
216
  def posting(view, meta)
229
217
  # FIXME clean up and generalize
230
218
  ref = "#{view}/#{meta.slug}/index.html"
@@ -238,10 +226,12 @@ EOS
238
226
  <br><br>
239
227
  <hr>
240
228
  HTML
229
+ text = File.read(self.viewdir(view) + "custom/post_template.html")
230
+ interpolate(text)
241
231
  end
242
232
 
243
233
  def rebuild_post(file)
244
- reload_post(file)
234
+ @meta = process_post(file)
245
235
  publish_post(@meta) # FIXME ??
246
236
  rescue => err
247
237
  error(err)
@@ -272,23 +262,6 @@ EOS
272
262
  dirs
273
263
  end
274
264
 
275
- def create_dir(dir)
276
- cmd = "mkdir -p #{dir} >/dev/null 2>&1"
277
- result = system(cmd)
278
- raise "Can't create #{dir}" unless result
279
- end
280
-
281
- def error(err) # FIXME - this is duplicated
282
- str = "\n Error: #{err}"
283
- puts str
284
- puts err.backtrace # [0]
285
- end
286
-
287
- def interpolate(str)
288
- wrap = "<<-EOS\n#{str}\nEOS"
289
- eval wrap
290
- end
291
-
292
265
  def find_src_slugs
293
266
  files = Dir.entries("#@root/src/").grep /\d\d\d\d.*.lt3$/
294
267
  files.map! {|f| File.basename(f) }
@@ -302,6 +275,10 @@ end
302
275
 
303
276
  class RuneBlog::Post
304
277
 
278
+ class << self
279
+ attr_accessor :blog
280
+ end
281
+
305
282
  attr_reader :id, :title, :date, :views, :num, :slug
306
283
 
307
284
  def self.files(num, root)
@@ -311,15 +288,70 @@ class RuneBlog::Post
311
288
  end
312
289
 
313
290
  def initialize(title, view)
291
+ raise "Post.blog is not set!" if RuneBlog::Post.blog.nil?
292
+ @blog = RuneBlog::Post.blog
314
293
  @title = title
315
294
  @view = view
316
295
  @num, @slug = make_slug
296
+ ##
297
+ date = Time.now.strftime("%Y-%m-%d")
298
+ template = <<-EOS.gsub(/^ */, "")
299
+ .mixin liveblog
300
+
301
+ .title #{title}
302
+ .pubdate #{date}
303
+ .views #{view}
304
+
305
+ .teaser
306
+ Teaser goes here.
307
+ .end
308
+ Remainder of post goes here.
309
+ EOS
310
+
311
+ @draft = "#{@blog.root}/src/#@slug.lt3"
312
+ File.write(@draft, template)
313
+ end
314
+
315
+ def edit
316
+ result = system("vi #@draft +8")
317
+ raise "Problem editing #@draft" unless result
318
+ nil
319
+ rescue => err
320
+ error(err)
321
+ end
322
+
323
+ def publish
324
+ livetext = Livetext.new(STDOUT)
325
+ @meta = livetext.process_file(@draft, binding)
326
+ raise "process_file returned nil" if @meta.nil?
327
+
328
+ @meta.views.each do |view| # Create dir using slug (index.html, metadata?)
329
+ vdir = @blog.viewdir(view)
330
+ dir = vdir + @slug + "/"
331
+ Dir.mkdir(dir)
332
+ Dir.chdir(dir) do
333
+ create_post_subtree(vdir)
334
+ @blog.generate_index(view)
335
+ end
336
+ end
337
+ rescue => err
338
+ p err
339
+ err.backtrace.each {|x| puts x }
340
+ # error(err)
317
341
  end
318
342
 
319
343
  private
320
344
 
345
+ def create_post_subtree(vdir)
346
+ create_dir("assets")
347
+ File.write("metadata.yaml", @meta.to_yaml)
348
+ template = File.read(vdir + "/custom/post_template.html")
349
+ text = interpolate(template)
350
+ File.write("index.html", text)
351
+ end
352
+
321
353
  def make_slug(postnum = nil)
322
- postnum ||= RuneBlog.next_sequence
354
+ postnum ||= @blog.next_sequence
323
355
  num = tag(postnum) # FIXME can do better
324
356
  slug = @title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
325
357
  [postnum, "#{num}-#{slug}"]
data/test/repl.rb CHANGED
@@ -9,6 +9,7 @@ class TestREPL < Minitest::Test
9
9
 
10
10
  def setup
11
11
  @blog = RuneBlog.new
12
+ RuneBlog::Post.blog = @blog
12
13
  end
13
14
 
14
15
  def test_001_cmd_help
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.0.64
4
+ version: 0.0.65
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-21 00:00:00.000000000 Z
11
+ date: 2018-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext