runeblog 0.1.80 → 0.1.85

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57d59b2120fa25efd7d1542b31200079497991ae27240e30c936701a3ac1e066
4
- data.tar.gz: 3b5c8f7bde8e3ca0c7989406ecca1edb6cc35c6b8ad1b76ea55dd25cddf15f9b
3
+ metadata.gz: cb6100ad69994f06dcb9d75dcef71d5f485f56119725efb419607c3ca5521b89
4
+ data.tar.gz: 025a5cc03d7203cd32db22c2bb283c3db7ad6aa1eb4b110ec5f1613bb5740fe9
5
5
  SHA512:
6
- metadata.gz: e1dc62eedd0bca2d772c3363fc0a8565499d4b92911fc3f418cb0b5ab1e2d9eecd44b637040fdb52f424375a13ddf94a71118d1244b9410b61b0aaeff1e98c1c
7
- data.tar.gz: 271ba003372c3562aa83f2e1bd84021a4ae333ab2d863fc2473df915d1b667f9303d0c3681ff3156da11fe6f22cf4c0e91f7e255a361b201c8e55e0d9d65c6af
6
+ metadata.gz: b89cca81ab11b4a2b7ea4694cb0f9c6f875f0691629a7eb14daa4ce3dc6b77b167db71eb5be3abc4777da3940ccc62a250d513119cebe775f6af09bea50c781d
7
+ data.tar.gz: 7b495793aeb39e03d7ca07002c66fcf309d330fe877b712ceaa524cd7e09d8da25dae2d9fcfd64ba014aa291fc177981b254fc0d5063047142b38d65741ad43c
@@ -23,6 +23,9 @@ def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_vie
23
23
  #{teaser}
24
24
  .end
25
25
  #{body}
26
+
27
+ <br>
28
+ <a href="javascript:history.go(-1)">[Back]</a>
26
29
  TEXT
27
30
 
28
31
  end
@@ -4,6 +4,20 @@ require 'runeblog_version'
4
4
 
5
5
  module RuneBlog::Helpers
6
6
 
7
+ def copy(src, dst)
8
+ system("cp #{src} #{dst}")
9
+ end
10
+
11
+ def copy!(src, dst)
12
+ system("cp -r #{src} #{dst}")
13
+ end
14
+
15
+ def livetext(src, dst)
16
+ src << ".lt3" unless src.end_with?(".lt3")
17
+ dst << ".html" unless src.end_with?(".html")
18
+ system("livetext #{src} >#{dst}")
19
+ end
20
+
7
21
  def get_root
8
22
  if $_blog
9
23
  if $_blog.root
@@ -51,6 +65,17 @@ module RuneBlog::Helpers
51
65
  vals
52
66
  end
53
67
 
68
+ def put_config(root:, view:"test_view", editor: "/bin/vim")
69
+ Dir.mkdir(root) unless Dir.exist?(root)
70
+ Dir.chdir(root) do
71
+ File.open("config", "w") do |cfg|
72
+ cfg.puts "root: #{root}"
73
+ cfg.puts "current_view: #{view}"
74
+ cfg.puts "editor: #{editor}"
75
+ end
76
+ end
77
+ end
78
+
54
79
  def write_config(obj, file)
55
80
  hash = obj.to_h
56
81
  # Dir.chdir(::Home)
@@ -72,9 +97,10 @@ module RuneBlog::Helpers
72
97
  # end
73
98
  end
74
99
 
75
- def new_dotfile(root: "./.blogs/data", current_view: "no_default", editor: "vi")
76
- raise BlogAlreadyExists if Dir.exist?(".blogs")
77
- Dir.mkdir(".blogs")
100
+ def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
101
+ # raise BlogAlreadyExists if Dir.exist?(".blogs")
102
+ # Dir.mkdir(".blogs")
103
+ root = Dir.pwd + "/" + root
78
104
  x = OpenStruct.new
79
105
  x.root, x.current_view, x.editor = root, current_view, editor
80
106
  write_config(x, ".blogs/" + RuneBlog::ConfigFile)
@@ -87,8 +113,10 @@ module RuneBlog::Helpers
87
113
  end
88
114
 
89
115
  def subdirs(dir)
116
+ STDERR.puts "== SUB dir = #{dir}"
90
117
  verify(Dir.exist?(dir) => "Directory #{dir} not found")
91
118
  dirs = Dir.entries(dir) - %w[. ..]
119
+ STDERR.puts "== SUB dirs = #{dirs.inspect}"
92
120
  dirs.reject! {|x| ! File.directory?("#@root/views/#{x}") }
93
121
  dirs
94
122
  end
@@ -114,9 +142,9 @@ module RuneBlog::Helpers
114
142
  raise CantCreateDir(dir) unless result
115
143
  end
116
144
 
117
- def interpolate(str)
145
+ def interpolate(str, binding)
118
146
  wrap = "<<-EOS\n#{str}\nEOS"
119
- eval wrap
147
+ eval wrap, binding
120
148
  end
121
149
 
122
150
  def error(err) # Hmm, this is duplicated
@@ -20,7 +20,11 @@ STDERR.reopen(errfile)
20
20
  =end
21
21
 
22
22
  def init_liveblog # FIXME - a lot of this logic sucks
23
- @blog = $_blog = RuneBlog.new(false)
23
+ here = Dir.pwd
24
+ dir = here
25
+ loop { dir = Dir.pwd; break if File.exist?("config"); Dir.chdir("..") }
26
+ Dir.chdir(here)
27
+ @blog = $_blog = RuneBlog.new(dir)
24
28
  @root = @blog.root
25
29
  @view = @blog.view
26
30
  @view_name = @blog.view.name
@@ -32,6 +36,7 @@ end
32
36
  def post
33
37
  @meta = OpenStruct.new
34
38
  @meta.num = _args[0]
39
+ _out " <!-- Post number #{@meta.num} -->\n "
35
40
  end
36
41
 
37
42
  def _view_from_cwd
@@ -235,6 +240,7 @@ def finalize
235
240
  @slug = @blog.make_slug(@meta)
236
241
  slug_dir = @slug
237
242
  @postdir = @blog.view.dir + "/posts/#{slug_dir}"
243
+ STDERR.puts "--- finalize: pwd = #{Dir.pwd} postdir = #@postdir"
238
244
  write_post
239
245
  @meta
240
246
  end
@@ -272,17 +278,18 @@ end
272
278
  ###### experimental...
273
279
 
274
280
  class Livetext::Functions
275
-
276
281
  def _var(name)
277
282
  ::Livetext::Vars[name] || "[:#{name} is undefined]"
278
283
  end
279
284
 
280
-
281
285
  def link
282
286
  file, cdata = self.class.param.split("||", 2)
283
287
  %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}#{file}" title="#{_var(:title)}">]
284
288
  end
289
+ end
285
290
 
291
+ def _var(name) # FIXME scope issue!
292
+ ::Livetext::Vars[name] || "[:#{name} is undefined]"
286
293
  end
287
294
 
288
295
  def head
@@ -299,7 +306,7 @@ def head
299
306
  "linkc" => %[<link rel="canonical" href="#{_var(:host)}">],
300
307
  "og:url" => %[<meta property="og:url" content="#{_var(:host)}">],
301
308
  "og:site_name" => %[<meta property="og:site_name" content="#{_var(:title)}">],
302
- "style" => %[<link rel="stylesheet" href="blog-application.css">],
309
+ "style" => %[<link rel="stylesheet" href="assets/blog.css">],
303
310
  "feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var(:title)}">],
304
311
  "favicon" => %[<link rel="shortcut icon" type="image/x-icon" href="../assets/favicon.ico">\n <link rel="apple-touch-icon" href="../assets/favicon.ico">]
305
312
  }
@@ -324,7 +331,7 @@ def head
324
331
  end
325
332
  end
326
333
  hash = defaults.dup.update(result) # FIXME collisions?
327
- _out "<html lang=en_US>"
334
+ # _out "<html lang=en_US>"
328
335
  _out "<head>"
329
336
  hash.each_value {|x| _out " " + x }
330
337
  _out "</head>"
@@ -401,6 +408,7 @@ def script
401
408
  _out %[<script src="#{url}" integrity="#{integ}" crossorigin="#{cross}"></script>]
402
409
  end
403
410
 
411
+
404
412
  ### How this next bit works:
405
413
  ###
406
414
  ### all_teasers will call _find_recent_posts
@@ -438,7 +446,7 @@ def all_teasers
438
446
 
439
447
  text = <<-HTML
440
448
  <html>
441
- <head><link rel="stylesheet" href="blog-application.css"></head>
449
+ <head><link rel="stylesheet" href="assets/blog.css"></head>
442
450
  <body>
443
451
  HTML
444
452
  posts = _find_recent_posts
@@ -490,6 +498,7 @@ def _teaser(slug)
490
498
  text
491
499
  end
492
500
 
501
+
493
502
  def card_iframe
494
503
  title = _data
495
504
  lines = _body
@@ -139,6 +139,7 @@ end
139
139
  class RuneBlog::ViewPost
140
140
  attr_reader :path, :nslug, :aslug, :title, :date,
141
141
  :teaser_text
142
+
142
143
  def initialize(view, postdir)
143
144
  # Assumes already parsed/processed
144
145
  @blog = RuneBlog.blog || raise(NoBlogAccessor)
@@ -153,5 +154,18 @@ class RuneBlog::ViewPost
153
154
  @title = lines.grep(/title:/).first[7..-1].chomp
154
155
  @date = lines.grep(/pubdate:/).first[9..-1].chomp
155
156
  end
157
+
158
+ def get_dirs
159
+ fname = File.basename(draft)
160
+ noext = fname.sub(/.lt3$/, "")
161
+ vdir = "#@root/views/#{view}"
162
+ dir = "#{vdir}/posts/#{noext}/"
163
+ Dir.mkdir(dir) unless Dir.exist?(dir)
164
+ system("cp #{draft} #{dir}")
165
+ viewdir, slugdir, aslug = vdir, dir, noext[5..-1]
166
+ theme = viewdir + "/themes/standard"
167
+ [noext, viewdir, slugdir, aslug, theme]
168
+ end
169
+
156
170
  end
157
171
 
@@ -1,4 +1,5 @@
1
- require 'livetext'
1
+ require 'date'
2
+ # require 'livetext'
2
3
 
3
4
  require 'runeblog_version'
4
5
  require 'global'
@@ -14,7 +15,7 @@ class RuneBlog
14
15
 
15
16
  DotDir = ".blogs"
16
17
  ConfigFile = "config"
17
- GemData = RuneBlog::Path + "/../data"
18
+ GemData = RuneBlog::Path + "/../themes"
18
19
 
19
20
  make_exception(:FileNotFound, "File $1 was not found")
20
21
  make_exception(:BlogRepoAlreadyExists, "Blog repo $1 already exists")
@@ -24,7 +25,7 @@ class RuneBlog
24
25
  make_exception(:CantCreateDir, "Can't create directory $1")
25
26
  make_exception(:EditorProblem, "Could not edit $1")
26
27
  make_exception(:NoSuchView, "No such view: $1")
27
- make_exception(:LivetextError, "Livetext#process_file returned nil for $1")
28
+ # make_exception(:LivetextError, "Livetext#process_file returned nil for $1")
28
29
  make_exception(:NoBlogAccessor, "Runeblog.blog is not set")
29
30
 
30
31
 
@@ -40,40 +41,54 @@ class RuneBlog
40
41
 
41
42
  include Helpers
42
43
 
43
- def self.create_new_blog_repo(first_view, dir = ".blogs/data")
44
+ def self.create_new_blog_repo(dir = ".blogs")
44
45
  raise ArgumentError unless dir.is_a?(String) && ! dir.empty?
45
46
  root_dir = Dir.pwd + "/" + dir
46
- raise BlogRepoAlreadyExists if Dir.exist?(root_dir)
47
- new_dotfile(root: root_dir, current_view: first_view)
48
- create_dir(dir)
49
- Dir.chdir(dir) do
47
+ self.create(dir)
48
+ rescue => err
49
+ puts "Can't create blog repo: '#{dir}' - #{err}"
50
+ puts err.backtrace.join("\n")
51
+ end
52
+
53
+ def self.create(root = ".blogs")
54
+ # Crude - FIXME later - # What views are there? Publishing, etc.
55
+ self.blog = self # Weird. Like a singleton - dumbass circular dependency?
56
+ $_blog = self # Dumber still?
57
+ root = Dir.pwd + "/" + root
58
+ raise BlogRepoAlreadyExists if Dir.exist?(root)
59
+ create_dir(root)
60
+ Dir.chdir(root) do
50
61
  create_dir("drafts")
51
62
  create_dir("views")
52
63
  #? create_dir("assets")
53
64
  new_sequence
54
65
  end
55
- blog = self.new
56
- blog.create_view(first_view)
57
- rescue => err
58
- puts "Can't create blog repo: '#{dir}' - #{err}"
59
- puts err.backtrace.join("\n")
66
+ put_config(root: root)
67
+ @blog = self.new(root)
68
+ @blog.create_view("test_view")
69
+ @blog
60
70
  end
61
71
 
62
- def initialize(top = true) # at top? always assumes existing blog
72
+ def self.open(root = ".blogs")
73
+ # Crude - FIXME later - # What views are there? Publishing, etc.
74
+ self.blog = self # Weird. Like a singleton - dumbass circular dependency?
75
+ $_blog = self # Dumber still?
76
+ root = Dir.pwd + "/" + root
77
+ blog = self.new(root)
78
+ end
79
+
80
+ def initialize(root_dir = ".blogs") # always assumes existing blog
63
81
  # Crude - FIXME later - # What views are there? Publishing, etc.
64
82
  self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
65
83
  $_blog = self # Dumber still?
66
- dir = ""
67
- unless top
68
- md = Dir.pwd.match(%r[.*.blogs])
69
- dir = md[0]
70
- end
71
- file = dir.empty? ? ConfigFile : dir + "/" + ConfigFile
84
+
85
+ @root = root_dir
86
+ file = @root + "/" + ConfigFile
87
+ STDERR.puts "--- init: file = #{file}"
72
88
  errmsg = "No config file! file = #{file.inspect} dir = #{Dir.pwd}"
73
89
  raise errmsg unless File.exist?(file)
74
- # Hmm. current_view doesn't belong?
75
- @root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
76
90
 
91
+ @root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
77
92
  md = Dir.pwd.match(%r[.*/views/(.*?)/])
78
93
  @view_name = md[1] if md
79
94
  @views = get_views
@@ -169,8 +184,14 @@ class RuneBlog
169
184
  create_dir('assets')
170
185
  create_dir('posts')
171
186
 
187
+ create_dir('staging')
188
+ create_dir('staging/assets')
189
+ create_dir('remote')
190
+ create_dir('remote/assets')
191
+
172
192
  Dir.chdir("themes") { system("tar zxvf #{GemData}/standard.tgz >/dev/null 2>&1") }
173
- # system("cp themes/standard/blog/assets/* assets/")
193
+ copy!("themes/standard/*", "staging/")
194
+ copy("themes/standard/assets/*", "remote/assets/")
174
195
 
175
196
  pub = "user: xxx\nserver: xxx\ndocroot: xxx\npath: xxx\nproto: xxx\n"
176
197
  dump(pub, "publish")
@@ -210,6 +231,71 @@ class RuneBlog
210
231
  result
211
232
  end
212
233
 
234
+ def post_lookup(postid) # side-effect?
235
+ # .. = templates, ../.. = views/thisview
236
+ slug = title = date = teaser_text = nil
237
+
238
+ dir_posts = @vdir + "/posts"
239
+ posts = Dir.entries(dir_posts).grep(/^\d\d\d\d/).map {|x| dir_posts + "/" + x }
240
+ posts.select! {|x| File.directory?(x) }
241
+
242
+ post = posts.select {|x| File.basename(x).to_i == postid }
243
+ raise "Error: More than one post #{postid}" if post.size > 1
244
+ postdir = post.first
245
+ vp = RuneBlog::ViewPost.new(self.view, postdir)
246
+ vp
247
+ end
248
+
249
+ def teaser(slug)
250
+ id = slug.to_i
251
+ text = nil
252
+ post_entry_name = @theme + "/blog-_postentry.lt3"
253
+ @_post_entry ||= File.read(post_entry_name)
254
+ vp = post_lookup(id)
255
+ nslug, aslug, title, date, teaser_text =
256
+ vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
257
+ path = vp.path
258
+ # url = "#{path}/#{aslug}.html" # Should be relative to .blogs!! FIXME
259
+ url = "#{aslug}.html" # Should be relative to .blogs!! FIXME
260
+ date = ::Date.parse(date)
261
+ date = date.strftime("%B %e<br>%Y")
262
+ text = interpolate(@_post_entry, binding)
263
+ text
264
+ end
265
+
266
+ def collect_recent_posts(file)
267
+ @vdir = ".."
268
+ posts = nil
269
+ dir_posts = @vdir + "/posts"
270
+ entries = Dir.entries(dir_posts)
271
+ posts = entries.grep(/^\d\d\d\d/).map {|x| dir_posts + "/" + x }
272
+ posts.select! {|x| File.directory?(x) }
273
+ # directories that start with four digits
274
+ posts = posts.sort {|a, b| b.to_i <=> a.to_i } # sort descending
275
+ posts = posts[0..19] # return 20 at most
276
+ text = <<-HTML
277
+ <html>
278
+ <head><link rel="stylesheet" href="assets/blog.css"></head>
279
+ <body>
280
+ HTML
281
+ # posts = _find_recent_posts
282
+ wanted = [5, posts.size].min # estimate how many we want?
283
+ enum = posts.each
284
+ wanted.times do
285
+ postid = File.basename(enum.next)
286
+ postid = postid.to_i
287
+ text << teaser(postid) # side effect! calls _out
288
+ end
289
+ text << "</body></html>"
290
+ File.write(file, text) # FIXME ???
291
+ iframe_text = <<-HTML
292
+ <iframe style="width: 100vw;height: 100vh;position: relative;"
293
+ src='recent.html' width=100% frameborder="0" allowfullscreen>
294
+ </iframe>
295
+ HTML
296
+ # _out iframe_text # FIXME ??
297
+ end
298
+
213
299
  def create_new_post(title, testing = false, teaser: nil, body: nil, other_views: [])
214
300
  save = Dir.pwd
215
301
  Dir.chdir(self.view.dir)
@@ -276,6 +362,8 @@ class RuneBlog
276
362
  raise "No .views call!" if view_line.size < 1
277
363
  view_line = view_line.first
278
364
  views = view_line[7..-1].split
365
+ STDERR.puts "--- gv: #{views.inspect}"
366
+ views
279
367
  end
280
368
 
281
369
  # Remember: A post in multiple views will trigger multiple
@@ -309,25 +397,27 @@ class RuneBlog
309
397
  def generate_post(draft)
310
398
  views = _get_views(draft)
311
399
  views.each do |view|
312
- noext, viewdir, slugdir, aslug, theme = _copy_get_dirs(draft, view)
400
+ noext, viewdir, slugdir, aslug, @theme = _copy_get_dirs(draft, view)
401
+ staging = viewdir + "/staging"
313
402
  Dir.chdir(slugdir) do
314
- html = noext[5..-1] + ".html"
315
- system("livetext #{draft} >#{html}")
316
-
317
- Dir.mkdir("sidebar") unless Dir.exist?("sidebar")
318
- system("cp #{theme}/sidebar/*.lt3 ./sidebar/")
319
- files = ["blog-generate.lt3", "blog-index.lt3", "global.lt3", "blog-head.lt3",
320
- "meta.lt3", "navbar.lt3", "blog-application.css"]
321
- files2 = files.map {|x| theme + "/" + x }
322
- files2.each do |f|
323
- system("cp #{f} .")
403
+ copy(draft, ".")
404
+ lt3 = draft.split("/")[-1]
405
+ # Remember: Some posts may be in more than one view -- careful with links back
406
+ # system("livetext #{draft} >staging/#{name}/index.html") # permalink?
407
+ # Structure is borked?
408
+ copy!("#{@theme}/*", "#{staging}")
409
+ copy(lt3, staging)
410
+ html = noext[5..-1]
411
+ Dir.chdir(staging) do
412
+ STDERR.puts "--- gp: pwd = #{Dir.pwd} draft = #{draft} html = #{html}"
413
+ livetext draft, html
414
+ # link to POST??
415
+ copy html, "../remote"
416
+ collect_recent_posts("recent.html")
417
+ copy("recent.html", "../remote")
418
+ livetext "blog-generate", "../remote/index"
324
419
  end
325
-
326
- # system("livetext blog-generate.lt3 >bgen.html")
327
- # files.each {|fname| system("rm ./#{fname}") }
328
- # system("rm -rf ./sidebar/")
329
420
  end
330
- # create framed pure slug (where?)
331
421
  end
332
422
  end
333
423
 
@@ -2,7 +2,7 @@
2
2
  if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
3
3
 
4
4
  class RuneBlog
5
- VERSION = "0.1.80"
5
+ VERSION = "0.1.85"
6
6
 
7
7
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
8
8
  end
@@ -25,7 +25,7 @@ class RuneBlog::View
25
25
  end
26
26
 
27
27
  def local_index
28
- dir + "/generated/index.html"
28
+ dir + "/remote/index.html"
29
29
  end
30
30
 
31
31
  def index
@@ -39,7 +39,7 @@ class RuneBlog::View
39
39
  def publishable_files
40
40
  vdir = dir()
41
41
  files = [local_index()]
42
- others = Dir.entries(vdir + "/generated").grep(/^\d\d\d\d/).map {|x| "#{vdir}/generated/#{x}" }
42
+ others = Dir.entries(vdir + "/remote").grep(/^\d\d\d\d/).map {|x| "#{vdir}/remote/#{x}" }
43
43
  abort "FIXME... publishable_files"
44
44
  deep_assets = Dir["#{vdir}/themes/standard/assets/*"]
45
45
  deep_assets.each do |file| # Do this at view creation
@@ -27,11 +27,7 @@ spec = Gem::Specification.new do |s|
27
27
  main = Find.find("bin").to_a +
28
28
  Find.find("lib").to_a
29
29
 
30
- Dir.chdir("data") do
31
- system("tar zcvf standard.tgz standard/ >/dev/null 2>&1")
32
- end
33
-
34
- std_theme = ["data/standard.tgz"]
30
+ std_theme = ["themes/standard.tgz"]
35
31
 
36
32
  misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
37
33
  test = Find.find("test").to_a
@@ -19,7 +19,8 @@ def debug(str)
19
19
  end
20
20
 
21
21
  def make_post(x, title, teaser, body, views=[])
22
- STDERR.puts "\n========= make_post '#{title}'"
22
+ # STDERR.puts "\n========= make_post '#{title}'"
23
+ print "."
23
24
  meta = OpenStruct.new
24
25
  num = x.create_new_post(title, true, teaser: teaser, body: body, other_views: views)
25
26
  num
@@ -32,15 +33,19 @@ def show_lines(text)
32
33
  str
33
34
  end
34
35
 
36
+
37
+
38
+ puts
39
+
35
40
  system("rm -rf .blogs")
36
- RuneBlog.create_new_blog_repo('test_view', ".blogs/data")
37
- x = RuneBlog.new
41
+ RuneBlog.create_new_blog_repo(".blogs")
42
+ x = RuneBlog.new(".blogs")
38
43
 
39
44
  x.create_view("around_austin") # FIXME remember view title!
40
45
 
41
46
  # Hack:
42
47
  if File.exist?("publish")
43
- system("cp publish .blogs/data/views/around_austin/publish")
48
+ system("cp publish .blogs/views/around_austin/publish")
44
49
  end
45
50
 
46
51
  x.create_view("computing")
@@ -61,36 +66,36 @@ EXCERPT
61
66
  Now, depending on what you consider "major," blah blah blah...
62
67
  BODY
63
68
 
64
- # x.change_view("computing") # 3 5 6
65
- #
66
- # make_post(x, "Elixir Conf coming up...", <<-EXCERPT, <<-BODY)
67
- # The next Elixir Conf is always coming up.
68
- # EXCERPT
69
- # I mean, unless the previous one was the last one ever, which I don't expect to
70
- # happen for a couple of decades.
71
- # BODY
72
- #
73
- # x.change_view("music") # 4 10
74
- #
75
- # make_post(x, "Does indie still matter?", <<-EXCERPT, <<-BODY)
76
- # Indie msic blah blah blah blah....
77
- # EXCERPT
78
- # And more about indie music.
79
- # BODY
80
- #
81
- # x.change_view("computing")
82
- #
83
- # make_post(x, "The genius of Scenic", <<-EXCERPT, <<-BODY)
84
- # Boyd Multerer is a genius.
85
- # EXCERPT
86
- # And so is Scenic.
87
- # BODY
88
- #
89
- # make_post(x, "The future of coding", <<-EXCERPT, <<-BODY)
90
- # Someday you can forget your text editor entirely.
91
- # EXCERPT
92
- # But that day hasn't come yet.
93
- # BODY
69
+ x.change_view("computing") # 3 5 6
70
+
71
+ make_post(x, "Elixir Conf coming up...", <<-EXCERPT, <<-BODY)
72
+ The next Elixir Conf is always coming up.
73
+ EXCERPT
74
+ I mean, unless the previous one was the last one ever, which I don't expect to
75
+ happen for a couple of decades.
76
+ BODY
77
+
78
+ x.change_view("music") # 4 10
79
+
80
+ make_post(x, "Does indie still matter?", <<-EXCERPT, <<-BODY)
81
+ Indie msic blah blah blah blah....
82
+ EXCERPT
83
+ And more about indie music.
84
+ BODY
85
+
86
+ x.change_view("computing")
87
+
88
+ make_post(x, "The genius of Scenic", <<-EXCERPT, <<-BODY)
89
+ Boyd Multerer is a genius.
90
+ EXCERPT
91
+ And so is Scenic.
92
+ BODY
93
+
94
+ make_post(x, "The future of coding", <<-EXCERPT, <<-BODY)
95
+ Someday you can forget your text editor entirely.
96
+ EXCERPT
97
+ But that day hasn't come yet.
98
+ BODY
94
99
 
95
100
  x.change_view("around_austin")
96
101
 
@@ -124,3 +129,4 @@ BODY
124
129
 
125
130
  x.change_view("around_austin")
126
131
 
132
+ puts
Binary file
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.1.80
4
+ version: 0.1.85
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-08-21 00:00:00.000000000 Z
11
+ date: 2019-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext
@@ -61,7 +61,6 @@ files:
61
61
  - "./README.md"
62
62
  - "./runeblog.gemspec"
63
63
  - bin/blog
64
- - data/standard.tgz
65
64
  - lib/Javascript.stuff
66
65
  - lib/default.rb
67
66
  - lib/global.rb
@@ -78,6 +77,7 @@ files:
78
77
  - test/general_test.rb
79
78
  - test/make_blog.rb
80
79
  - test/test
80
+ - themes/standard.tgz
81
81
  homepage: https://github.com/Hal9000/runeblog
82
82
  licenses:
83
83
  - Ruby
Binary file