Class: RuneBlog::Post

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/global.rb,
lib/post.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#create_dir, #dump, #error, #find_src_slugs, #get_views, #interpolate, #new_dotfile, #new_sequence, #read_config, #subdirs, #write_config

Constructor Details

#initialize(meta, view_name) ⇒ Post

Returns a new instance of Post.

Raises:

  • (NoBlogAccessor)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/post.rb', line 34

def initialize(meta, view_name)
  # FIXME weird logic here
  raise NoBlogAccessor if RuneBlog.blog.nil?
  @blog = RuneBlog.blog
  @title = meta.title
  @view = @blog.str2view(view_name)
  @num, @slug = make_slug
  @date = Time.now.strftime("%Y-%m-%d")
  template = RuneBlog::Default::PostTemplate
  @meta = meta
  html = interpolate(template)
  @draft = "#{@blog.root}/src/#@slug.lt3"
  dump(html, @draft)
end

Instance Attribute Details

#dateObject (readonly)

Returns the value of attribute date.



8
9
10
# File 'lib/post.rb', line 8

def date
  @date
end

#idObject (readonly)

Returns the value of attribute id.



8
9
10
# File 'lib/post.rb', line 8

def id
  @id
end

#numObject (readonly)

Returns the value of attribute num.



8
9
10
# File 'lib/post.rb', line 8

def num
  @num
end

#slugObject (readonly)

Returns the value of attribute slug.



8
9
10
# File 'lib/post.rb', line 8

def slug
  @slug
end

#titleObject (readonly)

Returns the value of attribute title.



8
9
10
# File 'lib/post.rb', line 8

def title
  @title
end

#viewsObject (readonly)

Returns the value of attribute views.



8
9
10
# File 'lib/post.rb', line 8

def views
  @views
end

Class Method Details

.files(num, root) ⇒ Object



12
13
14
15
16
# File 'lib/post.rb', line 12

def self.files(num, root)
  files = Find.find(root).to_a
  result = files.grep(/#{prefix(num)}-/)
  result
end

.load(post) ⇒ Object

Raises:

  • (NoBlogAccessor)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/post.rb', line 18

def self.load(post)
  # FIXME weird logic here
  raise NoBlogAccessor if RuneBlog.blog.nil?
  pdir = RuneBlog.blog.view.dir + "/" + 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

Instance Method Details

#buildObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/post.rb', line 57

def build
  livetext = Livetext.new(STDOUT)
  @meta = livetext.process_file(@draft, binding)
  raise LivetextError(@draft) if @meta.nil?

  # FIXME what if title changes?

  @meta.views.each do |view_name|   # Create dir using slug (index.html, metadata?)
    view = @blog.str2view(view_name)
    vdir = view.dir
    dir = vdir + @slug + "/"
    Dir.mkdir(dir)
    Dir.chdir(dir) do
      create_post_subtree(vdir)
      @blog.generate_index(view)
    end
  end
rescue => err
  p err  # CHANGE_FOR_CURSES?
  puts err.backtrace.join("\n")  # CHANGE_FOR_CURSES?
end

#editObject



49
50
51
52
53
54
55
# File 'lib/post.rb', line 49

def edit
  result = system("vi #@draft +8")
  raise EditorProblem(draft) unless result
  nil
rescue => err
  error(err)
end