runeblog 0.2.99 → 0.3.01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d65eb398cbd787046ff303ec0d045c6f3abac93b31c165bf102e54d4239f23c
4
- data.tar.gz: 036b16fbc5c3aeae33dd0483f1e5415f93f1cbc8852c78d43c79c87458b233e8
3
+ metadata.gz: ec29df304d77421321cba06f651b2f9111815d2d8c4db26a82c83de2e19a3b3b
4
+ data.tar.gz: 24e7358402b1f4709d04da4fea0f6fbcbf53a94aa5b8ef3ebf0b2ac21a8418cd
5
5
  SHA512:
6
- metadata.gz: 87c32ca6cb9ed8c7245178726cac650ebd1f2470f09f59cc89b3705496a7dd88503f3dce7fdd78ba26052894861aa69cc3dbf0f8be462699f7bfbe3738f2fc7f
7
- data.tar.gz: 968b1a74bac6320060a1ffa4bdc0d3e747c450dcdd032842533f3f4d05815eecfdbada1a71c211e07b81cc1b0be3c8d0dc65d7326bbcfe3a4dcd7c062fae32fb
6
+ metadata.gz: 696f296668f2246f381caf84fa82366edc73a890ac86b558bd02a008b0c9d1f34a96ac69735b71981b266032fc9e713c26f5b497ac030d1aa35cdd2884967f9a
7
+ data.tar.gz: a66ce19884a600b1071463c4c3a344f84a2a9e9edc4f15cf2b3384d81163c550ca173cb0279d09f8a8b0b0685e1ceb55427d7a7d8b63d9256cb30843ea175f75
data/bin/blog CHANGED
@@ -25,13 +25,14 @@ end
25
25
  def get_universal
26
26
  univ = "#{@blog.root}/data/universal.lt3"
27
27
  if yesno("Faster initial setup? (no: edit universal.lt3)")
28
- author = ask!("Author name: ")
29
- site = ask!("Site/domain: ")
28
+ author = ask!(" Author name: ")
29
+ site = ask!(" Site/domain: ")
30
30
  # Now stash it...
31
31
  str = File.read(univ)
32
32
  str = str.gsub(/AUTHOR/, author)
33
33
  str = str.gsub(/SITE_DOMAIN/, site)
34
34
  File.write(univ, str)
35
+ # STDERR.puts "------ universal ------\n#{`cat #{univ}`}\n------------------------"
35
36
  else
36
37
  vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(AUTHOR.*\|SITE.*\)"'
37
38
  edit_file(univ, vim: vim_params)
@@ -40,18 +41,20 @@ end
40
41
 
41
42
  def get_global
42
43
  if yesno("Faster view setup? (no: edit global.lt3)")
43
- view_name = ask!("\nFilename: ")
44
+ view_name = ask!("\n Filename: ")
44
45
  @blog.create_view(view_name) # call change_view??
45
- title = ask!("View title: ")
46
- subtitle = ask!("Subtitle : ")
47
- gname = "#{@blog.root}/views/#{view_name}/themes/standard/global.lt3"
48
- text = File.read(gname)
49
- text = text.gsub(/VIEW_NAME/, view_name)
50
- text = text.gsub(/VIEW_TITLE/, title)
51
- text = text.gsub(/VIEW_SUBTITLE/, subtitle)
52
- File.write(gname, text)
46
+ title = ask!(" View title: ")
47
+ subtitle = ask!(" Subtitle : ")
48
+ domain = ask!(" Domain : ")
49
+
50
+ vfile = "#{@blog.root}/views/#{view_name}/settings/view.txt"
51
+ hash = {/VIEW_NAME/ => view_name,
52
+ /VIEW_TITLE/ => title,
53
+ /VIEW_SUBTITLE/ => subtitle,
54
+ /VIEW_DOMAIN/ => domain}
55
+ @blog.complete_file(vfile, nil, hash)
53
56
  else
54
- view_name = ask!("\nFilename: ")
57
+ view_name = ask!("\n Filename: ")
55
58
  @blog.create_view(view_name) # call change_view??
56
59
  vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
57
60
  edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
@@ -0,0 +1,18 @@
1
+ # 0 = disabled (installed but disabled)
2
+ # 1 = enabled (implies installed)
3
+ # x = excluded (not installed; does it even exist?)
4
+
5
+ reddit 1 # autopost, embed thread after blog post
6
+ facebook 0 # reader-like, reader post, autopost?
7
+ twitter 0 # reader-tweet, reader-follow, autotweet?
8
+
9
+ links 1 # widget: external links
10
+ news 1 # widget: news (external)
11
+ pages 1 # widget: internal pages
12
+ pinned 1 # widget: pinned posts
13
+
14
+ ad x # widget: embed advertising
15
+ bydates x # widget: browse posts by date
16
+ search x # widget: search posts
17
+ sitemap x # widget: site map
18
+ tag_cloud x # widget: tag cloud (clickable)
@@ -3,12 +3,13 @@
3
3
  . <variable> <value>
4
4
  . --------------------------------------------------
5
5
 
6
- .variables
7
- author AUTHOR
8
- blog VIEW_TITLE
9
- blog.desc VIEW_SUBTITLE
10
- site SITE
6
+ .variables view ../../settings/view.txt
7
+
8
+ .variables recent ../../settings/recent.txt
9
+
10
+ .variables publish ../../settings/publish.txt
11
11
 
12
+ .variables
12
13
  host http://SITE
13
14
  charset utf-8
14
15
  url http://SITE
@@ -17,22 +18,3 @@ locale en_US
17
18
  font.family verdana
18
19
  .end
19
20
 
20
- .variables recent
21
- title.color #010101
22
- title.size 28px
23
-
24
- text.color #0101a1
25
- text.size 22px
26
-
27
- date.color #9a9a9a
28
- date.size 15px
29
- .end
30
-
31
- .variables publish
32
- user root
33
- server SITE
34
- docroot /var/www/
35
- path VIEW_NAME
36
- proto http
37
- .end
38
-
@@ -8,14 +8,11 @@
8
8
  .nopara
9
9
 
10
10
  .variables
11
- . Identity
12
- author AUTHOR
13
- site SITE_DOMAIN
11
+ univ.author AUTHOR
12
+ univ.site SITE_DOMAIN
14
13
 
15
- . Style
16
14
  font.family verdana
17
15
 
18
- . Details
19
16
  charset utf-8
20
17
  locale en_US
21
18
  .end
@@ -0,0 +1,18 @@
1
+ # 0 = disabled (installed but disabled)
2
+ # 1 = enabled (implies installed)
3
+ # x = excluded (not installed; does it even exist?)
4
+
5
+ reddit 1 # autopost, embed thread after blog post
6
+ facebook 0 # reader-like, reader post, autopost?
7
+ twitter 0 # reader-tweet, reader-follow, autotweet?
8
+
9
+ links 1 # widget: external links
10
+ news 1 # widget: news (external)
11
+ pages 1 # widget: internal pages
12
+ pinned 1 # widget: pinned posts
13
+
14
+ ad x # widget: embed advertising
15
+ bydates x # widget: browse posts by date
16
+ search x # widget: search posts
17
+ sitemap x # widget: site map
18
+ tag_cloud x # widget: tag cloud (clickable)
@@ -0,0 +1,5 @@
1
+ user root
2
+ server SITE
3
+ docroot /var/www/html
4
+ path VIEW_NAME # can be different
5
+ proto https
@@ -0,0 +1,6 @@
1
+ title.color #010101
2
+ title.size 28px
3
+ text.color #0101a1
4
+ text.size 22px
5
+ date.color #9a9a9a
6
+ date.size 15px
@@ -0,0 +1,4 @@
1
+ author VIEW_AUTHOR
2
+ title VIEW_TITLE
3
+ subtitle VIEW_SUBTITLE
4
+ site VIEW_SITE
@@ -15,6 +15,6 @@
15
15
 
16
16
  <rect x="20" y="20" rx="15" ry="15" width="98%" height="100" fill="url(#grad1)"/>
17
17
 
18
- <text x="45" y="70" class=heavy>$blog</text>
19
- <text x="45" y="98" class=small>$blog.desc</text>
18
+ <text x="45" y="70" class=heavy>$view.title</text>
19
+ <text x="45" y="98" class=small>$view.subtitle</text>
20
20
  </svg>
@@ -14,6 +14,18 @@ module RuneBlog::Helpers
14
14
  exit
15
15
  end
16
16
 
17
+ def read_features
18
+ hash = {}
19
+ file = @root/self.view/"settings/features.txt"
20
+ lines = File.readlines(file)
21
+ lines.each do |line|
22
+ char, line = line[0], line[1..-1].chomp
23
+ name = line.strip
24
+ hash[name] = (char != "-")
25
+ end
26
+ @features = hash
27
+ end
28
+
17
29
  def get_repo_config
18
30
  log!(enter: __method__, level: 3)
19
31
  @editor = File.read(".blogs/data/EDITOR").chomp
@@ -47,14 +59,15 @@ module RuneBlog::Helpers
47
59
  line = line.strip
48
60
  next if skip.include?(line[0])
49
61
  key, val = line.split(" ", 2)
50
- hash[key] = val
62
+ next if key.nil?
63
+ hash[key] = hash[key.to_sym] = val
51
64
  end
52
65
  hash
53
66
  rescue => err
54
67
  puts "Can't read vars file '#{file}': #{err}"
55
68
  puts err.backtrace.join("\n")
56
69
  puts "dir = #{Dir.pwd}"
57
- stop_RubyText
70
+ stop_RubyText rescue nil
58
71
  end
59
72
 
60
73
  def read_config(file, *syms)
@@ -111,15 +124,6 @@ module RuneBlog::Helpers
111
124
  File.write(root + "/data/EDITOR", editor + "\n")
112
125
  end
113
126
 
114
- # def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
115
- # log!(enter: __method__, args: [root, current_view, editor], level: 3)
116
- # root = Dir.pwd + "/" + root
117
- # x = OpenStruct.new
118
- # x.root, x.current_view, x.editor = root, current_view, editor
119
- # write_config(x, root + "/" + RuneBlog::ConfigFile)
120
- # write_repo_config
121
- # end
122
-
123
127
  def new_sequence
124
128
  log!(enter: __method__, level: 3)
125
129
  dump(0, "data/sequence")
@@ -72,7 +72,7 @@ def post_trailer
72
72
  tags = _var("post.tags")
73
73
  taglist = tags.empty? ? "" : "Tags: #{tags}"
74
74
 
75
- reddit_enabled = false # FIXME
75
+ reddit_enabled = @blog.features["reddit"] rescue nil
76
76
  reddit_txt = ""
77
77
  if reddit_enabled
78
78
  vdir = @blog.root/:views/@blog.view
@@ -241,8 +241,8 @@ def _svg_title(*args)
241
241
  .subtitle { font: #{style2} #{size2} #{font2}; fill: #{color2} }
242
242
  </style>
243
243
  <rect x="10" y="10" rx="10" ry="10" width="#{width}" height="#{height}" fill="url(#grad1)"/>
244
- <text text-anchor="#{align}" x="#{x}" y="#{y}" class="title">#{Livetext::Vars[:blog]} </text>
245
- <text text-anchor="#{align2}" x="#{x2}" y="#{y2}" class="subtitle">#{Livetext::Vars["blog.desc"]} </text>
244
+ <text text-anchor="#{align}" x="#{x}" y="#{y}" class="title">#{Livetext::Vars["view.title"]} </text>
245
+ <text text-anchor="#{align2}" x="#{x2}" y="#{y2}" class="subtitle">#{Livetext::Vars["view.subtitle"]} </text>
246
246
  </svg>
247
247
  <!-- ^ how does syntax highlighting get messed up? </svg> -->
248
248
  HTML
@@ -446,18 +446,18 @@ def head # Does NOT output tags
446
446
  defaults = {}
447
447
  defaults = { "charset" => %[<meta charset="utf-8">],
448
448
  "http-equiv" => %[<meta http-equiv="X-UA-Compatible" content="IE=edge">],
449
- "title" => %[<title>\n #{_var(:blog)} | #{_var("blog.desc")}\n </title>],
449
+ "title" => %[<title>\n #{_var("view.title")} | #{_var("view.subtitle")}\n </title>],
450
450
  "generator" => %[<meta name="generator" content="Runeblog v #@version">],
451
- "og:title" => %[<meta property="og:title" content="#{_var(:blog)}">],
451
+ "og:title" => %[<meta property="og:title" content="#{_var("view.title")}">],
452
452
  "og:locale" => %[<meta property="og:locale" content="#{_var(:locale)}">],
453
- "description" => %[<meta name="description" content="#{_var("blog.desc")}">],
454
- "og:description" => %[<meta property="og:description" content="#{_var("blog.desc")}">],
453
+ "description" => %[<meta name="description" content="#{_var("view.subtitle")}">],
454
+ "og:description" => %[<meta property="og:description" content="#{_var("view.subtitle")}">],
455
455
  "linkc" => %[<link rel="canonical" href="#{_var(:host)}">],
456
456
  "og:url" => %[<meta property="og:url" content="#{_var(:host)}">],
457
- "og:site_name" => %[<meta property="og:site_name" content="#{_var(:blog)}">],
457
+ "og:site_name" => %[<meta property="og:site_name" content="#{_var("view.title")}">],
458
458
  # "style" => %[<link rel="stylesheet" href="etc/blog.css">],
459
459
  # ^ FIXME
460
- "feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var(:blog)}">],
460
+ "feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var("view.title")}">],
461
461
  "favicon" => %[<link rel="shortcut icon" type="image/x-icon" href="etc/favicon.ico">\n <link rel="apple-touch-icon" href="etc/favicon.ico">]
462
462
  }
463
463
  result = {}
@@ -689,7 +689,7 @@ end
689
689
 
690
690
  def _make_navbar(orient = :horiz)
691
691
  vdir = @root/:views/@blog.view
692
- title = _var(:blog)
692
+ title = _var("view.title")
693
693
 
694
694
  if orient == :horiz
695
695
  name = "navbar.html"
@@ -16,6 +16,8 @@ class RuneBlog::Publishing
16
16
  @blog = RuneBlog.blog
17
17
  dir = @blog.root/:views/view/"themes/standard/"
18
18
  gfile = dir/"global.lt3"
19
+ return unless File.exist?(gfile) # FIXME Hackish as hell
20
+
19
21
  live = get_live_vars(gfile)
20
22
  @user = live.vars["publish.user"]
21
23
  @server = live.vars["publish.server"]
@@ -38,7 +38,7 @@ module RuneBlog::REPL
38
38
  @out
39
39
  end
40
40
 
41
- def cmd_config(arg, testing = false)
41
+ def OLD_cmd_config(arg, testing = false)
42
42
  hash = {"global.lt3 Global configuration" => "global.lt3",
43
43
  "banner/top.lt3 Text portion of banner" => "banner/top.lt3",
44
44
  "blog/generate.lt3 Generator for view (usu not edited)" => "blog/generate.lt3",
@@ -59,6 +59,32 @@ module RuneBlog::REPL
59
59
  edit_file(dir/target)
60
60
  end
61
61
 
62
+ def cmd_config(arg, testing = false)
63
+ hash = {"Global configuration" => "global.lt3",
64
+ " View-specific variables" => "../../settings/view.txt",
65
+ " Recent posts" => "../../settings/recent.txt",
66
+ " Publishing vars" => "../../settings/publish.txt",
67
+ "Banner description" => "blog/banner.lt3",
68
+ " Text portion of banner" => "banner/top.lt3",
69
+ "Generator for view (usu not edited)" => "blog/generate.lt3",
70
+ " HEAD info for view" => "blog/head.lt3",
71
+ " User-edited detail for view" => "blog/index.lt3",
72
+ "Generator for post entry in recent-posts" => "blog/post_entry.lt3",
73
+ "Global CSS" => "etc/blog.css.lt3",
74
+ "External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3",
75
+ "Generator for a post" => "post/generate.lt3",
76
+ " HEAD info for post" => "post/head.lt3",
77
+ " Content for post" => "post/index.lt3",
78
+ "Generator for permalink" => "post/permalink.lt3",
79
+ }
80
+
81
+ dir = @blog.view.dir/"themes/standard/"
82
+ num, target = STDSCR.menu(title: "Edit file:", items: hash)
83
+ edit_file(dir/target)
84
+ end
85
+
86
+
87
+
62
88
  def cmd_manage(arg, testing = false)
63
89
  case arg
64
90
  when "pages"; _manage_pages(nil, testing = false)
@@ -40,7 +40,7 @@ class RuneBlog
40
40
  end
41
41
 
42
42
  attr_reader :views, :sequence
43
- attr_accessor :root, :editor
43
+ attr_accessor :root, :editor, :features
44
44
  attr_accessor :view # overridden
45
45
 
46
46
  attr_accessor :post_views, :post_tags, :dirty_views
@@ -120,7 +120,7 @@ class RuneBlog
120
120
  self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
121
121
 
122
122
  @root = Dir.pwd/root_rel
123
- write_repo_config(root: @root)
123
+ write_repo_config(root: @root) # ?? FIXME
124
124
  get_repo_config
125
125
  @views = retrieve_views
126
126
  self.view = File.read(@root/"data/VIEW").chomp
@@ -134,16 +134,67 @@ class RuneBlog
134
134
  @post_tags = []
135
135
  end
136
136
 
137
+ def complete_file(name, vars, hash)
138
+ debugging = vars.nil?
139
+ return if hash.empty?
140
+ text = File.read(name)
141
+ if vars.nil? # FIXME dumbest hack ever?
142
+ vars = {}
143
+ hash.values.each {|val| vars[val] = val }
144
+ end
145
+
146
+ hash.each_pair {|key, var| text.gsub!(key, vars[var]) }
147
+ File.write(name, text)
148
+ end
149
+
150
+ def _generate_settings(view = nil)
151
+ vars = read_vars("#@root/data/universal.lt3")
152
+ hash = {/AUTHOR/ => "view.author",
153
+ /SITE/ => "view.site",
154
+ /FONT/ => "font.family",
155
+ /CHARSET/ => :charset,
156
+ /LOCALE/ => :locale}
157
+
158
+ # rubytext.txt - LATER
159
+ # complete_file(settings/"rubytext.txt", {}
160
+
161
+ if view
162
+ settings = @root/view/"settings"
163
+ ### ??? Where to get hash of view-specific vars?
164
+
165
+ # features.txt - handle specially
166
+ fname = settings/"features.txt"
167
+
168
+ # view.txt
169
+ complete_file(settings/"view.txt",
170
+ /AUTHOR/ => "view.author",
171
+ /TITLE/ => "view.title",
172
+ /SUBTITLE/ => "view.subtitle",
173
+ /SITE/ => "view.site")
174
+
175
+ # publish.txt
176
+ complete_file(settings/"publish.txt",
177
+ /USER/ => "publish.user",
178
+ /SERVER/ => "publish.server",
179
+ /DOCROOT/ => "publish.docroot",
180
+ /PATH/ => "publish.path",
181
+ /PROTO/ => "publish.proto")
182
+
183
+ # recent.txt - SKIP THIS?
184
+ complete_file(settings/"recent.txt", {})
185
+ end
186
+ end
187
+
137
188
  def _generate_global
138
189
  vars = read_vars("#@root/data/universal.lt3")
139
190
  gfile = "#@root/data/global.lt3"
140
- global = File.read(gfile)
141
- global.gsub!(/AUTHOR/, vars["author"])
142
- global.gsub!(/SITE/, vars["site"])
143
- global.gsub!(/FONT/, vars["font.family"])
144
- global.gsub!(/CHARSET/, vars["charset"])
145
- global.gsub!(/LOCALE/, vars["locale"])
146
- File.write(gfile, global)
191
+ hash = {/AUTHOR/ => "univ.author",
192
+ /SITE/ => "univ.site",
193
+ /FONT/ => "font.family",
194
+ /CHARSET/ => :charset,
195
+ /LOCALE/ => :locale}
196
+ complete_file(gfile, vars, hash)
197
+ _generate_settings
147
198
  end
148
199
 
149
200
  def _deploy_local(dir)
@@ -151,10 +202,7 @@ class RuneBlog
151
202
  Dir.chdir(dir) do
152
203
  views = _retrieve_metadata(:views)
153
204
  views.each do |v|
154
- unless self.view?(v)
155
- puts "#{fx("Warning:", :red)} #{fx(v, :bold)} is not a view"
156
- next
157
- end
205
+ next unless _check_view?(v)
158
206
  system!("cp *html #@root/views/#{v}/remote", show: true)
159
207
  end
160
208
  end
@@ -162,6 +210,8 @@ class RuneBlog
162
210
  _tmp_error(err)
163
211
  end
164
212
 
213
+ # FIXME reconcile with _get_draft data
214
+
165
215
  def _retrieve_metadata(key)
166
216
  key = key.to_s
167
217
  lines = File.readlines("metadata.txt")
@@ -506,7 +556,7 @@ class RuneBlog
506
556
  call: ".nopara"
507
557
  copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/") # includes navbar/
508
558
  copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
509
- # rebuild widgets
559
+ # rebuild widgets?
510
560
  copy_widget_html(view)
511
561
  rescue => err
512
562
  STDERR.puts err
@@ -514,6 +564,27 @@ class RuneBlog
514
564
  # _tmp_error(err)
515
565
  end
516
566
 
567
+ def _get_draft_data(num, sym)
568
+ tag = prefix(num)
569
+ front = @blog.root/:drafts/tag
570
+ files = Dir[front + "*"]
571
+ raise "No draft #{num} found" if files.empty?
572
+ raise "Too many files found for #{num}!" if files.size > 1
573
+ file = files.first
574
+ lines = File.readlines(file)
575
+ case sym
576
+ when :views
577
+ view_line = lines.grep(/^.views /)
578
+ raise "More than one .views call in #{draft}" if view_line.size > 1
579
+ raise "No .views call in #{draft}" if view_line.size < 1
580
+ view_line = view_line.first
581
+ views = view_line[7..-1].split
582
+ return views.uniq
583
+ else
584
+ raise "Unknown symbol #{sym.inspect}"
585
+ end
586
+ end
587
+
517
588
  def _get_views(draft)
518
589
  log!(enter: __method__, args: [draft], level: 2)
519
590
  # FIXME dumb code
@@ -603,6 +674,8 @@ class RuneBlog
603
674
  log!(enter: __method__, args: [draft, view_name], level: 2)
604
675
  # break into separate methods?
605
676
 
677
+ return unless _check_view?(view_name)
678
+
606
679
  fname = File.basename(draft) # 0001-this-is-a-post.lt3
607
680
  nslug = fname.sub(/.lt3$/, "") # 0001-this-is-a-post
608
681
  aslug = nslug.sub(/\d\d\d\d-/, "") # this-is-a-post
@@ -632,30 +705,16 @@ class RuneBlog
632
705
  _tmp_error(err)
633
706
  end
634
707
 
708
+ def _check_view?(view)
709
+ flag = self.view?(view)
710
+ puts " Warning: '#{view}' is not a view" unless flag
711
+ flag
712
+ end
713
+
635
714
  def generate_post(draft, force = false)
636
715
  log!(enter: __method__, args: [draft], level: 1)
637
716
  views = _get_views(draft)
638
- views.each do |view|
639
- unless self.view?(view)
640
- puts "Warning: '#{view}' is not a view"
641
- next
642
- end
643
- _handle_post(draft, view)
644
- end
645
- rescue => err
646
- _tmp_error(err)
647
- end
648
-
649
- def rebuild_post(file)
650
- log!(enter: __method__, args: [file])
651
- raise "Doesn't currently work"
652
- debug "Called rebuild_post(#{file.inspect})"
653
- raise ArgumentError unless file.is_a?(String)
654
- meta = process_post(file)
655
- @views_dirty ||= []
656
- @views_dirty << meta.views
657
- @views_dirty.flatten!
658
- @views_dirty.uniq!
717
+ views.each {|view| _handle_post(draft, view) }
659
718
  rescue => err
660
719
  _tmp_error(err)
661
720
  end
@@ -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.2.99"
6
+ VERSION = "0.3.01"
7
7
 
8
8
  path = Gem.find_files("runeblog").grep(/runeblog-/).first
9
9
  Path = File.dirname(path)
@@ -15,6 +15,8 @@ class RuneBlog::View
15
15
  @can_publish = true # FIXME
16
16
  @blog.view = self
17
17
  gfile = @blog.root/"views/#{name}/themes/standard/global.lt3"
18
+ return unless File.exist?(gfile) # Hackish!! how is View.new called from create_view??
19
+
18
20
  live = Livetext.customize(call: ".nopara")
19
21
  live.xform_file(gfile)
20
22
  @globals = live.vars
@@ -59,19 +59,17 @@ x = RuneBlog.new(".blogs")
59
59
  debug("create_view: #{bold('around_austin')}")
60
60
  x.create_view("around_austin") # FIXME remember view title!
61
61
 
62
- #### FIXME later!!
63
- vars = <<-VARS
64
-
65
- .variables
66
- blog Around Austin
67
- blog.desc The view from downtown...
62
+ #### FIXME
68
63
 
69
- font.family verdana
70
- .end
64
+ vars = <<-VARS
65
+ author Hal Fulton
66
+ title Around Austin
67
+ subtitle The view from downtown...
68
+ domain foo.com
71
69
  VARS
72
- File.open(".blogs/views/around_austin/themes/standard/global.lt3", "a") do |f|
73
- f.puts vars
74
- end
70
+ vfile = ".blogs/views/around_austin/settings/view.txt"
71
+ File.open(vfile, "w") {|f| f.puts vars }
72
+
75
73
  ####
76
74
 
77
75
  debug("-- change_view: #{bold('around_austin')}")
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.2.99
4
+ version: 0.3.01
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-12-26 00:00:00.000000000 Z
11
+ date: 2019-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: livetext
@@ -85,6 +85,7 @@ files:
85
85
  - data/EDITOR
86
86
  - data/ROOT
87
87
  - data/VIEW
88
+ - data/features.txt
88
89
  - data/global.lt3
89
90
  - data/universal.lt3
90
91
  - empty_view/assets/austin-pano.jpg
@@ -116,6 +117,10 @@ files:
116
117
  - empty_view/remote/widgets/news/GIT_IS_DUMB
117
118
  - empty_view/remote/widgets/pages/GIT_IS_DUMB
118
119
  - empty_view/remote/widgets/pinned/GIT_IS_DUMB
120
+ - empty_view/settings/features.txt
121
+ - empty_view/settings/publish.txt
122
+ - empty_view/settings/recent.txt
123
+ - empty_view/settings/view.txt
119
124
  - empty_view/themes/standard/README
120
125
  - empty_view/themes/standard/banner/banner.lt3
121
126
  - empty_view/themes/standard/banner/navbar/about.lt3
@@ -131,12 +136,10 @@ files:
131
136
  - empty_view/themes/standard/etc/externals.lt3
132
137
  - empty_view/themes/standard/etc/favicon.ico
133
138
  - empty_view/themes/standard/etc/misc.js
134
- - empty_view/themes/standard/global.lt3
135
139
  - empty_view/themes/standard/post/generate.lt3
136
140
  - empty_view/themes/standard/post/head.lt3
137
141
  - empty_view/themes/standard/post/index.lt3
138
142
  - empty_view/themes/standard/post/permalink.lt3
139
- - empty_view/themes/standard/recent.txt
140
143
  - empty_view/themes/standard/widgets/README
141
144
  - empty_view/themes/standard/widgets/ad/ad.lt3
142
145
  - empty_view/themes/standard/widgets/ad/ad1.png
@@ -1,32 +0,0 @@
1
- . --------------------------------------------------
2
- . Global settings are stored here in the form
3
- . <variable> <value>
4
- . --------------------------------------------------
5
-
6
- .variables
7
- author Your name here
8
- blog Blog title goes here
9
- blog.desc Subtitle (if any) goes here
10
- site rubyhacker.com
11
-
12
- host localhost:4000//
13
- charset utf-8
14
- url localhost:4000//
15
- locale en_US
16
-
17
- font.family verdana
18
-
19
- recent.title.color #010101
20
- recent.title.size 28px
21
- recent.text.color #0101a1
22
- recent.text.size 22px
23
- recent.date.color #9a9a9a
24
- recent.date.size 15px
25
-
26
- publish.user root
27
- publish.server rubyhacker.com
28
- publish.docroot /var/www/
29
- publish.path stuff
30
- publish.proto http
31
- .end
32
-
@@ -1,6 +0,0 @@
1
- recent.title.color #010101
2
- recent.title.size 28px
3
- recent.text.color #0101a1
4
- recent.text.size 22px
5
- recent.date.color #9a9a9a
6
- recent.date.size 15px