blob: fe552e5a3abcd00c0eb37abaa2ff9a2e634a483e (
plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
require 'date'
def parse_post filename
file_raw = File.read(src filename).force_encoding('UTF-8').split('---')
post = YAML.load file_raw[0]
post['date'] = DateTime.parse(post['date'])
post['raw_content'] = file_raw[1].strip
post['filename'] = filename
post['id'] = "blog_#{basename_no_extension filename}"
post
end
def basename_no_extension filename
File.basename filename.sub(/\.[\w.]*$/, '')
end
def compile_post post
post['content'] = ERB.new(post['raw_content']).result binding
end
def generate_blog_post post
ERB.new(File.read(src 'post-template.html.erb')).result binding
end
def posts
Dir.new(src 'blog').children.map do |filename|
post = parse_post "blog/#{filename}"
end.sort do |a, b|
b['date'] <=> a['date']
end
end
def format_date date
date.strftime '%B %-d, %Y'
end
def write_blog_files
posts.each do |post|
compile_post post
content = ERB.new(File.read(src 'post-template.html.erb')).result binding
write_templated content, post['filename'], head_title: post['title'], h1_title: 'Blog.'
end
end
def write_blog_archive
content = ERB.new(File.read(src 'blog.html.erb')).result
write_templated content, 'blog.html', title: 'Blog.'
end
|