runeblog 0.3.13 → 0.3.14

Sign up to get free protection for your applications and to get access to all the features.
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