lib/runeblog.rb in runeblog-0.3.05 vs lib/runeblog.rb in runeblog-0.3.06
- old
+ new
@@ -187,50 +187,32 @@
/LOCALE/ => :locale}
complete_file(gfile, vars, hash)
_generate_settings
end
+ # FIXME reconcile with _get_draft data
+
+ def read_metadata
+ meta = read_pairs!("metadata.txt")
+ meta.views = meta.views.split
+ meta.tags = meta.tags.split
+ meta
+ end
+
def _deploy_local(dir)
log!(enter: __method__, args: [dir], level: 1)
Dir.chdir(dir) do
- views = _retrieve_metadata(:views)
- views.each do |v|
+ meta = read_metadata
+ meta.views.each do |v|
next unless _check_view?(v)
system!("cp *html #@root/views/#{v}/remote", show: true)
end
end
rescue => err
_tmp_error(err)
end
- # FIXME reconcile with _get_draft data
-
- def _retrieve_metadata(key)
- key = key.to_s
- lines = File.readlines("metadata.txt")
- lines = lines.grep(/^#{key}: /)
- case lines.size
- when 0
- result = nil # not found
- when 1
- front = "#{key}: "
- n = front.size
- str = lines.first.chomp[n..-1]
- case key
- when "views", "tags" # plurals
- result = str.split
- else
- result = str
- end
- else
- raise "Too many #{key} instances in metadata.txt!"
- end
- return result
- rescue => err
- _tmp_error(err)
- end
-
def process_post(sourcefile)
log!(enter: __method__, args: [sourcefile], level: 2)
nslug = sourcefile.sub(/.lt3/, "")
dir = @root/:posts/nslug
create_dirs(dir)
@@ -399,13 +381,12 @@
dir_posts = @vdir/:posts
posts = Dir.entries(dir_posts).grep(/^\d\d\d\d/).map {|x| dir_posts/x }
posts.select! {|x| File.directory?(x) }
- post = posts.select {|x| File.basename(x).to_i == postid }
- raise "Error: More than one post #{postid}" if post.size > 1
- postdir = post.first
+ posts = posts.select {|x| File.basename(x).to_i == postid }
+ postdir = exactly_one(posts)
vp = RuneBlog::ViewPost.new(self.view, postdir)
vp
rescue => err
_tmp_error(err)
end
@@ -561,38 +542,14 @@
STDERR.puts err
STDERR.puts err.backtrace.join("\n")
# _tmp_error(err)
end
- def _get_draft_data(num, sym)
- tag = prefix(num)
- front = @blog.root/:drafts/tag
- files = Dir[front + "*"]
- raise "No draft #{num} found" if files.empty?
- raise "Too many files found for #{num}!" if files.size > 1
- file = files.first
- lines = File.readlines(file)
- case sym
- when :views
- view_line = lines.grep(/^.views /)
- raise "More than one .views call in #{draft}" if view_line.size > 1
- raise "No .views call in #{draft}" if view_line.size < 1
- view_line = view_line.first
- views = view_line[7..-1].split
- return views.uniq
- else
- raise "Unknown symbol #{sym.inspect}"
- end
- end
-
def _get_views(draft)
log!(enter: __method__, args: [draft], level: 2)
# FIXME dumb code
- view_line = File.readlines(draft).grep(/^.views /)
- raise "More than one .views call in #{draft}" if view_line.size > 1
- raise "No .views call in #{draft}" if view_line.size < 1
- view_line = view_line.first
+ view_line = exactly_one(File.readlines(draft).grep(/^.views /))
views = view_line[7..-1].split
views.uniq
rescue => err
_tmp_error(err)
end
@@ -619,13 +576,14 @@
nslug = fname.sub(/.lt3$/, "") # 0001-this-is-a-post
aslug = nslug.sub(/\d\d\d\d-/, "") # this-is-a-post
pnum = nslug[0..3] # 0001
Dir.chdir(pdraft) do
excerpt = File.read("teaser.txt")
- date = _retrieve_metadata(:date)
+ meta = read_metadata
+ date = meta.date
longdate = ::Date.parse(date).strftime("%B %e, %Y")
- title = _retrieve_metadata(:title)
- tags = _retrieve_metadata(:tags)
+ title = meta.title
+ tags = meta.tags
# FIXME simplify
vars = <<~LIVE
.set post.num = #{pnum}
.heredoc post.aslug
#{aslug}