public
Description: Micro-blog with erubis and markdown and auto-publishing with git commit hook (in about 20 lines of code)
Homepage:
Clone URL: git://github.com/zackchandler/squawk-micro.git
zackchandler (author)
Sat Feb 16 14:48:06 -0800 2008
commit  6163c1f9b94401b0d7bddc5ef4ca15a76d662b47
tree    b74445d442fbee33533bd48f8db7b19d9d2507cd
parent  36da5829e56172a0fed28ecfa9693c2ef15915c5
squawk-micro / gen.rb
100644 29 lines (24 sloc) 0.977 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
%w(rubygems ostruct fileutils erubis bluecloth).each { |lib| require lib }
 
# generate layout
layout_template = Erubis::Eruby.new(File.read('views/layout.erb'))
index_template = Erubis::Eruby.new(File.read('views/index.erb'))
page_template = Erubis::Eruby.new(File.read('views/post.erb'))
 
# get posts
posts = Dir['posts/*'].reverse.map do |post|
  OpenStruct.new(:permalink => post.split('/').last,
                 :title => post.split('/').last.gsub(/-|_/, ' ')[4..-1],
                 :published_at => File.ctime(post),
                 :body => File.read(post))
end
 
# generate site folder
FileUtils.mkdir_p 'site'
 
# generate pages
posts.each do |post|
  File.open("site/#{post.permalink}.html", 'w+') do |page|
    page << layout_template.evaluate(:content => page_template.evaluate(:post => post))
  end
end
 
# generate index page
File.open('site/index.html', 'w+') do |page|
  page << layout_template.evaluate(:content => index_template.evaluate(:posts => posts))
end