m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/lib/blog.rb
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-06-28 19:12:42 +0200
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-06-28 19:13:20 +0200
commita3b86375c946299c9216412e10c5bcf5234c7fcd (patch)
treeb1cceccafa1fad92561bfda729e2ab9b7b62f1fc /lib/blog.rb
Initial commit
Diffstat (limited to 'lib/blog.rb')
-rw-r--r--lib/blog.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/blog.rb b/lib/blog.rb
new file mode 100644
index 0000000..e4403a3
--- /dev/null
+++ b/lib/blog.rb
@@ -0,0 +1,33 @@
+require 'date'
+
+def parse_post filename
+ file_raw = File.read(src filename).force_encoding('UTF-8').split('---')
+ post = YAML.load file_raw[0]
+ post['content'] = file_raw[1].strip
+ post['filename'] = filename
+ post
+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|
+ Date.parse(b['date']) <=> Date.parse(a['date'])
+ end
+end
+
+def write_blog_files
+ posts.each do |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