runeblog 0.1.84 → 0.1.90

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: 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