runeblog 0.1.84 → 0.1.90

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
  SHA256:
3
- metadata.gz: b18c3d8c6c7a36be892a6ad4f5d1343839da39d8a151ac2a9600cb29389a855d
4
- data.tar.gz: e18259284be9484e35e800c60ee531b4678ea9ad9c1ce85994d36362d92d7f66
3
+ metadata.gz: 9687bddcc20a39a654a99603151b884aac19cd4e6eded49c8353168fa38f388d
4
+ data.tar.gz: 61fdab92aa959e73840ae5021864fe700642ddc705c9ca118b6ce318c5e3876a
5
5
  SHA512:
6
- metadata.gz: 19bcba26366d495a4c879f79b5fcc0b068cbca46f1a40e1f2959864bd7ed9b9d5a5c80cf07d5aeeb0fde5d72ce146d63b6aff99df81d5e1b62b5a8689357da91
7
- data.tar.gz: 947861e8132ac5fa801398e81fed3e0fad60d1a10f210478e8a248583e57a40b6000b7b7940cfc56fadd11d73c2328f21bca137168a81b96d1855ca4a8ecf519
6
+ metadata.gz: 9dca839400cbae673b05ec03128c15cbab360ff445e56de78d51aac4a1441e139fd3f13357bf13c75500bd0cad6010d9b3276262ae9011c08bd2d15787e4285b
7
+ data.tar.gz: 237b98bcdbc8d784a64668db6e7ff6488531f36d2f23f94847ba8fdccb9564473f133c3bdabbd7f868a5b2c626fb9c65046e9d251890851aad12e6aef9f50abe
@@ -65,6 +65,17 @@ module RuneBlog::Helpers
65
65
  vals
66
66
  end
67
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
+
68
79
  def write_config(obj, file)
69
80
  hash = obj.to_h
70
81
  # Dir.chdir(::Home)
@@ -86,9 +97,10 @@ module RuneBlog::Helpers
86
97
  # end
87
98
  end
88
99
 
89
- def new_dotfile(root: "./.blogs/data", current_view: "no_default", editor: "vi")
90
- raise BlogAlreadyExists if Dir.exist?(".blogs")
91
- 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
92
104
  x = OpenStruct.new
93
105
  x.root, x.current_view, x.editor = root, current_view, editor
94
106
  write_config(x, ".blogs/" + RuneBlog::ConfigFile)
@@ -8,19 +8,21 @@ require 'runeblog'
8
8
  errfile = File.new("liveblog.out", "w")
9
9
  STDERR.reopen(errfile)
10
10
 
11
- =begin
12
- 123:def title # side-effect
13
- 133:def pubdate # side-effect
14
- 153:def tags # side-effect
15
- 160:def views # side-effect
16
- 167:def pin # side-effect
17
- 218:def write_post # side-effect
18
- 393:def main # side-effect
19
- 491:def _post_lookup(postid) # side-effect
20
- =end
11
+ # def title # side-effect
12
+ # def pubdate # side-effect
13
+ # def tags # side-effect
14
+ # def views # side-effect
15
+ # def pin # side-effect
16
+ # def write_post # side-effect
17
+ # def main # side-effect
18
+ # def _post_lookup(postid) # side-effect
21
19
 
22
20
  def init_liveblog # FIXME - a lot of this logic sucks
23
- @blog = $_blog = RuneBlog.new(false)
21
+ here = Dir.pwd
22
+ dir = here
23
+ loop { dir = Dir.pwd; break if File.exist?("config"); Dir.chdir("..") }
24
+ Dir.chdir(here)
25
+ @blog = $_blog = RuneBlog.new(dir)
24
26
  @root = @blog.root
25
27
  @view = @blog.view
26
28
  @view_name = @blog.view.name
@@ -220,7 +222,6 @@ def teaser
220
222
  raise "'post' was not called" unless @meta
221
223
  @meta.teaser = _body_text
222
224
  _out @meta.teaser + "\n"
223
- STDERR.puts "TEASER cwd = #{Dir.pwd}"
224
225
  # FIXME
225
226
  end
226
227
 
@@ -236,6 +237,7 @@ def finalize
236
237
  @slug = @blog.make_slug(@meta)
237
238
  slug_dir = @slug
238
239
  @postdir = @blog.view.dir + "/posts/#{slug_dir}"
240
+ STDERR.puts "--- finalize: pwd = #{Dir.pwd} postdir = #@postdir"
239
241
  write_post
240
242
  @meta
241
243
  end
@@ -288,6 +290,12 @@ def _var(name) # FIXME scope issue!
288
290
  end
289
291
 
290
292
  def head
293
+ _out "<head>"
294
+ args = _args
295
+ args.each do |inc|
296
+ self.data = inc
297
+ _include
298
+ end
291
299
  # Depends on vars: title, desc, host
292
300
  defaults = {}
293
301
  defaults = { "charset" => %[<meta charset="utf-8">],
@@ -313,7 +321,7 @@ def head
313
321
  case word
314
322
  when "viewport"
315
323
  result["viewport"] = %[<meta name="viewport" content="#{remain}">]
316
- when "script"
324
+ when "script" # FIXME this is broken
317
325
  file = remain
318
326
  text = File.read(file)
319
327
  result["script"] = Livetext.new.transform(text)
@@ -327,7 +335,6 @@ def head
327
335
  end
328
336
  hash = defaults.dup.update(result) # FIXME collisions?
329
337
  # _out "<html lang=en_US>"
330
- _out "<head>"
331
338
  hash.each_value {|x| _out " " + x }
332
339
  _out "</head>"
333
340
  _out "<body>"
@@ -357,7 +364,6 @@ end
357
364
  def main # side-effect
358
365
  _out %[<div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">]
359
366
  which = _args[0]
360
- STDERR.puts "--- inside #main: which = #{which.inspect}"
361
367
  case which
362
368
  when "recent_posts"
363
369
  all_teasers
@@ -377,7 +383,7 @@ def sidebar
377
383
  _out %[</div>]
378
384
  end
379
385
 
380
- def sidebar2
386
+ def sidebar!
381
387
  _out %[<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">]
382
388
  _args do |line|
383
389
  tag = line.chomp.strip
@@ -480,7 +486,7 @@ end
480
486
  def _teaser(slug)
481
487
  id = slug.to_i
482
488
  text = nil
483
- post_entry_name = @theme + "blog-_postentry.lt3"
489
+ post_entry_name = @theme + "blog/post_entry.lt3"
484
490
  @_post_entry ||= File.read(post_entry_name)
485
491
  vp = _post_lookup(id)
486
492
  nslug, aslug, title, date, teaser_text =
@@ -493,50 +499,57 @@ def _teaser(slug)
493
499
  text
494
500
  end
495
501
 
502
+ def _card_generic(card_title:, middle:, extra: "")
503
+ front = <<-HTML
504
+ <div class="card #{extra} mb-3">
505
+ <div class="card-body">
506
+ <h5 class="card-title">#{card_title}</h5>
507
+ HTML
508
+
509
+ tail = <<-HTML
510
+ </div>
511
+ </div>
512
+ HTML
513
+ text = front + middle + tail
514
+ _out text + "\n "
515
+ end
496
516
 
497
517
  def card_iframe
498
- title = _data
499
- lines = _body
518
+ title, lines = _data, _body
519
+ lines.map!(&:chomp)
500
520
  url = lines[0].chomp
501
521
  stuff = lines[1..-1].join(" ") # FIXME later
502
- text = <<-HTML
503
- <div class="card mb-3">
504
- <div class="card-body">
505
- <h5 class="card-title">#{title}</h5>
506
- <iframe src="#{url}" #{stuff}
507
- style="border: 0" height="350"
508
- frameborder="0" scrolling="no">
509
- </iframe>
510
- </div>
511
- </div>
522
+ middle = <<-HTML
523
+ <iframe src="#{url}" #{stuff}
524
+ style="border: 0" height="350"
525
+ frameborder="0" scrolling="no">
526
+ </iframe>
512
527
  HTML
513
- _out text
514
- rescue
515
- puts @live.body
528
+
529
+ _card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
530
+
516
531
  end
517
532
 
518
533
  def card1
519
- card_title = _data
520
- lines = _body
534
+ title, lines = _data, _body
521
535
  lines.map!(&:chomp)
536
+
522
537
  card_text = lines[0]
523
538
  url, target, classname, cdata = lines[1].split(",", 4)
524
- text = <<-HTML
525
- <div class="card bg-dark text-white mb-3">
526
- <div class="card-body">
527
- <h5 class="card-title">#{card_title}</h5>
528
- <p class="card-text">#{card_text}</p>
529
- <a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>
530
- </div>
531
- </div>
539
+
540
+ middle = <<-HTML
541
+ <p class="card-text">#{card_text}</p>
542
+ <a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>
532
543
  HTML
533
- _out text + "\n "
534
- rescue
535
- puts @live.body
544
+
545
+ _card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
536
546
  end
537
547
 
538
548
  def card2
539
549
  card_title = _data
550
+
551
+ # FIXME is this wrong??
552
+
540
553
  open = <<-HTML
541
554
  <div class="card mb-3">
542
555
  <div class="card-body">
@@ -105,40 +105,18 @@ class RuneBlog::Post
105
105
  error(err)
106
106
  end
107
107
 
108
- def build # THIS CODE WILL GO AWAY
108
+ def build
109
109
  post = self
110
110
  views = post.meta.views
111
111
  text = File.read(@draft)
112
-
113
- @blog.generate_post(@draft)
114
- return
115
-
116
- STDERR.puts "-- Post#build starts in #{Dir.pwd} ..."
117
-
118
- @meta.views.each do |view_name|
119
- # Create dir using slug (index.html, metadata?)
120
- dir = "#{@blog.root}/views/#{view_name}/posts/"
121
- pdir = dir + meta.slug + "/"
122
- create_dir(pdir) unless Dir.exist?(pdir)
123
- Dir.chdir(pdir) do
124
- title_name = pdir + (meta.slug + ".lt3").sub(/^\d{4}-/, "")
125
- dump(text, title_name)
126
- cmd = "livetext #{title_name} >#{title_name.sub(/.lt3$/, ".html")}"
127
- STDERR.puts "--- In #{pdir}"
128
- STDERR.puts "--- cmd = #{cmd}\n "
129
- system(cmd)
130
- end
131
- end
132
- @meta
133
- rescue => err
134
- p err
135
- puts err.backtrace.join("\n")
112
+ @blog.generate_post(@draft)
136
113
  end
137
114
  end
138
115
 
139
116
  class RuneBlog::ViewPost
140
117
  attr_reader :path, :nslug, :aslug, :title, :date,
141
118
  :teaser_text
119
+
142
120
  def initialize(view, postdir)
143
121
  # Assumes already parsed/processed
144
122
  @blog = RuneBlog.blog || raise(NoBlogAccessor)
@@ -233,7 +233,6 @@ module RuneBlog::REPL
233
233
  # Simplify this
234
234
  tag = "#{'%04d' % id}"
235
235
  files = Find.find(@blog.root+"/drafts").to_a
236
- p files
237
236
  files = files.grep(/#{tag}-.*lt3/)
238
237
  files = files.map {|f| File.basename(f) }
239
238
  if files.size > 1
@@ -252,27 +251,7 @@ p files
252
251
  file = files.first
253
252
  draft = "#{@blog.root}/drafts/#{file}"
254
253
  result = edit_file(draft)
255
-
256
- STDERR.puts "Calling gp: pwd = #{Dir.pwd} draft = #{draft}"
257
- puts
258
-
259
254
  @blog.generate_post(draft)
260
- return
261
-
262
- # NEW code...
263
- view = @blog.view
264
- # livetext source > naked post 9999-slug (dir?)
265
- draft = @blog.root + "/drafts/#{file}"
266
- # theme = "#{@blog.view.dir}/themes/standard"
267
- # src = "#{theme}/post-index.lt3"
268
-
269
- system("cp #{draft} #{src}") # terms are confusing
270
- file2 = file.sub(/.lt3$/, ".html")
271
- Dir.chdir(theme) do
272
- system("livetext index.lt3 >#{file2}")
273
- end
274
- # @blog.rebuild_post(file)
275
- @out
276
255
  end
277
256
 
278
257
  def cmd_list_views(arg, testing = false)
@@ -1,5 +1,4 @@
1
1
  require 'date'
2
- # require 'livetext'
3
2
 
4
3
  require 'runeblog_version'
5
4
  require 'global'
@@ -15,7 +14,7 @@ class RuneBlog
15
14
 
16
15
  DotDir = ".blogs"
17
16
  ConfigFile = "config"
18
- GemData = RuneBlog::Path + "/../themes"
17
+ Themes = RuneBlog::Path + "/../themes"
19
18
 
20
19
  make_exception(:FileNotFound, "File $1 was not found")
21
20
  make_exception(:BlogRepoAlreadyExists, "Blog repo $1 already exists")
@@ -25,7 +24,6 @@ class RuneBlog
25
24
  make_exception(:CantCreateDir, "Can't create directory $1")
26
25
  make_exception(:EditorProblem, "Could not edit $1")
27
26
  make_exception(:NoSuchView, "No such view: $1")
28
- # make_exception(:LivetextError, "Livetext#process_file returned nil for $1")
29
27
  make_exception(:NoBlogAccessor, "Runeblog.blog is not set")
30
28
 
31
29
 
@@ -41,40 +39,53 @@ class RuneBlog
41
39
 
42
40
  include Helpers
43
41
 
44
- def self.create_new_blog_repo(first_view, dir = ".blogs/data")
42
+ def self.create_new_blog_repo(dir = ".blogs")
45
43
  raise ArgumentError unless dir.is_a?(String) && ! dir.empty?
46
44
  root_dir = Dir.pwd + "/" + dir
47
- raise BlogRepoAlreadyExists if Dir.exist?(root_dir)
48
- new_dotfile(root: root_dir, current_view: first_view)
49
- create_dir(dir)
50
- Dir.chdir(dir) do
45
+ self.create(dir)
46
+ rescue => err
47
+ puts "Can't create blog repo: '#{dir}' - #{err}"
48
+ puts err.backtrace.join("\n")
49
+ end
50
+
51
+ def self.create(root = ".blogs")
52
+ # Crude - FIXME later - # What views are there? Publishing, etc.
53
+ self.blog = self # Weird. Like a singleton - dumbass circular dependency?
54
+ $_blog = self # Dumber still?
55
+ root = Dir.pwd + "/" + root
56
+ raise BlogRepoAlreadyExists if Dir.exist?(root)
57
+ create_dir(root)
58
+ Dir.chdir(root) do
51
59
  create_dir("drafts")
52
60
  create_dir("views")
53
61
  #? create_dir("assets")
54
62
  new_sequence
55
63
  end
56
- blog = self.new
57
- blog.create_view(first_view)
58
- rescue => err
59
- puts "Can't create blog repo: '#{dir}' - #{err}"
60
- puts err.backtrace.join("\n")
64
+ put_config(root: root)
65
+ @blog = self.new(root)
66
+ @blog.create_view("test_view")
67
+ @blog
61
68
  end
62
69
 
63
- def initialize(top = true) # at top? always assumes existing blog
70
+ def self.open(root = ".blogs")
71
+ # Crude - FIXME later - # What views are there? Publishing, etc.
72
+ self.blog = self # Weird. Like a singleton - dumbass circular dependency?
73
+ $_blog = self # Dumber still?
74
+ root = Dir.pwd + "/" + root
75
+ blog = self.new(root)
76
+ end
77
+
78
+ def initialize(root_dir = ".blogs") # always assumes existing blog
64
79
  # Crude - FIXME later - # What views are there? Publishing, etc.
65
80
  self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
66
81
  $_blog = self # Dumber still?
67
- dir = ""
68
- unless top
69
- md = Dir.pwd.match(%r[.*.blogs])
70
- dir = md[0]
71
- end
72
- file = dir.empty? ? ConfigFile : dir + "/" + ConfigFile
82
+
83
+ @root = root_dir
84
+ file = @root + "/" + ConfigFile
73
85
  errmsg = "No config file! file = #{file.inspect} dir = #{Dir.pwd}"
74
86
  raise errmsg unless File.exist?(file)
75
- # Hmm. current_view doesn't belong?
76
- @root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
77
87
 
88
+ @root, @view_name, @editor = read_config(file, :root, :current_view, :editor)
78
89
  md = Dir.pwd.match(%r[.*/views/(.*?)/])
79
90
  @view_name = md[1] if md
80
91
  @views = get_views
@@ -166,19 +177,21 @@ class RuneBlog
166
177
 
167
178
  Dir.chdir(vdir)
168
179
  x = RuneBlog::Default
169
- create_dir('themes')
180
+ # create_dir('themes')
181
+ copy!("#{Themes}", "themes")
170
182
  create_dir('assets')
171
183
  create_dir('posts')
172
184
 
173
185
  create_dir('staging')
174
- create_dir('staging/assets')
186
+ # create_dir('staging/assets')
187
+ # create_dir('staging/blog')
175
188
  create_dir('remote')
176
- create_dir('remote/assets')
189
+ # create_dir('remote/assets')
177
190
 
178
- Dir.chdir("themes") { system("tar zxvf #{GemData}/standard.tgz >/dev/null 2>&1") }
179
191
  copy!("themes/standard/*", "staging/")
180
- copy("themes/standard/assets/*", "remote/assets/")
181
-
192
+ # copy!("themes/standard/blog/*", "staging/blog/")
193
+ copy!("themes/standard/*", "remote/")
194
+
182
195
  pub = "user: xxx\nserver: xxx\ndocroot: xxx\npath: xxx\nproto: xxx\n"
183
196
  dump(pub, "publish")
184
197
 
@@ -235,7 +248,7 @@ class RuneBlog
235
248
  def teaser(slug)
236
249
  id = slug.to_i
237
250
  text = nil
238
- post_entry_name = @theme + "/blog-_postentry.lt3"
251
+ post_entry_name = @theme + "/blog/post_entry.lt3"
239
252
  @_post_entry ||= File.read(post_entry_name)
240
253
  vp = post_lookup(id)
241
254
  nslug, aslug, title, date, teaser_text =
@@ -348,6 +361,7 @@ class RuneBlog
348
361
  raise "No .views call!" if view_line.size < 1
349
362
  view_line = view_line.first
350
363
  views = view_line[7..-1].split
364
+ views
351
365
  end
352
366
 
353
367
  # Remember: A post in multiple views will trigger multiple
@@ -398,7 +412,7 @@ class RuneBlog
398
412
  copy html, "../remote"
399
413
  collect_recent_posts("recent.html")
400
414
  copy("recent.html", "../remote")
401
- livetext "blog-generate", "../remote/index"
415
+ livetext "blog/generate", "../remote/index"
402
416
  end
403
417
  end
404
418
  end
@@ -2,9 +2,10 @@
2
2
  if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
3
3
 
4
4
  class RuneBlog
5
- VERSION = "0.1.84"
5
+ VERSION = "0.1.90"
6
6
 
7
- Path = File.expand_path(File.join(File.dirname(__FILE__)))
7
+ path = Gem.find_files("runeblog").grep(/runeblog-/).first
8
+ Path = File.dirname(path)
8
9
  end
9
10
 
10
11
  end
@@ -24,15 +24,13 @@ spec = Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.16'
25
25
 
26
26
  # Files...
27
- main = Find.find("bin").to_a +
28
- Find.find("lib").to_a
29
-
30
- std_theme = ["themes/standard.tgz"]
31
-
32
- misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
27
+ main = Find.find("bin").to_a +
28
+ Find.find("lib").to_a +
29
+ Find.find("themes").to_a
33
30
  test = Find.find("test").to_a
31
+ misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
34
32
 
35
- s.files = main + std_theme + misc + test
33
+ s.files = main + misc + test
36
34
  s.homepage = 'https://github.com/Hal9000/runeblog'
37
35
  s.license = "Ruby"
38
36
  end
@@ -38,14 +38,14 @@ end
38
38
  puts
39
39
 
40
40
  system("rm -rf .blogs")
41
- RuneBlog.create_new_blog_repo('test_view', ".blogs/data")
42
- x = RuneBlog.new
41
+ RuneBlog.create_new_blog_repo(".blogs")
42
+ x = RuneBlog.new(".blogs")
43
43
 
44
44
  x.create_view("around_austin") # FIXME remember view title!
45
45
 
46
46
  # Hack:
47
47
  if File.exist?("publish")
48
- system("cp publish .blogs/data/views/around_austin/publish")
48
+ system("cp publish .blogs/views/around_austin/publish")
49
49
  end
50
50
 
51
51
  x.create_view("computing")
@@ -0,0 +1,26 @@
1
+
2
+ templates The first "default theme" - more later
3
+ ├── README This file
4
+ ├── about.html An "about" file (will move)
5
+ ├── assets Assets for entire view (blog)
6
+ │   ├── application.css "Global" CSS
7
+ │   ├── favicon.ico Favicon
8
+ │   └── ... Other files later, images, etc.
9
+ ├── blog ** The whole template for this view (blog)
10
+ │   ├── _postentry.lt3 Used repeatedly in list of blog posts
11
+ │   ├── generate.lt3 The "main wrapper" that actually generates everything
12
+ │   ├── index.lt3 The main "user editable" portion of the template
13
+ │   ├── navbar.lt3 The navigation bar
14
+ │   └── sidebar The sidebar (which may include different things)
15
+ │   ├── ad.lt3 Code to generate an advertisement
16
+ │   ├── calendar.lt3 Code for a calendar
17
+ │   ├── news.lt3 Recent news
18
+ │   └── tag-cloud.lt3 Tag cloud (generated automatically of course)
19
+ ├── global.lt3 Some global settings
20
+ ├── head.lt3 A standard <head> section
21
+ ├── meta.lt3 Standard meta tags
22
+ └── post
23
+    ├── head.lt3 Specific to post (adds to higher-level head)
24
+    ├── generate.lt3 The "main wrapper" that actually generates the post
25
+    └── index.lt3 The main "user editable" portion of the post template
26
+
@@ -0,0 +1,4 @@
1
+ <section class="post">
2
+ <h1>About me</h1>
3
+ Blah blah blah...
4
+ </section>
@@ -0,0 +1,34 @@
1
+ # include variables before this file?
2
+
3
+ .post-title a {
4
+ color: #010101;
5
+ font-size: 28px;
6
+ float: right;
7
+ display: inline-block;
8
+ text-align: top;
9
+ text-decoration: none;
10
+ }
11
+
12
+ .post-title a:hover {
13
+ text-decoration: none;
14
+ }
15
+
16
+ .post-title-text a {
17
+ color: #0101a1;
18
+ font-size: 22px;
19
+ # float: right;
20
+ display: block;
21
+ text-decoration: none;
22
+ }
23
+
24
+ .post-title-text a:hover {
25
+ text-decoration: none;
26
+ }
27
+
28
+ .post-date {
29
+ color: #9a9a9a;
30
+ font-size: 15px;
31
+ display: block;
32
+ float: left;
33
+ text-align: top;
34
+ }
@@ -0,0 +1,6 @@
1
+ .main recent_posts
2
+
3
+ . Should sidebar just stick items on its command line?
4
+
5
+ .sidebar! ad news calendar tag-cloud
6
+
@@ -0,0 +1,3 @@
1
+ .meta charset: utf-8
2
+ .meta http-equiv: X-UA-Compatible content: IE=edge,chrome=1
3
+ .meta name: viewport content: width=device-width,initial-scale=1
@@ -0,0 +1,6 @@
1
+ .navbar
2
+ index.html Home
3
+ about.html About
4
+ contact.html Contact
5
+ .end
6
+
@@ -0,0 +1,17 @@
1
+ .mixin liveblog
2
+
3
+ <html>
4
+ <!-- Editing this file is not recommended. -->
5
+ <!-- It was generated from $File on $$date. -->
6
+
7
+ .include global.lt3
8
+ .include blog/head.lt3
9
+ <body>
10
+ $.include navbar.lt3
11
+ <div class="content container-fluid mt-4">
12
+ <div class="row">
13
+ $.include blog-index.lt3
14
+ </div>
15
+ </div>
16
+ </body>
17
+ </html>
@@ -0,0 +1,29 @@
1
+ <head> <!-- fix this later -->
2
+
3
+ .include meta.lt3
4
+
5
+ .stylesheet
6
+ https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
7
+ sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T
8
+ .end
9
+
10
+ .script
11
+ https://code.jquery.com/jquery-3.3.1.slim.min.js
12
+ sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo
13
+ .end
14
+
15
+ .script
16
+ https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
17
+ sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1
18
+ .end
19
+
20
+ .script
21
+ https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js
22
+ sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM
23
+ .end
24
+
25
+ </head>
26
+
27
+ .head
28
+ . # fix/remove later
29
+ .end
@@ -0,0 +1,19 @@
1
+ <div class="post">
2
+ <table width=100%>
3
+ <tr>
4
+ <td width=8% valign=top>
5
+ <span class="post-date mt-1 mb-1">
6
+ <b>#{date}</b>
7
+ </span>
8
+ </td>
9
+ <td> <!-- <span class="post-title-box"> -->
10
+ <span class="post-title-text"><a href="#{url}">#{title}</a></span>
11
+ <p><b>#{teaser_text}</b>
12
+ <br>
13
+ <a style="text-decoration: none" href="#{url}"><small>Keep reading...</small></a></p> <!-- </span> -->
14
+ </td>
15
+ </tr>
16
+ </table>
17
+ <br>
18
+ <br>
19
+ </div>
@@ -0,0 +1,7 @@
1
+ .set author="Hal Fulton"
2
+ .set title="My Blog (and Welcome To It)"
3
+ .set desc="All the stuff you never needed to know"
4
+ .set host=localhost:4000//
5
+
6
+ . Maybe move publish info here?
7
+
@@ -0,0 +1,28 @@
1
+ <head> <!-- fix this later -->
2
+
3
+ .include meta.lt3
4
+
5
+ .stylesheet
6
+ https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
7
+ sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T
8
+ .end
9
+
10
+ .script
11
+ https://code.jquery.com/jquery-3.3.1.slim.min.js
12
+ sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo
13
+ .end
14
+
15
+ .script
16
+ https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
17
+ sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1
18
+ .end
19
+
20
+ .script
21
+ https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js
22
+ sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM
23
+ .end
24
+
25
+ </head>
26
+
27
+ .head # fix/remove later
28
+ .end
@@ -0,0 +1,3 @@
1
+ .meta charset: utf-8
2
+ .meta http-equiv: X-UA-Compatible content: IE=edge,chrome=1
3
+ .meta name: viewport content: width=device-width,initial-scale=1
@@ -0,0 +1,6 @@
1
+ .navbar
2
+ index.html Home
3
+ about.html About
4
+ contact.html Contact
5
+ .end
6
+
@@ -0,0 +1,17 @@
1
+ .mixin liveblog
2
+
3
+ . FIXME?
4
+
5
+ <html>
6
+ <!-- Editing this file is not recommended. -->
7
+ <!-- It was generated from $File on $$date. -->
8
+
9
+ .include global.lt3
10
+ .include blog/head.lt3
11
+ <section class="post">
12
+ <div class="entry-content">
13
+ $.include post-index.lt3
14
+ </div>
15
+ </section>
16
+ </body>
17
+ </html>
@@ -0,0 +1,4 @@
1
+ . Inherits from ../head.lt3 and overrides with
2
+ . post-specific metadata
3
+
4
+ . To be done...
@@ -0,0 +1,16 @@
1
+ .mixin liveblog
2
+ . ^ get rid of this later
3
+
4
+ .post 0
5
+
6
+ .title The new amphitheatre is overrated
7
+ .pubdate 2019-07-09
8
+ .views around_austin
9
+ .tags
10
+
11
+ .teaser
12
+ It used to be that all major concerts played the Erwin Center.
13
+
14
+ .end
15
+ Now, depending on what you consider "major," blah blah blah...
16
+
@@ -0,0 +1,5 @@
1
+ .card1 Advertisement
2
+ Build your amazing website with blabla.com.
3
+ https://google.com/,_blank,btn btn-light float-right,Visit Page
4
+ .end
5
+
@@ -0,0 +1,6 @@
1
+
2
+ .card_iframe Calendar
3
+ https://calendar.google.com/calendar/embed?src=en-gb.indian%23holiday%40group.v.calendar.google.com&ctz=Asia%2FKolkata
4
+ height="350"
5
+ .end
6
+
@@ -0,0 +1,7 @@
1
+ .card2 Recent News
2
+ https://nest.com/whats-happening/,_blank,Google Is Turning Off the Works-with-Nest API
3
+ https://developers.googleblog.com/2019/05/Flutter-io19.html,_blank,Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
4
+ https://github.com/kkuchta/css-only-chat,_blank,Css-only-chat: A truly monstrous async web chat using no JS on the front end
5
+ https://jaycarlson.net/microcontrollers/,_blank,The Amazing $1 Microcontroller (2017)
6
+ .end
7
+
@@ -0,0 +1,10 @@
1
+ .tag_cloud
2
+ https://google.com/,_blank,btn btn-dark m-1,Programming
3
+ https://google.com/,_blank,btn btn-danger m-1,Science Fiction
4
+ https://google.com/,_blank,btn btn-light m-1,Art
5
+ https://google.com/,_blank,btn btn-dark m-1,Robotics
6
+ https://google.com/,_blank,btn btn-warning m-1,Food and Travel
7
+ https://google.com/,_blank,btn btn-light m-1,DIY Hacks
8
+ https://google.com/,_blank,btn btn-info m-1,Surfing
9
+ .end
10
+
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.84
4
+ version: 0.1.90
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-09-07 00:00:00.000000000 Z
11
+ date: 2019-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext
@@ -77,7 +77,27 @@ files:
77
77
  - test/general_test.rb
78
78
  - test/make_blog.rb
79
79
  - test/test
80
- - themes/standard.tgz
80
+ - themes/standard/README
81
+ - themes/standard/about.html
82
+ - themes/standard/assets/blog.css
83
+ - themes/standard/assets/favicon.ico
84
+ - themes/standard/blog-index.lt3
85
+ - themes/standard/blog-meta.lt3
86
+ - themes/standard/blog-navbar.lt3
87
+ - themes/standard/blog/generate.lt3
88
+ - themes/standard/blog/head.lt3
89
+ - themes/standard/blog/post_entry.lt3
90
+ - themes/standard/global.lt3
91
+ - themes/standard/head.lt3
92
+ - themes/standard/meta.lt3
93
+ - themes/standard/navbar.lt3
94
+ - themes/standard/post-generate.lt3
95
+ - themes/standard/post-head.lt3
96
+ - themes/standard/post-index.lt3
97
+ - themes/standard/sidebar/ad.lt3
98
+ - themes/standard/sidebar/calendar.lt3
99
+ - themes/standard/sidebar/news.lt3
100
+ - themes/standard/sidebar/tag-cloud.lt3
81
101
  homepage: https://github.com/Hal9000/runeblog
82
102
  licenses:
83
103
  - Ruby
Binary file