class RuneBlog::Post

Attributes

blog[RW]
date[R]
draft[RW]
meta[RW]
num[R]
slug[R]
title[R]
views[R]

Public Class Methods

create(title:, teaser:, body:, pubdate: Time.now.strftime("%Y-%m-%d"), views:[], file: nil) click to toggle source
# File lib/post.rb, line 36
def self.create(title:, teaser:, body:, pubdate: Time.now.strftime("%Y-%m-%d"),
                views:[], file: nil)
  log!(enter: __method__, args: [title, teaser, body, pubdate, views], stderr: true)
  post = self.new
  # NOTE: This is the ONLY place next_sequence is called!
  num = post.meta.num   = post.blog.next_sequence

  # new_metadata
  post.meta.title, post.meta.teaser, post.meta.body, post.meta.pubdate = 
    title, teaser, body, pubdate
  post.meta.views = [post.blog.view.to_s] + views
  post.meta.tags = []
  post.blog.make_slug(post.meta)  # adds to meta

  # create_draft
  viewhome = post.blog.view.publisher.url
  meta = post.meta
  if file.nil?
    text = RuneBlog.post_template(num: meta.num, title: meta.title, date: meta.pubdate, 
               view: meta.view, teaser: meta.teaser, body: meta.body,
               views: meta.views, tags: meta.tags, home: viewhome)
    srcdir = post.blog.root/:drafts + "/"
    vpdir = post.blog.root/:drafts + "/"
    fname  = meta.slug + ".lt3"
    post.draft = srcdir + fname
    dump(text, post.draft)
  else
    dump(File.read(file), post.draft)
  end
  return post
end
load(post) click to toggle source
# File lib/post.rb, line 12
  def self.load(post)
    log!(enter: __method__, args: [post], level: 3)
    raise NotImplemented
    raise NoBlogAccessor if RuneBlog.blog.nil?
    # "post" is a slug?
    pdir = RuneBlog.blog.root/:drafts/post
    meta = nil
    Dir.chdir(pdir) do
#     meta = read_config("metadata.txt")
#     meta.date = Date.parse(meta.date)
#     meta.views = meta.views.split
#     meta.tags = meta.tags.split
#     meta.teaser = File.read("teaser.txt")
#     meta.body = File.read("body.txt")
    end
    meta
  end
new() click to toggle source
# File lib/post.rb, line 30
def initialize
  log!(enter: __method__, level: 3)
  @blog = RuneBlog.blog || raise(NoBlogAccessor)
  @meta = OpenStruct.new
end

Public Instance Methods

build() click to toggle source
# File lib/post.rb, line 76
def build
  log!(enter: __method__)
  post = self
  views = post.meta.views
  @blog.generate_post(@draft)
  @blog.generate_index(@blog.view)
end
edit() click to toggle source
# File lib/post.rb, line 68
def edit
  log!(enter: __method__)
  edit_file(@draft, vim: "+8")
  build
rescue => err
  error(err)
end