lib/post.rb in runeblog-0.1.14 vs lib/post.rb in runeblog-0.1.15

- old
+ new

@@ -30,17 +30,78 @@ check_meta(meta, "Post.load") end meta end - def initialize(meta, view_name) - # FIXME weird logic here + def create_post_subtree(viewname = nil) + viewname ||= @blog.view.dir + post_dir = viewname + "/" + @meta.slug + create_dir(post_dir) rescue nil # FIXME? + Dir.chdir(post_dir) do + create_dir("assets") rescue nil + system("cp body.txt index.html") # gahhh + end + end + + def write_metadata(meta) + fname2 = "metadata.txt" + hash = meta.to_h + + File.write("teaser.txt", hash[:teaser]) + File.write("body.txt", hash[:body]) + hash.delete(:teaser) + hash.delete(:body) + + hash[:views] = hash[:views].join(" ") + hash[:tags] = hash[:tags].join(" ") + + fields = [:num, :title, :date, :pubdate, :views, :tags] + + f2 = File.new(fname2, "w") + fields.each {|fld| f2.puts "#{fld}: #{hash[fld]}" } + f2.close + end + + def initialize + # nothing yet... @blog = RuneBlog.blog || raise(NoBlogAccessor) - @blog.make_slug(meta) # Post#initialize + end + + def self.create(title) + post = self.new + post.new_metadata(title) + post.create_draft + post.create_post_subtree # gets done in build anyway +# post.build # where livetext gets called + post + end + + def new_metadata(title) + meta = OpenStruct.new + meta.title = title + meta.teaser = "Teaser goes here." + meta.body = "Remainder of post goes here." meta.pubdate = Time.now.strftime("%Y-%m-%d") meta.date = meta.pubdate # fix later - meta.views = [view_name] + meta.views = [@blog.view.to_s] + # only place next_sequence is called + meta.num = @blog.next_sequence + @blog.make_slug(meta) # adds to meta + @meta = meta + end + + def create_draft + html = RuneBlog.post_template(title: @meta.title, date: @meta.pubdate, + view: @meta.view, teaser: @meta.teaser, body: @meta.body) + @draft = "#{@blog.root}/src/#{slug}.lt3" + dump(html, @draft) + end + + def old_initialize(meta, view_name) + # FIXME weird logic here + @blog = RuneBlog.blog || raise(NoBlogAccessor) + @blog.make_slug(meta) # Post#initialize check_meta(meta, "Post#initialize") html = RuneBlog.post_template(title: meta.title, date: meta.pubdate, view: meta.view, teaser: meta.teaser, body: meta.body) slug = meta.slug @@ -58,78 +119,33 @@ nil rescue => err error(err) end - def build(meta=nil) - meta = @meta # FIXME - check_meta(meta, "Post.build") + def build + views = @meta.views + text = File.read(@draft) + Livetext.parameters = [@blog, @meta] livetext = Livetext.new(STDOUT) - puts "build: meta = #{meta.inspect}" - views = meta.views - @meta2 = livetext.process_file(@draft, binding) - @meta2.num = meta.num # dumb? - @meta2.views = views # extra dumb - check_meta(@meta2, "build2") - raise LivetextError(@draft) if @meta2.nil? + meta = livetext.process_text(text) + raise LivetextError(@draft) if meta.nil? - puts "build: cp 2 - meta2 = #{@meta2.inspect}" + meta.num = File.basename(@draft).to_i + # FIXME what if title changes? slug should change? + meta.views = views # FIXME - # Hmm. @meta2 differs from meta -- views, etc. - - # FIXME what if title changes? - - @meta2.views.each do |view_name| # Create dir using slug (index.html, metadata?) - puts "build: cp 3 - view = #{view_name}" - view = @blog.str2view(view_name) - vdir = view.dir + meta.views.each do |view_name| # Create dir using slug (index.html, metadata?) + vdir = "#{@blog.root}/views/#{view_name}/" dir = vdir + meta.slug + "/" - Dir.mkdir(dir) + create_dir(dir) rescue nil Dir.chdir(dir) do - puts "build: cp 4 - view = #{view_name}" - create_post_subtree(vdir) - puts "build: cp 5 - view = #{view_name}" - @blog.generate_index(view) - puts "build: cp 6 - view = #{view_name}" + create_post_subtree + @blog.generate_index(view_name) end end + meta rescue => err p err puts err.backtrace.join("\n") - end - - private - - def create_post_subtree(vdir) - create_dir("assets") - check_meta(@meta2, "create_post_subtree") - write_metadata(@meta2) - meta = @meta2 - text = RuneBlog.teaser_template(title: meta.title, date: meta.date, - view: meta.view, teaser: meta.teaser, - body: meta.body) - dump(text, "index.html") # FIXME write_index ? - end - - def write_metadata(meta) - fname2 = "metadata.txt" - hash = meta.to_h -debug "write_meta: #{hash.inspect}" - - File.write("teaser.txt", hash[:teaser]) - File.write("body.txt", hash[:body]) - hash.delete(:teaser) - hash.delete(:body) - - hash[:views] = hash[:views].join(" ") - hash[:tags] = hash[:tags].join(" ") - - fields = [:num, :title, :date, :pubdate, :views, :tags] - - f2 = File.new(fname2, "w") - fields.each do |fld| - f2.puts "#{fld}: #{hash[fld]}" - end - f2.close end end