runeblog 0.3.13 → 0.3.14

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/empty_view/themes/standard/banner/navbar/faq.lt3 +1 -1
  3. data/empty_view/themes/standard/blog/index.lt3 +0 -1
  4. data/lib/helpers-blog.rb +15 -0
  5. data/lib/liveblog.rb +6 -12
  6. data/lib/publish.rb +0 -1
  7. data/lib/repl.rb +4 -4
  8. data/lib/runeblog.rb +9 -4
  9. data/lib/runeblog_version.rb +1 -1
  10. data/lib/widgets/pages/pages.rb +1 -1
  11. metadata +2 -63
  12. data/empty_view/themes/standard/widgets/README +0 -4
  13. data/empty_view/themes/standard/widgets/ad/ad.lt3 +0 -22
  14. data/empty_view/themes/standard/widgets/ad/ad1.png +0 -0
  15. data/empty_view/themes/standard/widgets/ad/ad2.png +0 -0
  16. data/empty_view/themes/standard/widgets/ad/ad3.png +0 -0
  17. data/empty_view/themes/standard/widgets/ad/ad4.png +0 -0
  18. data/empty_view/themes/standard/widgets/bydates/README +0 -2
  19. data/empty_view/themes/standard/widgets/bydates/bydates.rb +0 -18
  20. data/empty_view/themes/standard/widgets/bydates/card.css +0 -1
  21. data/empty_view/themes/standard/widgets/bydates/custom.rb +0 -1
  22. data/empty_view/themes/standard/widgets/bydates/main.css +0 -2
  23. data/empty_view/themes/standard/widgets/links/README +0 -2
  24. data/empty_view/themes/standard/widgets/links/card.css +0 -1
  25. data/empty_view/themes/standard/widgets/links/custom.rb +0 -1
  26. data/empty_view/themes/standard/widgets/links/links.rb +0 -90
  27. data/empty_view/themes/standard/widgets/links/list.data +0 -3
  28. data/empty_view/themes/standard/widgets/links/main.css +0 -2
  29. data/empty_view/themes/standard/widgets/news/README +0 -2
  30. data/empty_view/themes/standard/widgets/news/card.css +0 -1
  31. data/empty_view/themes/standard/widgets/news/custom.rb +0 -1
  32. data/empty_view/themes/standard/widgets/news/list.data +0 -4
  33. data/empty_view/themes/standard/widgets/news/main.css +0 -2
  34. data/empty_view/themes/standard/widgets/news/news.rb +0 -88
  35. data/empty_view/themes/standard/widgets/pages/README +0 -2
  36. data/empty_view/themes/standard/widgets/pages/card.css +0 -1
  37. data/empty_view/themes/standard/widgets/pages/custom.rb +0 -1
  38. data/empty_view/themes/standard/widgets/pages/disclaim.lt3 +0 -10
  39. data/empty_view/themes/standard/widgets/pages/faq.lt3 +0 -41
  40. data/empty_view/themes/standard/widgets/pages/like-dislike.lt3 +0 -11
  41. data/empty_view/themes/standard/widgets/pages/list.data +0 -4
  42. data/empty_view/themes/standard/widgets/pages/local.rb +0 -0
  43. data/empty_view/themes/standard/widgets/pages/main.css +0 -2
  44. data/empty_view/themes/standard/widgets/pages/other-stuff.lt3 +0 -10
  45. data/empty_view/themes/standard/widgets/pages/pages.rb +0 -130
  46. data/empty_view/themes/standard/widgets/pinned/README +0 -2
  47. data/empty_view/themes/standard/widgets/pinned/card.css +0 -1
  48. data/empty_view/themes/standard/widgets/pinned/custom.rb +0 -1
  49. data/empty_view/themes/standard/widgets/pinned/main.css +0 -2
  50. data/empty_view/themes/standard/widgets/pinned/pinned.rb +0 -111
  51. data/empty_view/themes/standard/widgets/search/README +0 -2
  52. data/empty_view/themes/standard/widgets/search/card.css +0 -1
  53. data/empty_view/themes/standard/widgets/search/custom.rb +0 -1
  54. data/empty_view/themes/standard/widgets/search/main.css +0 -2
  55. data/empty_view/themes/standard/widgets/search/search.rb +0 -18
  56. data/empty_view/themes/standard/widgets/sitemap/README +0 -2
  57. data/empty_view/themes/standard/widgets/sitemap/card.css +0 -1
  58. data/empty_view/themes/standard/widgets/sitemap/custom.rb +0 -1
  59. data/empty_view/themes/standard/widgets/sitemap/main.css +0 -2
  60. data/empty_view/themes/standard/widgets/sitemap/sitemap.rb +0 -18
  61. data/empty_view/themes/standard/widgets/tag-cloud/OLD-example.lt3 +0 -12
  62. data/empty_view/themes/standard/widgets/tag-cloud/README +0 -2
  63. data/empty_view/themes/standard/widgets/tag-cloud/card.css +0 -1
  64. data/empty_view/themes/standard/widgets/tag-cloud/custom.rb +0 -1
  65. data/empty_view/themes/standard/widgets/tag-cloud/main.css +0 -2
  66. data/empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3 +0 -3
  67. data/empty_view/themes/standard/widgets/tag-cloud/tag-cloud.rb +0 -18
  68. data/lib/widgets/ad/ad.lt3 +0 -22
  69. data/lib/widgets/ad/ad1.png +0 -0
  70. data/lib/widgets/ad/ad2.png +0 -0
  71. data/lib/widgets/ad/ad3.png +0 -0
  72. data/lib/widgets/ad/ad4.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e22a6be6adfdd14837a0b23c07e2bddf4650521a763a9186acb1781edd1785ab
4
- data.tar.gz: 04a82d92d9392e3b1c4a610afc9ebbeed47726c0932f72936a29ef8c5fbf440b
3
+ metadata.gz: 64a729dfa24a259870fdbc4129113a907c979d7d7f4b2c60dd586bba124616f6
4
+ data.tar.gz: 43bad50390b14013c46eebe2d1f1539ead81f490c9823e396cf9f17dc1a09eff
5
5
  SHA512:
6
- metadata.gz: '08cb787718c66db9d66f53213aee5fe3d75e79c604abbeeabc977670552bbaa3bd2eaa50197b275109acb7308ca06a7f86aea7e363e57b2a4d1408d1108d2c70'
7
- data.tar.gz: bcf1ce1be7323378113ddbdef3ee4031a4a76d7af2dbf7492c8d27014010cb4c034d7a693c2ef0239e60792910dfd940ba6f46189e8260369efc7d065cd0b8df
6
+ metadata.gz: 6afa86cb6cfdaa4b0960f9249d931dca0e60a3d212c0f56d82b5ed1ca2c91006efd3fc23f518d060b096d2b257bc4bd16c7b8ebf67f70413097fa0339225b24d
7
+ data.tar.gz: 8c0d94a211aaaa39bd8916446750fedb33fd5f97a8f60bbe33b24bbd37b89dc342e3855b590548687416cccceeb36730ab131c52ae466b6fedb301bb8ac1cd87
@@ -1 +1 @@
1
- .include ../../widgets/pages/faq.lt3
1
+ .include ../../../../widgets/pages/faq.lt3
@@ -9,7 +9,6 @@
9
9
 
10
10
  .sidebar
11
11
  links
12
- ad
13
12
  pinned
14
13
  pages
15
14
  news
@@ -39,6 +39,21 @@ module RuneBlog::Helpers
39
39
  puts "dir = #{Dir.pwd}"
40
40
  end
41
41
 
42
+ def get_all_widgets(dest)
43
+ wdir = RuneBlog::Path + "/widgets" # files kept inside gem
44
+ copy!(wdir/"*", dest)
45
+ end
46
+
47
+ def get_widget(dest, widget: :all) # recursive
48
+ wdir = ".blogs/widgets"
49
+ wdir = RuneBlog::Path + "/widgets" # files kept inside gem
50
+ if widget == :all
51
+ copy!(wdir/"*", dest)
52
+ else
53
+ copy!(wdir/widget, dest)
54
+ end
55
+ end
56
+
42
57
  def copy_data(dest)
43
58
  data = RuneBlog::Path + "/../data" # files kept inside gem
44
59
  files = %w[ROOT VIEW EDITOR universal.lt3 global.lt3 features.txt]
@@ -408,7 +408,7 @@ def pin
408
408
  pinned = @_args
409
409
  @meta.pinned = pinned
410
410
  pinned.each do |pinview|
411
- dir = @blog.root/:views/pinview/"themes/standard/widgets/pinned/"
411
+ dir = @blog.root/:views/pinview/"widgets/pinned/"
412
412
  datafile = dir/"list.data"
413
413
  pins = _get_data?(datafile)
414
414
  pins << "#{@meta.num} #{@meta.title}\n"
@@ -552,7 +552,7 @@ def _make_class_name(app)
552
552
  end
553
553
 
554
554
  def _load_local(widget)
555
- Dir.chdir("widgets/#{widget}") do
555
+ Dir.chdir("../../widgets/#{widget}") do
556
556
  rclass = _make_class_name(widget)
557
557
  found = (require("./#{widget}") if File.exist?("#{widget}.rb"))
558
558
  code = found ? ::RuneBlog::Widget.class_eval(rclass) : nil
@@ -566,7 +566,7 @@ rescue => err
566
566
  end
567
567
 
568
568
  def _handle_standard_widget(tag)
569
- wtag = :widgets/tag
569
+ wtag = "../../widgets"/tag
570
570
  code = _load_local(tag)
571
571
  if code
572
572
  Dir.chdir(wtag) do
@@ -589,21 +589,15 @@ def sidebar
589
589
 
590
590
  _body do |token|
591
591
  tag = token.chomp.strip.downcase
592
- wtag = :widgets/tag
592
+ wtag = "../../widgets"/tag
593
593
  raise "Can't find #{wtag}" unless Dir.exist?(wtag)
594
594
  tcard = "#{tag}-card.html"
595
595
 
596
596
  case
597
597
  when standard.include?(tag)
598
598
  _handle_standard_widget(tag)
599
- when tag == "ad"
600
- num = rand(1..4)
601
- img = "widgets/ad/ad#{num}.png"
602
- src, dst = img, @root/:views/@view_name/"remote/widgets/ad/"
603
- system!("cp #{src} #{dst}")
604
- File.open(wtag/"vars.lt3", "w") {|f| f.puts ".set ad.image = #{img}" }
605
- preprocess cwd: wtag, src: tag, dst: tcard, call: ".nopara",
606
- force: true # , debug: true # , deps: depend
599
+ else
600
+ raise "Nonstandard widget?"
607
601
  end
608
602
 
609
603
  _include_file wtag/tcard
@@ -52,7 +52,6 @@ class RuneBlog::Publishing
52
52
  view_name = @blog.view.name
53
53
  viewpath = dir
54
54
  cmd = "rsync -r -z #{@blog.root}/views/#{@blog.view}/remote/ #@user@#@server:#{viewpath}/"
55
- puts cmd
56
55
  system!(cmd)
57
56
  check_new_posts
58
57
  dump("#{@blog.view} at #{Time.now}", "#{@blog.view.dir}/last_published")
@@ -81,7 +81,7 @@ module RuneBlog::REPL
81
81
  end
82
82
 
83
83
  def _manage_pinned # cloned from manage_links
84
- dir = @blog.view.dir/"themes/standard/widgets/pinned"
84
+ dir = @blog.view.dir/"widgets/pinned"
85
85
  data = dir/"list.data"
86
86
  edit_file(data)
87
87
  end
@@ -116,13 +116,13 @@ module RuneBlog::REPL
116
116
  end
117
117
 
118
118
  def _manage_links
119
- dir = @blog.view.dir/"themes/standard/widgets/links"
119
+ dir = @blog.view.dir/"widgets/links"
120
120
  data = dir/"list.data"
121
121
  edit_file(data)
122
122
  end
123
123
 
124
124
  def _manage_pages # FIXME move into widget code
125
- dir = @blog.view.dir/"themes/standard/widgets/pages"
125
+ dir = @blog.view.dir/"widgets/pages"
126
126
  # Assume child files already generated (and list.data??)
127
127
  data = dir/"list.data"
128
128
  lines = _get_data?(data)
@@ -376,7 +376,7 @@ module RuneBlog::REPL
376
376
  puts " ", fx(num, Red), " ", fx(title, Black)
377
377
  other = @blog._get_views(@blog.root/:drafts/draft) - [@blog.view.to_s]
378
378
  unless other.empty?
379
- print fx(" "*9 + "also in: ", Bold)
379
+ print fx(" "*9 + "also in: ", :bold)
380
380
  puts other.join(", ")
381
381
  end
382
382
  end
@@ -114,7 +114,9 @@ class RuneBlog
114
114
 
115
115
  create_dirs(repo_root)
116
116
  Dir.chdir(repo_root) do
117
- create_dirs(:data, :config, :drafts, :views, :posts)
117
+ create_dirs(:data, :config, :widgets, :drafts, :views, :posts) # ?? widgets?
118
+ # FIXME
119
+ get_all_widgets("widgets")
118
120
  new_sequence
119
121
  end
120
122
  unless File.exist?(repo_root/"data/VIEW")
@@ -361,6 +363,8 @@ class RuneBlog
361
363
  Dir.chdir(@root) do
362
364
  cmd = "cp -r #{RuneBlog::Path}/../empty_view views/#{view_name}"
363
365
  system!(cmd)
366
+ cmd = "cp -r widgets views/#{view_name}"
367
+ system!(cmd)
364
368
  end
365
369
  rescue => err
366
370
  _tmp_error(err)
@@ -660,14 +664,14 @@ class RuneBlog
660
664
  log!(enter: __method__, level: 2)
661
665
  vdir = @root/:views/view
662
666
  remote = vdir/:remote
663
- wdir = vdir/:themes/:standard/:widgets
667
+ wdir = vdir/:widgets
664
668
  widgets = Dir[wdir/"*"].select {|w| File.directory?(w) }
665
669
  widgets.each do |w|
666
670
  dir = File.basename(w)
667
- rem = w.sub(/themes.standard/, "remote")
671
+ rem = w.sub(/widgets/, "remote/widgets")
668
672
  create_dirs(rem)
669
673
  files = Dir[w/"*"]
670
- files = files.select {|x| x =~ /(html|css)$/ }
674
+ # files = files.select {|x| x =~ /(html|css)$/ }
671
675
  tag = File.basename(w)
672
676
  files.each {|file| system!("cp #{file} #{rem}", show: (tag == "zzz")) }
673
677
  end
@@ -688,6 +692,7 @@ class RuneBlog
688
692
  pdraft = @root/:posts/nslug
689
693
  remote = @root/:views/view_name/:remote
690
694
  @theme = @root/:views/view_name/:themes/:standard
695
+
691
696
  # Step 1...
692
697
  create_dirs(pdraft)
693
698
  # FIXME dependencies?
@@ -3,7 +3,7 @@ if !defined?(RuneBlog::Path)
3
3
  # if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
4
4
 
5
5
  class RuneBlog
6
- VERSION = "0.3.13"
6
+ VERSION = "0.3.14"
7
7
 
8
8
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
9
9
  Path = File.dirname(path)
@@ -87,7 +87,7 @@ class ::RuneBlog::Widget
87
87
  end
88
88
 
89
89
  def manage
90
- dir = @blog.view.dir/"themes/standard/widgets/pages"
90
+ dir = @blog.view.dir/"widgets/pages"
91
91
  # Assume child files already generated (and list.data??)
92
92
  data = dir/"list.data"
93
93
  lines = _get_data?(data)
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.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-20 00:00:00.000000000 Z
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext
@@ -142,62 +142,6 @@ files:
142
142
  - empty_view/themes/standard/post/head.lt3
143
143
  - empty_view/themes/standard/post/index.lt3
144
144
  - empty_view/themes/standard/post/permalink.lt3
145
- - empty_view/themes/standard/widgets/README
146
- - empty_view/themes/standard/widgets/ad/ad.lt3
147
- - empty_view/themes/standard/widgets/ad/ad1.png
148
- - empty_view/themes/standard/widgets/ad/ad2.png
149
- - empty_view/themes/standard/widgets/ad/ad3.png
150
- - empty_view/themes/standard/widgets/ad/ad4.png
151
- - empty_view/themes/standard/widgets/bydates/README
152
- - empty_view/themes/standard/widgets/bydates/bydates.rb
153
- - empty_view/themes/standard/widgets/bydates/card.css
154
- - empty_view/themes/standard/widgets/bydates/custom.rb
155
- - empty_view/themes/standard/widgets/bydates/main.css
156
- - empty_view/themes/standard/widgets/links/README
157
- - empty_view/themes/standard/widgets/links/card.css
158
- - empty_view/themes/standard/widgets/links/custom.rb
159
- - empty_view/themes/standard/widgets/links/links.rb
160
- - empty_view/themes/standard/widgets/links/list.data
161
- - empty_view/themes/standard/widgets/links/main.css
162
- - empty_view/themes/standard/widgets/news/README
163
- - empty_view/themes/standard/widgets/news/card.css
164
- - empty_view/themes/standard/widgets/news/custom.rb
165
- - empty_view/themes/standard/widgets/news/list.data
166
- - empty_view/themes/standard/widgets/news/main.css
167
- - empty_view/themes/standard/widgets/news/news.rb
168
- - empty_view/themes/standard/widgets/pages/README
169
- - empty_view/themes/standard/widgets/pages/card.css
170
- - empty_view/themes/standard/widgets/pages/custom.rb
171
- - empty_view/themes/standard/widgets/pages/disclaim.lt3
172
- - empty_view/themes/standard/widgets/pages/faq.lt3
173
- - empty_view/themes/standard/widgets/pages/like-dislike.lt3
174
- - empty_view/themes/standard/widgets/pages/list.data
175
- - empty_view/themes/standard/widgets/pages/local.rb
176
- - empty_view/themes/standard/widgets/pages/main.css
177
- - empty_view/themes/standard/widgets/pages/other-stuff.lt3
178
- - empty_view/themes/standard/widgets/pages/pages.rb
179
- - empty_view/themes/standard/widgets/pinned/README
180
- - empty_view/themes/standard/widgets/pinned/card.css
181
- - empty_view/themes/standard/widgets/pinned/custom.rb
182
- - empty_view/themes/standard/widgets/pinned/main.css
183
- - empty_view/themes/standard/widgets/pinned/pinned.rb
184
- - empty_view/themes/standard/widgets/search/README
185
- - empty_view/themes/standard/widgets/search/card.css
186
- - empty_view/themes/standard/widgets/search/custom.rb
187
- - empty_view/themes/standard/widgets/search/main.css
188
- - empty_view/themes/standard/widgets/search/search.rb
189
- - empty_view/themes/standard/widgets/sitemap/README
190
- - empty_view/themes/standard/widgets/sitemap/card.css
191
- - empty_view/themes/standard/widgets/sitemap/custom.rb
192
- - empty_view/themes/standard/widgets/sitemap/main.css
193
- - empty_view/themes/standard/widgets/sitemap/sitemap.rb
194
- - empty_view/themes/standard/widgets/tag-cloud/OLD-example.lt3
195
- - empty_view/themes/standard/widgets/tag-cloud/README
196
- - empty_view/themes/standard/widgets/tag-cloud/card.css
197
- - empty_view/themes/standard/widgets/tag-cloud/custom.rb
198
- - empty_view/themes/standard/widgets/tag-cloud/main.css
199
- - empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3
200
- - empty_view/themes/standard/widgets/tag-cloud/tag-cloud.rb
201
145
  - lib/Javascript.stuff
202
146
  - lib/helpers-blog.rb
203
147
  - lib/helpers-repl.rb
@@ -213,11 +157,6 @@ files:
213
157
  - lib/runeblog_version.rb
214
158
  - lib/view.rb
215
159
  - lib/widgets/README
216
- - lib/widgets/ad/ad.lt3
217
- - lib/widgets/ad/ad1.png
218
- - lib/widgets/ad/ad2.png
219
- - lib/widgets/ad/ad3.png
220
- - lib/widgets/ad/ad4.png
221
160
  - lib/widgets/bydates/README
222
161
  - lib/widgets/bydates/bydates.rb
223
162
  - lib/widgets/bydates/card.css
@@ -1,4 +0,0 @@
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.
@@ -1,22 +0,0 @@
1
- . In real life, ads won't work this way...
2
-
3
- .include vars.lt3
4
-
5
- .set classname="btn btn-light float-right"
6
- .set card.title="Advertisement"
7
- .set card.text="Build your amazing website with blabla.com."
8
- . set extra="bg-dark text-white"
9
-
10
- <!-- "$ad.image" -->
11
-
12
- <div class="card $extra mb-3">
13
- <div class="card-body">
14
- <!--
15
- <h5 class="card-title">$card.title</h5>
16
- <p class="card-text">$card.text</p>
17
- <a href="javascript: void(0)" onclick="javascript:open_main('widgets/ad/ad.html')" class="$classname">Visit page</a>
18
- -->
19
- <img style="max-height: 100%; max-width: 100%" src="$ad.image"></img>
20
- </div>
21
- </div>
22
-
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1,18 +0,0 @@
1
- # Custom code for 'bydates' widget
2
-
3
- class ::RuneBlog::Widget
4
- class Bydates
5
- def initialize(repo)
6
- @blog = repo
7
- end
8
-
9
- def build
10
- end
11
-
12
- def edit_menu
13
- end
14
-
15
- def refresh
16
- end
17
- end
18
- end
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- bosy { font-family: verdana }
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,90 +0,0 @@
1
- # Custom code for 'links' widget
2
-
3
- require 'liveblog'
4
-
5
- class ::RuneBlog::Widget
6
- class Links
7
- Type, Title = "links", "External links"
8
-
9
- def initialize(repo)
10
- @blog = repo
11
- @datafile = input = "list.data"
12
- @lines = _get_data(@datafile)
13
- end
14
-
15
- def build
16
- write_main
17
- write_card
18
- end
19
-
20
- def _html_body(file, css = nil)
21
- file.puts "<html>"
22
- if css
23
- file.puts " <head>"
24
- file.puts " <style>\n#{css}\n </style>"
25
- file.puts " </head>"
26
- end
27
- file.puts " <body>"
28
- yield
29
- file.puts " </body>\n</html>"
30
- end
31
-
32
- def write_main
33
- @data = @lines.map! {|x| x.chomp.split(/, */, 3) }
34
- css = "body { font-family: verdana }"
35
- card_title = Title
36
- File.open("#{Type}-main.html", "w") do |f|
37
- _html_body(f, css) do
38
- f.puts "<h1>#{card_title}</h1><br><hr>"
39
- url_ref = nil
40
- @data.each do |url, frameable, title|
41
- url_ref = "href = '#{url}'"
42
- url_ref << " target=blank" if frameable == "yes"
43
- css = "color: #8888FF; text-decoration: none; font-size: 21px"
44
- f.puts %[<a style="#{css}" #{url_ref}>#{title}</a> <br>]
45
- end
46
- end
47
- end
48
- end
49
-
50
- def write_card
51
- tag = "links"
52
- url = :widgets/tag/tag+"-main.html"
53
- card_title = "External links" # FIXME
54
- cardfile = "#{Type}-card"
55
- File.open("#{cardfile}.html", "w") do |f|
56
- f.puts <<-EOS
57
- <div class="card mb-3">
58
- <div class="card-body">
59
- <h5 class="card-title">
60
- <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="##{tag}">+</button>
61
- <a href="javascript: void(0)"
62
- onclick="javascript:open_main('#{url}')"
63
- style="text-decoration: none; color: black"> #{card_title}</a>
64
- </h5>
65
- <div class="collapse" id="#{tag}">
66
- EOS
67
- @data.each do |url2, frameable, title|
68
- f.puts "<!-- #{[url2, frameable, title].inspect} -->"
69
- main_ref = %[href="javascript: void(0)" onclick="javascript:open_main('#{url2}')"]
70
- tab_ref = %[href="#{url2}"]
71
- url_ref = (frameable == "yes") ? main_ref : tab_ref
72
- anchor = %[<a #{url_ref}>#{title}</a>]
73
- wrapper = %[<li class="list-group-item">#{anchor}</li>]
74
- f.puts wrapper
75
- end
76
- f.puts <<-EOS
77
- </div>
78
- </div>
79
- </div>
80
- EOS
81
- end
82
- end
83
-
84
- def edit_menu
85
- end
86
-
87
- def refresh
88
- end
89
- end
90
- end
@@ -1,3 +0,0 @@
1
- https://www.mensa.org, no, Mensa International
2
- http://space.com, yes, Space.com: NASA, Space Exploration and Astronomy News
3
- https://arstechnica.com, no, Ars Technica
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,4 +0,0 @@
1
- https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/, yes, 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/, yes, SpaceX’s orbital Starship prototype construction progress detailed in new photos
3
- https://developers.googleblog.com/2019/05/Flutter-io19.html, yes, Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
4
- https://jaycarlson.net/microcontrollers/, no, The Amazing \$1 Microcontroller (2017)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,88 +0,0 @@
1
- # Custom code for 'news' widget
2
-
3
- class ::RuneBlog::Widget
4
- class News
5
- Type, Title = "news", "News"
6
-
7
- def initialize(repo)
8
- @blog = repo
9
- @datafile = "list.data"
10
- lines = _get_data(@datafile)
11
- @data = lines.map {|line| line.chomp.split(/, */) }
12
- end
13
-
14
- def build
15
- write_main
16
- write_card
17
- end
18
-
19
- def _html_body(file, css = nil)
20
- file.puts "<html>"
21
- if css
22
- file.puts " <head>"
23
- file.puts " <style>\n#{css}\n </style>"
24
- file.puts " </head>"
25
- end
26
- file.puts " <body>"
27
- yield
28
- file.puts " </body>\n</html>"
29
- end
30
-
31
- def write_main
32
- mainfile = "#{Type}-main"
33
- css = "body { font-family: verdana }"
34
- File.open("#{mainfile}.html", "w") do |f|
35
- _html_body(f, css) do
36
- f.puts "<h1>#{Title}</h1><br><hr>"
37
- @data.each do |file, frameable, title|
38
- title = title.gsub(/\\/, "") # kludge
39
- case frameable
40
- when "yes"; url_ref = "href = '#{file}'"
41
- when "no"; url_ref = %[href='#{file}' target='blank']
42
- end
43
- css = "color: #8888FF; text-decoration: none; font-size: 21px"
44
- f.puts %[<a style="#{css}" #{url_ref}>#{title}</a> <br>]
45
- end
46
- end
47
- end
48
- end
49
-
50
- def write_card
51
- cardfile = "#{Type}-card"
52
- url = "widgets/#{Type}/#{Type}-main.html"
53
- File.open("#{cardfile}.html", "w") do |f|
54
- f.puts <<-EOS
55
- <div class="card mb-3">
56
- <div class="card-body">
57
- <h5 class="card-title">
58
- <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="##{Type}">+</button>
59
- <a href="javascript: void(0)"
60
- onclick="javascript:open_main('#{url}')"
61
- style="text-decoration: none; color: black"> #{Title}</a>
62
- </h5>
63
- <div class="collapse" id="#{Type}">
64
- EOS
65
- @data.each do |file, frameable, title|
66
- case frameable
67
- when "yes"; url_ref = _main(file) # remote, frameable
68
- when "no"; url_ref = _blank(file) # remote, not frameable
69
- end
70
- anchor = %[<a #{url_ref}>#{title}</a>]
71
- wrapper = %[<li class="list-group-item">#{anchor}</li>]
72
- f.puts wrapper
73
- end
74
- f.puts <<-EOS
75
- </div>
76
- </div>
77
- </div>
78
- EOS
79
- end
80
- end
81
-
82
- def edit_menu
83
- end
84
-
85
- def refresh
86
- end
87
- end
88
- end
@@ -1,2 +0,0 @@
1
- This is a work in progress...
2
-
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,10 +0,0 @@
1
- .mixin liveblog
2
-
3
- <h2>Disclaimer</h2>
4
-
5
- This is just a
6
- dummy file
7
-
8
- disclaimer, blah blah
9
-
10
- .backlink
@@ -1,41 +0,0 @@
1
- .nopara # FIXME later
2
- .mixin liveblog
3
-
4
- <html>
5
- <head>
6
-
7
- <style>
8
- body { font-family: verdana }
9
- </style>
10
-
11
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
12
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"></link>
13
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap-theme.min.css"></link>
14
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
15
-
16
- </head>
17
-
18
- <body>
19
-
20
- <h2>Frequently Asked Questions</h2>
21
-
22
- .faq Are you a rabbit?
23
- Yes, I am.
24
- .end
25
-
26
- .faq Are you a frog?
27
- Don't be stupid. I just told you I was a rabbit.
28
- .end
29
-
30
- .faq Why do you answer a question with a question?
31
- *Do I in fact answer a question with a question?
32
- .end
33
-
34
- .faq Are you serious?
35
- No, I'm a rabbit.
36
- .end
37
-
38
- .backlink
39
-
40
- </body>
41
- </html>
@@ -1,11 +0,0 @@
1
- .mixin liveblog
2
-
3
- <h2>My Likes and Dislikes</h2>
4
-
5
- This is
6
- stuff that I
7
- like
8
- and
9
- dislike...
10
-
11
- .backlink
@@ -1,4 +0,0 @@
1
- faq.html,Frequently Asked Questions
2
- like-dislike.html,Likes and Dislikes
3
- disclaim.html,Disclaimer
4
- other-stuff.html,Other Stuff
@@ -1,2 +0,0 @@
1
- # CSS for pages widget
2
- body { font-family: verdana }
@@ -1,10 +0,0 @@
1
- .mixin liveblog
2
-
3
- <h2>Other Stuff</h2>
4
-
5
- This is
6
- just
7
- some
8
- other stuff...
9
-
10
- .backlink
@@ -1,130 +0,0 @@
1
- # Custom code for 'pages' widget
2
-
3
- # How to update repl code?
4
-
5
- class ::RuneBlog::Widget
6
- class Pages
7
- Type, Title = "pages", "My Pages"
8
-
9
- def initialize(repo)
10
- @blog = repo
11
- @datafile = "list.data"
12
- @lines = _get_data(@datafile)
13
- @data = @lines.map {|x| x.chomp.split(/, */, 2) }
14
- end
15
-
16
- def build
17
- # build child pages
18
- children = Dir["*.lt3"] - ["pages.lt3"]
19
- children.each do |child|
20
- dest = child.sub(/.lt3$/, ".html")
21
- preprocess src: child, dst: dest
22
- end
23
- write_main
24
- write_card
25
- end
26
-
27
- def _html_body(file, css = nil)
28
- file.puts "<html>"
29
- if css
30
- file.puts " <head>"
31
- file.puts " <style>\n#{css}\n </style>"
32
- file.puts " </head>"
33
- end
34
- file.puts " <body>"
35
- yield
36
- file.puts " </body>\n</html>"
37
- end
38
-
39
- def write_main
40
- css = "body { font-family: verdana }"
41
- card_title = Title
42
- File.open("#{Type}-main.html", "w") do |f|
43
- _html_body(f, css) do
44
- f.puts "<h1>#{card_title}</h1><br><hr>"
45
- url_ref = nil
46
- @data.each do |url, title|
47
- url_ref = "href = '#{url}'"
48
- css = "color: #8888FF; text-decoration: none; font-size: 21px"
49
- f.puts %[<a style="#{css}" #{url_ref}>#{title}</a> <br>]
50
- end
51
- end
52
- end
53
- end
54
-
55
- def write_card
56
- tag = Type
57
- url = :widgets/tag/tag+"-main.html"
58
- card_title = "Pages" # FIXME
59
- cardfile = "#{Type}-card"
60
- File.open("#{cardfile}.html", "w") do |f|
61
- f.puts <<-EOS
62
- <div class="card mb-3">
63
- <div class="card-body">
64
- <h5 class="card-title">
65
- <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="##{tag}">+</button>
66
- <a href="javascript: void(0)"
67
- onclick="javascript:open_main('#{url}')"
68
- style="text-decoration: none; color: black">#{card_title}</a>
69
- </h5>
70
- <div class="collapse" id="#{tag}">
71
- EOS
72
- @data.each do |url2, title|
73
- f.puts "<!-- #{[url2, title].inspect} -->"
74
- url3 = :widgets/tag/url2
75
- f.puts "<!-- url3 = #{url3.inspect} -->"
76
- url_ref = %[href="javascript: void(0)" onclick="javascript:open_main('#{url3}')"]
77
- anchor = %[<a #{url_ref}>#{title}</a>]
78
- wrapper = %[<li class="list-group-item">#{anchor}</li>]
79
- f.puts wrapper
80
- end
81
- f.puts <<-EOS
82
- </div>
83
- </div>
84
- </div>
85
- EOS
86
- end
87
- end
88
-
89
- def manage
90
- dir = @blog.view.dir/"themes/standard/widgets/pages"
91
- # Assume child files already generated (and list.data??)
92
- data = dir/"list.data"
93
- lines = _get_data?(data)
94
- hash = {}
95
- lines.each do |line|
96
- url, name = line.chomp.split(",")
97
- source = url.sub(/.html$/, ".lt3")
98
- hash[name] = source
99
- end
100
- new_item = "[New page]"
101
- num, fname = STDSCR.menu(title: "Edit page:", items: hash.keys + [new_item])
102
- return if fname.nil?
103
- if fname == new_item
104
- print "Page title: "
105
- title = RubyText.gets
106
- title.chomp!
107
- print "File name (.lt3): "
108
- fname = RubyText.gets
109
- fname << ".lt3" unless fname.end_with?(".lt3")
110
- fhtml = fname.sub(/.lt3$/, ".html")
111
- File.open(data, "a") {|f| f.puts "#{fhtml},#{title}" }
112
- new_file = dir/fname
113
- File.open(new_file, "w") do |f|
114
- f.puts "<h1>#{title}</h1>\n\n\n "
115
- f.puts ".backlink"
116
- end
117
- edit_file(new_file)
118
- else
119
- target = hash[fname]
120
- edit_file(dir/target)
121
- end
122
- end
123
-
124
- def edit_menu
125
- end
126
-
127
- def refresh
128
- end
129
- end
130
- end
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,111 +0,0 @@
1
- # Custom code for 'pinned' widget
2
-
3
- class ::RuneBlog::Widget
4
- class Pinned
5
- Type, Title = "pinned", "Pinned posts"
6
-
7
- def initialize(repo)
8
- @blog = repo
9
- @datafile = "list.data"
10
- @lines = _get_data?(@datafile)
11
- end
12
-
13
- def read_metadata
14
- meta = read_pairs!("metadata.txt")
15
- meta.views = meta.views.split
16
- meta.tags = meta.tags.split
17
- meta
18
- end
19
-
20
- def _html_body(file, css = nil) # FIXME
21
- file.puts "<html>"
22
- if css
23
- file.puts " <head>"
24
- file.puts " <style>\n#{css}\n </style>"
25
- file.puts " </head>"
26
- end
27
- file.puts " <body>"
28
- yield
29
- file.puts " </body>\n</html>"
30
- end
31
-
32
- def build
33
- dir = @blog.root/:posts
34
- posts = nil
35
- Dir.chdir(dir) { posts = Dir["*"] }
36
- hash = {}
37
- @links = []
38
- @lines.each do |x|
39
- num, title = x.chomp.split(" ", 2)
40
- hash[num] = title
41
- pre = '%04d' % num
42
- nslug = posts.grep(/#{pre}-/).first
43
- meta = nil
44
- Dir.chdir(dir/nslug) { meta = read_metadata }
45
- pubdate = meta.pubdate
46
- name = nslug[5..-1]
47
- link = name+".html"
48
- @links << [pubdate, title, link]
49
- end
50
- write_main
51
- write_card
52
- end
53
-
54
- def write_main
55
- tag = Type
56
- card_title = Title
57
- css = "body { font-family: verdana }"
58
- mainfile = "#{tag}-main"
59
- File.open("#{mainfile}.html", "w") do |f|
60
- _html_body(f, css) do
61
- f.puts "<!-- #{@lines.inspect} in #{Dir.pwd} -->"
62
- f.puts "<h1>#{card_title}</h1><br><hr>"
63
- @links.each do |pubdate, title, file|
64
- title = title.gsub(/\\/, "") # kludge
65
- css = "color: #8888FF; text-decoration: none; font-size: 21px"
66
- f.puts "<!-- pubdate = #{pubdate.inspect} -->"
67
- f.puts %[#{pubdate} <a style="#{css}" href="../../#{file}">#{title}</a> <br>]
68
- end
69
- end
70
- end
71
- end
72
-
73
- def write_card
74
- tag = Type
75
- url = :widgets/tag/tag+"-main.html"
76
- card_title = Title
77
- cardfile = "#{tag}-card"
78
- File.open("#{cardfile}.html", "w") do |f|
79
- f.puts <<-EOS
80
- <div class="card mb-3">
81
- <div class="card-body">
82
- <h5 class="card-title">
83
- <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="##{tag}">+</button>
84
- <a href="javascript: void(0)"
85
- onclick="javascript:open_main('#{url}')"
86
- style="text-decoration: none; color: black"> #{card_title}</a>
87
- </h5>
88
- <div class="collapse" id="#{tag}">
89
- EOS
90
- @links.each do |pubdate, title, file|
91
- url2 = file
92
- url_ref = %[href="javascript: void(0)" onclick="javascript:open_main('#{url2}')"]
93
- anchor = %[<a #{url_ref}>#{title}</a>]
94
- wrapper = %[<li class="list-group-item">#{anchor}</li>]
95
- f.puts wrapper
96
- end
97
- f.puts <<-EOS
98
- </div>
99
- </div>
100
- </div>
101
- EOS
102
- end
103
- end
104
-
105
- def edit_menu
106
- end
107
-
108
- def refresh
109
- end
110
- end
111
- end
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,18 +0,0 @@
1
- # Custom code for 'search' widget
2
-
3
- class ::RuneBlog::Widget
4
- class Search
5
- def initialize(repo)
6
- @blog = repo
7
- end
8
-
9
- def build
10
- end
11
-
12
- def edit_menu
13
- end
14
-
15
- def refresh
16
- end
17
- end
18
- end
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,18 +0,0 @@
1
- # Custom code for 'sitemap' widget
2
-
3
- class ::RuneBlog::Widget
4
- class Sitemap
5
- def initialize(repo)
6
- @blog = repo
7
- end
8
-
9
- def build
10
- end
11
-
12
- def edit_menu
13
- end
14
-
15
- def refresh
16
- end
17
- end
18
- end
@@ -1,12 +0,0 @@
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
-
@@ -1,2 +0,0 @@
1
- This is for a "standard" Runeblog widget
2
- Code and docs are a work in progress
@@ -1 +0,0 @@
1
- # CSS for sidebar card
@@ -1 +0,0 @@
1
- # This is for specialized livetext add-ons (Ruby methods)
@@ -1,2 +0,0 @@
1
- # CSS for main area page
2
- body { font-family: verdana }
@@ -1,3 +0,0 @@
1
- .mixin liveblog
2
-
3
- <h3>Currently nothing here -- not implemented</h3)
@@ -1,18 +0,0 @@
1
- # Custom code for 'tag-cloud' widget
2
-
3
- class ::RuneBlog::Widget
4
- class TagCloud
5
- def initialize(repo)
6
- @blog = repo
7
- end
8
-
9
- def build
10
- end
11
-
12
- def edit_menu
13
- end
14
-
15
- def refresh
16
- end
17
- end
18
- end
@@ -1,22 +0,0 @@
1
- . In real life, ads won't work this way...
2
-
3
- .include vars.lt3
4
-
5
- .set classname="btn btn-light float-right"
6
- .set card.title="Advertisement"
7
- .set card.text="Build your amazing website with blabla.com."
8
- . set extra="bg-dark text-white"
9
-
10
- <!-- "$ad.image" -->
11
-
12
- <div class="card $extra mb-3">
13
- <div class="card-body">
14
- <!--
15
- <h5 class="card-title">$card.title</h5>
16
- <p class="card-text">$card.text</p>
17
- <a href="javascript: void(0)" onclick="javascript:open_main('widgets/ad/ad.html')" class="$classname">Visit page</a>
18
- -->
19
- <img style="max-height: 100%; max-width: 100%" src="$ad.image"></img>
20
- </div>
21
- </div>
22
-
Binary file
Binary file
Binary file
Binary file