runeblog 0.1.95 → 0.2.1

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/helpers-blog.rb +14 -3
  3. data/lib/liveblog.rb +119 -69
  4. data/lib/repl.rb +3 -2
  5. data/lib/runeblog.rb +7 -20
  6. data/lib/runeblog_version.rb +1 -1
  7. data/runeblog.gemspec +1 -1
  8. data/themes/standard/blog/head.lt3 +1 -0
  9. data/themes/standard/blog/index.lt3 +3 -1
  10. data/themes/standard/etc/blog.css.lt3 +7 -18
  11. data/themes/standard/etc/misc.js +6 -0
  12. data/themes/standard/global.lt3 +10 -1
  13. data/themes/standard/navbar/about.html +4 -2
  14. data/themes/standard/navbar/contact.html +6 -0
  15. data/themes/standard/sidebar/README +3 -0
  16. data/themes/standard/widgets/README +4 -0
  17. data/themes/standard/widgets/ad/ad.lt3 +12 -0
  18. data/themes/standard/{sidebar → widgets/calendar}/calendar.lt3 +0 -0
  19. data/themes/standard/widgets/news/card-news.html +17 -0
  20. data/themes/standard/widgets/news/list.data +4 -0
  21. data/themes/standard/widgets/news/main-news.html +9 -0
  22. data/themes/standard/widgets/news/news.lt3 +4 -0
  23. data/themes/standard/widgets/pages/README +2 -0
  24. data/themes/standard/widgets/pages/disclaim.lt3 +6 -0
  25. data/themes/standard/widgets/pages/faq.lt3 +6 -0
  26. data/themes/standard/widgets/pages/generated.lt3 +4 -0
  27. data/themes/standard/widgets/pages/lifestory.lt3 +6 -0
  28. data/themes/standard/widgets/pages/like-dislike.lt3 +6 -0
  29. data/themes/standard/widgets/pages/list.data +4 -0
  30. data/themes/standard/widgets/pages/main.html +9 -0
  31. data/themes/standard/widgets/pages/main.lt3 +18 -0
  32. data/themes/standard/widgets/tag-cloud/tag-cloud.lt3 +12 -0
  33. metadata +24 -9
  34. data/themes/standard/etc/blog.css +0 -34
  35. data/themes/standard/sidebar/ad.lt3 +0 -5
  36. data/themes/standard/sidebar/news.lt3 +0 -7
  37. data/themes/standard/sidebar/tag-cloud.lt3 +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c34d3256b5ce72fd7a4186b283291940b673e03ca276ce0425baf4d25760f564
4
- data.tar.gz: 9e375ccfa30089a4fa04f774c822a36dbf68b5e966cd208c6354b3e4a0fd8b9d
3
+ metadata.gz: 7ecf2ea93c7b100f433d4cf9a822655ba6f4c95997e96b09dee870c8234a10e8
4
+ data.tar.gz: d1d6da2a7c78cb201b9fd6d3359347b6b6cf4534286f2c12c44ff72fcb545c85
5
5
  SHA512:
6
- metadata.gz: b50e6e90f95618fdcdfb5a717a9f845a00717f85204dc65dd76b60e4d98e2e05d3fb86517dca4c28f2cbcf8729e803deaf9c3c7309b4e0d4085ea823ec732311
7
- data.tar.gz: 3b99520e51344079fcafd06b50ae0d6e5ffaf25d756dd9c8341f9ed367ad0b24692c27ffada0f2af874308e5de9a68d04fd9ec6b868a6d72f118d6f9b2a4b1b6
6
+ metadata.gz: b9af872813d5420811971839357debb0c6197302e832d15c5749164c8a87523def9370943fa0bd14b15a44ab3b8fbdf9eee97744df91d98920f23dcde8413e6d
7
+ data.tar.gz: e995fb01bdc9073957c2e762fdff55f4502a906cb0176df76af45d65ca2ea75b19934d74e6e0909c0c7f26ba370abaebad5d24bd3ae4e61007a171d2fa263114
@@ -12,9 +12,20 @@ module RuneBlog::Helpers
12
12
  system("cp -r #{src} #{dst}")
13
13
  end
14
14
 
15
- def livetext(src, dst)
15
+ def stale?(src, dst)
16
+ return true unless File.exist?(dst)
17
+ return true if File.mtime(src) > File.mtime(dst)
18
+ return false
19
+ end
20
+
21
+ def livetext(src, dst=nil)
16
22
  src << ".lt3" unless src.end_with?(".lt3")
17
- dst << ".html" unless dst.end_with?(".html")
23
+ if dst
24
+ dst << ".html" unless dst.end_with?(".html")
25
+ else
26
+ dst = src.sub(/.lt3$/, "")
27
+ end
28
+ return unless stale?(src, dst)
18
29
  system("livetext #{src} >#{dst}")
19
30
  end
20
31
 
@@ -65,7 +76,7 @@ module RuneBlog::Helpers
65
76
  vals
66
77
  end
67
78
 
68
- def put_config(root:, view:"test_view", editor: "/bin/vim")
79
+ def put_config(root:, view:"test_view", editor: "/usr/local/bin/vim")
69
80
  Dir.mkdir(root) unless Dir.exist?(root)
70
81
  Dir.chdir(root) do
71
82
  File.open("config", "w") do |cfg|
@@ -5,7 +5,7 @@ require 'date'
5
5
  require 'livetext'
6
6
  require 'runeblog'
7
7
 
8
- errfile = File.new("liveblog.out", "w")
8
+ errfile = File.new("/tmp/liveblog.out", "w")
9
9
  STDERR.reopen(errfile)
10
10
 
11
11
  def init_liveblog # FIXME - a lot of this logic sucks
@@ -22,18 +22,31 @@ def init_liveblog # FIXME - a lot of this logic sucks
22
22
  @theme = @vdir + "/themes/standard/"
23
23
  end
24
24
 
25
+ # FIXME - stale? and livetext are duplicated from helpers-blog
26
+
27
+ def stale?(src, dst)
28
+ return true unless File.exist?(dst)
29
+ return true if File.mtime(src) > File.mtime(dst)
30
+ return false
31
+ end
32
+
33
+ def livetext(src, dst=nil)
34
+ src += ".lt3" unless src.end_with?(".lt3")
35
+ if dst
36
+ dst += ".html" unless dst.end_with?(".html")
37
+ else
38
+ dst = src.sub(/.lt3$/, "")
39
+ end
40
+ return unless stale?(src, dst)
41
+ system("livetext #{src} >#{dst}")
42
+ end
43
+
25
44
  def post
26
45
  @meta = OpenStruct.new
27
46
  @meta.num = _args[0]
28
47
  _out " <!-- Post number #{@meta.num} -->\n "
29
48
  end
30
49
 
31
- def _view_from_cwd
32
- md = Dir.pwd.match(%r[.*/views/(.*?)/])
33
- return md[1] if md
34
- nil
35
- end
36
-
37
50
  def quote
38
51
  _passthru "<blockquote>"
39
52
  _passthru _body
@@ -60,11 +73,69 @@ def h6; _passthru "
#{@_data}
"; end
60
73
 
61
74
  def hr; _passthru "<hr>"; end
62
75
 
63
- def emit # send to STDOUT?
64
- @emit = true
65
- case _args.first
66
- when "off"; @emit = false
67
- when "on"; @emit = true
76
+ def list
77
+ _out "<ul>"
78
+ _body {|line| _out "<li>#{line}</li>" }
79
+ _out "</ul>"
80
+ _optional_blank_line
81
+ end
82
+
83
+ def list!
84
+ _out "<ul>"
85
+ lines = _body.each
86
+ loop do
87
+ line = lines.next
88
+ line = _format(line)
89
+ if line[0] == " "
90
+ _out line
91
+ else
92
+ _out "<li>#{line}</li>"
93
+ end
94
+ end
95
+ _out "</ul>"
96
+ _optional_blank_line
97
+ end
98
+
99
+ def html_body(file)
100
+ file.puts "<html>\n <body>"
101
+ yield
102
+ file.puts " </body>\n</html>"
103
+ end
104
+
105
+ def make_magic_links
106
+ # FIXME remember strings may not be safe
107
+ line = _data.chomp
108
+ input, cardfile, mainfile, card_title = *line.split(" ", 4)
109
+ pairs = File.readlines(input).map {|line| line.chomp.split(",", 2) }
110
+ # HTML for main area (iframe)
111
+ File.open("#{mainfile}.html", "w") do |f|
112
+ html_body(f) do
113
+ f.puts "<h1>#{card_title}</h1>"
114
+ pairs.each {|file, title| f.puts %[<a href="#{file}">#{title}</a> <br>] }
115
+ end
116
+ end
117
+ # HTML for sidebar card
118
+ STDERR.puts %[File is: 'widgets/#{tag}/#{mainfile}.html']
119
+ File.open("#{cardfile}.html", "w") do |f|
120
+ f.puts <<-EOS
121
+ <div class="card mb-3">
122
+ <div class="card-body">
123
+ <h5 class="card-title">
124
+ <a href="javascript: void(0)"
125
+ onclick="javascript:open_main('widgets/#{tag}/#{mainfile}.html')"
126
+ style="text-decoration: none; color: black">#{card_title}</a>
127
+ </h5>
128
+ EOS
129
+ pairs.each do |file, title|
130
+ f.puts <<-EOS
131
+ <li class="list-group-item"> <a href="javascript: void(0)"
132
+ onclick="javascript:open_main('#{file}')">#{title}</a> </li>
133
+ EOS
134
+ end
135
+ f.puts <<-EOS
136
+ </div>
137
+ </div>
138
+ EOS
68
139
  end
69
140
  end
70
141
 
@@ -164,29 +235,6 @@ def pin
164
235
  _optional_blank_line
165
236
  end
166
237
 
167
- def list
168
- _out "<ul>"
169
- _body {|line| _out "<li>#{line}</li>" }
170
- _out "</ul>"
171
- _optional_blank_line
172
- end
173
-
174
- def list!
175
- _out "<ul>"
176
- lines = _body.each
177
- loop do
178
- line = lines.next
179
- line = _format(line)
180
- if line[0] == " "
181
- _out line
182
- else
183
- _out "<li>#{line}</li>"
184
- end
185
- end
186
- _out "</ul>"
187
- _optional_blank_line
188
- end
189
-
190
238
  def write_post
191
239
  raise "'post' was not called" unless @meta
192
240
  save = Dir.pwd
@@ -277,6 +325,8 @@ class Livetext::Functions
277
325
  end
278
326
  end
279
327
 
328
+ ###
329
+
280
330
  def _var(name) # FIXME scope issue!
281
331
  ::Livetext::Vars[name] || "[:#{name} is undefined]"
282
332
  end
@@ -291,12 +341,12 @@ def head # Does NOT output tags
291
341
  defaults = {}
292
342
  defaults = { "charset" => %[<meta charset="utf-8">],
293
343
  "http-equiv" => %[<meta http-equiv="X-UA-Compatible" content="IE=edge">],
294
- "title" => %[<title>\n #{_var(:blog)} | #{_var(:blog_desc)}\n </title>],
344
+ "title" => %[<title>\n #{_var(:blog)} | #{_var("blog.desc")}\n </title>],
295
345
  "generator" => %[<meta name="generator" content="Runeblog v #@version">],
296
346
  "og:title" => %[<meta property="og:title" content="#{_var(:blog)}">],
297
347
  "og:locale" => %[<meta property="og:locale" content="#{_var(:locale)}">],
298
- "description" => %[<meta name="description" content="#{_var(:blog_desc)}">],
299
- "og:description" => %[<meta property="og:description" content="#{_var(:blog_desc)}">],
348
+ "description" => %[<meta name="description" content="#{_var("blog.desc")}">],
349
+ "og:description" => %[<meta property="og:description" content="#{_var("blog.desc")}">],
300
350
  "linkc" => %[<link rel="canonical" href="#{_var(:host)}">],
301
351
  "og:url" => %[<meta property="og:url" content="#{_var(:host)}">],
302
352
  "og:site_name" => %[<meta property="og:site_name" content="#{_var(:blog)}">],
@@ -366,20 +416,12 @@ end
366
416
 
367
417
  def sidebar
368
418
  _out %[<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">]
369
- _body do |line|
370
- tag = line.chomp.strip
371
- self.data = "sidebar/#{tag.downcase}.lt3"
372
- _include
373
- end
374
- _out %[</div>]
375
- end
376
-
377
- def sidebar!
378
- _out %[<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">]
379
- _args do |line|
380
- tag = line.chomp.strip
381
- self.data = "sidebar/#{tag.downcase}.lt3"
382
- _include
419
+ _args do |token|
420
+ tag = token.chomp.strip.downcase
421
+ Dir.chdir("widgets/#{tag}") do
422
+ livetext tag, "card-#{tag}.html"
423
+ _include_file "card-#{tag}.html"
424
+ end
383
425
  end
384
426
  _out %[</div>]
385
427
  end
@@ -451,7 +493,7 @@ def all_teasers
451
493
  end
452
494
  text << "</body></html>"
453
495
  File.write("recent.html", text)
454
- _out %[<iframe style="width: 100vw;height: 100vh;position: relative;" src='recent.html' width=100% frameborder="0" allowfullscreen></iframe>]
496
+ _out %[<iframe id="main" style="width: 100vw; height: 100vh; position: relative;" src='recent.html' width=100% frameborder="0" allowfullscreen></iframe>]
455
497
  end
456
498
 
457
499
  def _post_lookup(postid) # side-effect
@@ -512,7 +554,7 @@ def card_iframe
512
554
  stuff = lines[1..-1].join(" ") # FIXME later
513
555
  middle = <<-HTML
514
556
  <iframe src="#{url}" #{stuff}
515
- style="border: 0" height="350"
557
+ style="border: 0" #{stuff}
516
558
  frameborder="0" scrolling="no">
517
559
  </iframe>
518
560
  HTML
@@ -520,23 +562,30 @@ def card_iframe
520
562
  _card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
521
563
  end
522
564
 
565
+ def _main(url)
566
+ %[href="javascript: void(0)" onclick="javascript:open_main('#{url}')"]
567
+ end
568
+
523
569
  def card1
524
570
  title, lines = _data, _body
525
571
  lines.map!(&:chomp)
526
572
 
527
573
  card_text = lines[0]
528
- url, target, classname, cdata = lines[1].split(",", 4)
574
+ url, classname, cdata = lines[1].split(",", 4)
575
+ main = _main(url)
529
576
 
530
577
  middle = <<-HTML
531
578
  <p class="card-text">#{card_text}</p>
532
- <a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>
579
+ <a #{main} class="#{classname}">#{cdata}</a>
533
580
  HTML
534
581
 
535
582
  _card_generic(card_title: title, middle: middle, extra: "bg-dark text-white")
536
583
  end
537
584
 
538
585
  def card2
539
- card_title = _data
586
+ str = _data
587
+ file, card_title = str.chomp.split(" ", 2)
588
+ card_title = %[<a #{_main(file)} style="text-decoration: none; color: black">#{card_title}</a>]
540
589
 
541
590
  # FIXME is this wrong??
542
591
 
@@ -544,18 +593,16 @@ def card2
544
593
  <div class="card mb-3">
545
594
  <div class="card-body">
546
595
  <h5 class="card-title">#{card_title}</h5>
547
- </div>
548
596
  <ul class="list-group list-group-flush">
549
597
  HTML
550
598
  _out open
551
599
  _body do |line|
552
- url, target, cdata = line.chomp.split(",", 3)
553
- _out %[<li class="list-group-item"><a href="#{url}" target="#{target}">#{cdata}</a> </li>]
600
+ url, cdata = line.chomp.split(",", 3)
601
+ main = _main(url)
602
+ _out %[<li class="list-group-item"><a #{main}}">#{cdata}</a> </li>]
554
603
  end
555
- close = %[ </ul>\n </div>]
604
+ close = %[ </ul>\n </div>\n </div>]
556
605
  _out close
557
- rescue
558
- puts @live.body
559
606
  end
560
607
 
561
608
  def tag_cloud
@@ -569,15 +616,17 @@ def tag_cloud
569
616
  _out open
570
617
  _body do |line|
571
618
  line.chomp!
572
- url, target, classname, cdata = line.split(",", 4)
573
- _out %[<a href="#{url}" target="#{target}" class="#{classname}">#{cdata}</a>]
619
+ url, classname, cdata = line.split(",", 4)
620
+ main = _main(url)
621
+ _out %[<a #{main} class="#{classname}">#{cdata}</a>]
574
622
  end
575
- rescue
576
- puts @live.body
623
+ close = %[ </div>\n </div>]
624
+ _out close
577
625
  end
578
626
 
579
627
  def navbar
580
628
  title = _var(:blog)
629
+
581
630
  open = <<-HTML
582
631
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
583
632
  <a class="navbar-brand" href="index.html">#{title}</a>
@@ -590,7 +639,6 @@ def navbar
590
639
  aria-label="Toggle navigation">
591
640
  <span class="navbar-toggler-icon"></span>
592
641
  </button>
593
-
594
642
  <div class="collapse navbar-collapse pull-right"
595
643
  id="navbarSupportedContent">
596
644
  <ul class="navbar-nav mr-auto">
@@ -605,11 +653,13 @@ def navbar
605
653
  _out open
606
654
  _body do |line|
607
655
  href, cdata = line.chomp.strip.split(" ", 2)
656
+ main = _main(href)
608
657
  if first
609
658
  first = false
610
659
  _out %[<li class="nav-item active"> <a class="nav-link" href="#{href}">#{cdata}<span class="sr-only">(current)</span></a> </li>]
611
660
  else
612
- _out %[<li class="nav-item"> <a class="nav-link" href="#{href}">#{cdata}</a> </li>]
661
+ main = _main("navbar/#{href}")
662
+ _out %[<li class="nav-item"> <a class="nav-link" #{main}>#{cdata}</a> </li>]
613
663
  end
614
664
  end
615
665
  _out close
@@ -1,15 +1,16 @@
1
- # require 'runeblog'
1
+ require 'runeblog'
2
2
  require 'global'
3
3
  require 'ostruct'
4
4
  require 'helpers-repl' # FIXME structure
5
5
 
6
6
  make_exception(:PublishError, "Error during publishing")
7
- # make_exception(:EditorProblem, "Could not edit $1")
7
+ make_exception(:EditorProblem, "Could not edit $1")
8
8
 
9
9
  module RuneBlog::REPL
10
10
 
11
11
  def edit_file(file)
12
12
  result = system("#{@blog.editor} #{file}")
13
+ STDERR.puts "editor = #{@blog.editor} FILE = #{file}"
13
14
  raise EditorProblem(file) unless result
14
15
  sleep 0.1
15
16
  STDSCR.clear
@@ -177,16 +177,17 @@ class RuneBlog
177
177
  x = RuneBlog::Default
178
178
  copy!("#{Themes}", "themes")
179
179
  create_dirs(:assets, :posts)
180
- create_dirs(:staging, "remote/permalink")
180
+ create_dirs(:staging, "remote/permalink", "remote/navbar")
181
+ livetext "themes/standard/etc/blog.css.lt3" # strip ext
181
182
  copy!("themes/standard/*", "staging/")
183
+
182
184
  copy!("themes/standard/etc", "remote/")
183
185
  copy!("themes/standard/assets", "remote/")
186
+ copy!("themes/standard/widgets", "remote/")
184
187
 
185
188
  pub = "user: xxx\nserver: xxx\ndocroot: xxx\npath: xxx\nproto: xxx\n"
186
189
  dump(pub, "publish")
187
190
 
188
- # Add to global.lt3 here? FIXME
189
-
190
191
  view = RuneBlog::View.new(arg)
191
192
  self.view = view
192
193
  vdir = self.view.dir
@@ -212,14 +213,6 @@ class RuneBlog
212
213
  files.reject! {|f| File.mtime(f) < File.mtime("#{vdir}/last_published") }
213
214
  end
214
215
 
215
- def files_by_id(id) # FIXME get rid of this later
216
- raise ArgumentError unless id.is_a?(Integer)
217
- files = Find.find(self.view.dir).to_a
218
- tag = prefix(id)
219
- result = files.grep(/#{tag}-/)
220
- result
221
- end
222
-
223
216
  def post_lookup(postid) # side-effect?
224
217
  # .. = templates, ../.. = views/thisview
225
218
  slug = title = date = teaser_text = nil
@@ -278,11 +271,10 @@ class RuneBlog
278
271
  text << "</body></html>"
279
272
  File.write(file, text) # FIXME ???
280
273
  iframe_text = <<-HTML
281
- <iframe style="width: 100vw;height: 100vh;position: relative;"
274
+ <iframe name="main" style="width: 100vw;height: 100vh;position: relative;"
282
275
  src='recent.html' width=100% frameborder="0" allowfullscreen>
283
276
  </iframe>
284
277
  HTML
285
- # _out iframe_text # FIXME ??
286
278
  end
287
279
 
288
280
  def create_new_post(title, testing = false, teaser: nil, body: nil, other_views: [])
@@ -409,6 +401,7 @@ class RuneBlog
409
401
  livetext "post/permalink.lt3", "../remote/permalink/#{html}"
410
402
  collect_recent_posts("recent.html")
411
403
  copy("recent.html", "../remote")
404
+ copy!("navbar/*html", "../remote/navbar/")
412
405
  livetext "blog/generate", "../remote/index"
413
406
  end
414
407
  end
@@ -424,7 +417,7 @@ class RuneBlog
424
417
  check_meta(meta, "index_entry1")
425
418
  raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View)
426
419
  check_meta(meta, "index_entry2")
427
- self.make_slug(meta) # RuneBlog#index_entry
420
+ self.make_slug(meta)
428
421
  check_meta(meta, "index_entry3")
429
422
  # FIXME clean up and generalize
430
423
  ref = "#{view}/#{meta.slug}/index.html"
@@ -489,12 +482,6 @@ class RuneBlog
489
482
  system("rm -rf #@root/drafts/#{tag}-*")
490
483
  end
491
484
 
492
- def post_exists?(num)
493
- raise ArgumentError unless num.is_a?(Integer)
494
- list = files_by_id(num) # FIXME search under view dirs
495
- list.empty? ? nil : list
496
- end
497
-
498
485
  def make_slug(meta)
499
486
  raise ArgumentError unless meta.title.is_a?(String)
500
487
  label = '%04d' % meta.num # FIXME can do better
@@ -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.95"
5
+ VERSION = "0.2.1"
6
6
 
7
7
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
8
8
  Path = File.dirname(path)
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
20
20
  s.authors = ["Hal Fulton"]
21
21
  s.email = 'rubyhacker@gmail.com'
22
22
  s.executables << "blog"
23
- s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.91'
23
+ s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.92'
24
24
  s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.16'
25
25
 
26
26
  # Files...
@@ -1,5 +1,6 @@
1
1
  <head>
2
2
  .include etc/externals.lt3
3
+ .include etc/misc.js
3
4
 
4
5
  . fix/remove later
5
6
  .head
@@ -1,4 +1,6 @@
1
1
  .recent_posts
2
2
 
3
- .sidebar! ad news calendar tag-cloud
3
+ .sidebar news tag-cloud
4
+
5
+ . for now, skip: ad calendar tag-cloud
4
6
 
@@ -1,20 +1,9 @@
1
1
  .nopara
2
-
3
- .variables
4
- post_title_color #010101
5
- post_title_size 28px
6
-
7
- post_text_color #0101a1
8
- post_text_size 22px
9
-
10
- post_date_color #9a9a9a
11
- post_date_size 15px
12
- .end
13
-
2
+ .include themes/standard/global.lt3
14
3
 
15
4
  \.post-title a {
16
- color: $post_title_color;
17
- font-size: $post_title_size;
5
+ color: $post.title.color;
6
+ font-size: $post.title.size;
18
7
  float: right;
19
8
  display: inline-block;
20
9
  text-align: top;
@@ -26,8 +15,8 @@ post_date_size 15px
26
15
  }
27
16
 
28
17
  \.post-title-text a {
29
- color: $post_text_color;
30
- font-size: $post_text_size;
18
+ color: $post.text.color;
19
+ font-size: $post.text.size;
31
20
  # float: right;
32
21
  display: block;
33
22
  text-decoration: none;
@@ -38,8 +27,8 @@ post_date_size 15px
38
27
  }
39
28
 
40
29
  \.post-date {
41
- color: $post_date_color;
42
- font-size: $post_date_size;
30
+ color: $post.date.color;
31
+ font-size: $post.date.size;
43
32
  display: block;
44
33
  float: left;
45
34
  text-align: top;
@@ -0,0 +1,6 @@
1
+ <script>
2
+ function open_main(url) {
3
+ var site = url+'?toolbar=0&amp;navpanes=0&amp;scrollbar=0';
4
+ document.getElementById('main').src = site;
5
+ }
6
+ </script>
@@ -1,12 +1,21 @@
1
1
  .variables
2
2
  author Hal Fulton
3
3
  blog My Blog (and Welcome To It)
4
- blog_desc All the stuff you never needed to know
4
+ blog.desc All the stuff you never needed to know
5
5
  host localhost:4000//
6
6
  charset utf-8
7
7
  site rubyhacker.com
8
8
  url localhost:4000//
9
9
  locale en_US
10
+
11
+ post.title.color #010101
12
+ post.title.size 28px
13
+
14
+ post.text.color #0101a1
15
+ post.text.size 22px
16
+
17
+ post.date.color #9a9a9a
18
+ post.date.size 15px
10
19
  .end
11
20
 
12
21
  . Maybe move publish info here?
@@ -1,4 +1,6 @@
1
- <section class="post">
1
+ <div class="content container-fluid mt-4">
2
+ <div class="row">
2
3
  <h1>About me</h1>
3
4
  Blah blah blah...
4
- </section>
5
+ </div>
6
+ </div>
@@ -0,0 +1,6 @@
1
+ <div class="content container-fluid mt-4">
2
+ <div class="row">
3
+ <h1>Contact</h1>
4
+ How to contact me by email, smoke signals, ICBM, seance, ...
5
+ </div>
6
+ </div>
@@ -0,0 +1,3 @@
1
+ Should sidebar/ be deleted?
2
+ Or should it serve to show which widgets are being used?
3
+ Probably needs to be there for URLs? Not sure.
@@ -0,0 +1,4 @@
1
+ bydates Browse blog entries for past dates
2
+ links List of links (typically offsite)
3
+ pages List of pages (my own local stuff)
4
+ search Search posts by tag, title, body, etc.
@@ -0,0 +1,12 @@
1
+ .set classname="btn btn-light float-right"
2
+ .set card.title="Advertisement"
3
+ .set card.text="Build your amazing website with blabla.com."
4
+ .set extra="bg-dark text-white"
5
+
6
+ <div class="card #{_var[:extra]} mb-3">
7
+ <div class="card-body">
8
+ <h5 class="card-title">#{_var["card.title"]}</h5>
9
+ <p class="card-text">#{_var["card.text"]}</p>
10
+ <a #{main} class="#{classname}">#{_var["card.text"]}</a>
11
+ </div>
12
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="card mb-3">
2
+ <div class="card-body">
3
+ <h5 class="card-title">
4
+ <a href="javascript: void(0)"
5
+ onclick="javascript:open_main('main-news')"
6
+ style="text-decoration: none; color: black">Recent News</a>
7
+ </h5>
8
+ <li class="list-group-item"> <a href="javascript: void(0)"
9
+ onclick="javascript:open_main('https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/')">FOSSA scores \$8.5 million Series A to help enterprise manage open-source licenses</a> </li>
10
+ <li class="list-group-item"> <a href="javascript: void(0)"
11
+ onclick="javascript:open_main('https://techcrunch.com/2019/09/17/spacexs-orbital-starship-prototype-construction-progress-detailed-in-new-photos/')">SpaceX’s orbital Starship prototype construction progress detailed in new photos</a> </li>
12
+ <li class="list-group-item"> <a href="javascript: void(0)"
13
+ onclick="javascript:open_main('https://developers.googleblog.com/2019/05/Flutter-io19.html')">Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop</a> </li>
14
+ <li class="list-group-item"> <a href="javascript: void(0)"
15
+ onclick="javascript:open_main('https://jaycarlson.net/microcontrollers/')">The Amazing \$1 Microcontroller (2017)</a> </li>
16
+ </div>
17
+ </div>
@@ -0,0 +1,4 @@
1
+ https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/,FOSSA scores \$8.5 million Series A to help enterprise manage open-source licenses
2
+ https://techcrunch.com/2019/09/17/spacexs-orbital-starship-prototype-construction-progress-detailed-in-new-photos/,SpaceX’s orbital Starship prototype construction progress detailed in new photos
3
+ https://developers.googleblog.com/2019/05/Flutter-io19.html,Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
4
+ https://jaycarlson.net/microcontrollers/,The Amazing \$1 Microcontroller (2017)
@@ -0,0 +1,9 @@
1
+ <html>
2
+ <body>
3
+ <h1>Recent News</h1>
4
+ <a href="https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/">FOSSA scores \$8.5 million Series A to help enterprise manage open-source licenses</a> <br>
5
+ <a href="https://techcrunch.com/2019/09/17/spacexs-orbital-starship-prototype-construction-progress-detailed-in-new-photos/">SpaceX’s orbital Starship prototype construction progress detailed in new photos</a> <br>
6
+ <a href="https://developers.googleblog.com/2019/05/Flutter-io19.html">Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop</a> <br>
7
+ <a href="https://jaycarlson.net/microcontrollers/">The Amazing \$1 Microcontroller (2017)</a> <br>
8
+ </body>
9
+ </html>
@@ -0,0 +1,4 @@
1
+ .mixin liveblog
2
+ .nopara
3
+ .make_magic_links list.data card-news main-news Recent News
4
+ .end
@@ -0,0 +1,2 @@
1
+ This is a work in progress...
2
+
@@ -0,0 +1,6 @@
1
+ .page_title Disclaimer
2
+
3
+ This is
4
+ just a
5
+ dummy file
6
+ for now
@@ -0,0 +1,6 @@
1
+ .page_title Freqently Asked Questions
2
+
3
+ This is
4
+ just a
5
+ dummy file
6
+ for now
@@ -0,0 +1,4 @@
1
+ <a href="faq.lt3">Frequently Asked Questions</a> <br>
2
+ <a href="like-dislike.lt3">Likes and Dislikes</a> <br>
3
+ <a href="disclaim.lt3">Disclaimer</a> <br>
4
+ <a href="lifestory.lt3">My Life Story</a> <br>
@@ -0,0 +1,6 @@
1
+ .page_title My Life Story
2
+
3
+ This is
4
+ just a
5
+ dummy file
6
+ for now
@@ -0,0 +1,6 @@
1
+ .page_title Likes and Dislikes
2
+
3
+ This is
4
+ just a
5
+ dummy file
6
+ for now
@@ -0,0 +1,4 @@
1
+ faq.lt3 Frequently Asked Questions
2
+ like-dislike.lt3 Likes and Dislikes
3
+ disclaim.lt3 Disclaimer
4
+ lifestory.lt3 My Life Story
@@ -0,0 +1,9 @@
1
+ <h1>Pages</h1>
2
+ <p>
3
+
4
+ <p>
5
+
6
+ <a href="faq.lt3">Frequently Asked Questions</a> <br>
7
+ <a href="like-dislike.lt3">Likes and Dislikes</a> <br>
8
+ <a href="disclaim.lt3">Disclaimer</a> <br>
9
+ <a href="lifestory.lt3">My Life Story</a> <br>
@@ -0,0 +1,18 @@
1
+ .card_iframe
2
+ <h1>Pages</h1>
3
+
4
+ .def make_links
5
+ pairs = File.readlines("list.data").map {|line| line.chomp.split(" ", 2) }
6
+ File.open("generated.lt3", "w") do |f|
7
+ pairs.each do |file, title|
8
+ f.puts <<-EOS
9
+ <a href="#{file}">#{title}</a> <br>
10
+ EOS
11
+ end
12
+ end
13
+ .end
14
+
15
+ .make_links
16
+
17
+ .include generated.lt3
18
+ .end
@@ -0,0 +1,12 @@
1
+ .mixin liveblog
2
+
3
+ .tag_cloud
4
+ https://google.com/,btn btn-dark m-1,Programming
5
+ https://google.com/,btn btn-danger m-1,Science Fiction
6
+ https://google.com/,btn btn-light m-1,Art
7
+ https://google.com/,btn btn-dark m-1,Robotics
8
+ https://google.com/,btn btn-warning m-1,Food and Travel
9
+ https://google.com/,btn btn-light m-1,DIY Hacks
10
+ https://google.com/,btn btn-info m-1,Surfing
11
+ .end
12
+
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.95
4
+ version: 0.2.1
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-15 00:00:00.000000000 Z
11
+ date: 2019-09-19 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.8'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.8.91
22
+ version: 0.8.92
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.8'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.8.91
32
+ version: 0.8.92
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rubytext
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -82,21 +82,36 @@ files:
82
82
  - themes/standard/blog/head.lt3
83
83
  - themes/standard/blog/index.lt3
84
84
  - themes/standard/blog/post_entry.lt3
85
- - themes/standard/etc/blog.css
86
85
  - themes/standard/etc/blog.css.lt3
87
86
  - themes/standard/etc/externals.lt3
88
87
  - themes/standard/etc/favicon.ico
88
+ - themes/standard/etc/misc.js
89
89
  - themes/standard/global.lt3
90
90
  - themes/standard/navbar/about.html
91
+ - themes/standard/navbar/contact.html
91
92
  - themes/standard/navbar/navbar.lt3
92
93
  - themes/standard/post/generate.lt3
93
94
  - themes/standard/post/head.lt3
94
95
  - themes/standard/post/index.lt3
95
96
  - themes/standard/post/permalink.lt3
96
- - themes/standard/sidebar/ad.lt3
97
- - themes/standard/sidebar/calendar.lt3
98
- - themes/standard/sidebar/news.lt3
99
- - themes/standard/sidebar/tag-cloud.lt3
97
+ - themes/standard/sidebar/README
98
+ - themes/standard/widgets/README
99
+ - themes/standard/widgets/ad/ad.lt3
100
+ - themes/standard/widgets/calendar/calendar.lt3
101
+ - themes/standard/widgets/news/card-news.html
102
+ - themes/standard/widgets/news/list.data
103
+ - themes/standard/widgets/news/main-news.html
104
+ - themes/standard/widgets/news/news.lt3
105
+ - themes/standard/widgets/pages/README
106
+ - themes/standard/widgets/pages/disclaim.lt3
107
+ - themes/standard/widgets/pages/faq.lt3
108
+ - themes/standard/widgets/pages/generated.lt3
109
+ - themes/standard/widgets/pages/lifestory.lt3
110
+ - themes/standard/widgets/pages/like-dislike.lt3
111
+ - themes/standard/widgets/pages/list.data
112
+ - themes/standard/widgets/pages/main.html
113
+ - themes/standard/widgets/pages/main.lt3
114
+ - themes/standard/widgets/tag-cloud/tag-cloud.lt3
100
115
  homepage: https://github.com/Hal9000/runeblog
101
116
  licenses:
102
117
  - Ruby
@@ -1,34 +0,0 @@
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
- }
@@ -1,5 +0,0 @@
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
-
@@ -1,7 +0,0 @@
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
-
@@ -1,10 +0,0 @@
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
-