Created
August 29, 2012 18:59
-
-
Save adibis/3517185 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# A few helpful tips about the Rules file: | |
# | |
# * The string given to #compile and #route are matching patterns for | |
# identifiers--not for paths. Therefore, you can’t match on extension. | |
# | |
# * The order of rules is important: for each item, only the first matching | |
# rule is applied. | |
# | |
# * Item identifiers start and end with a slash (e.g. “/about/” for the file | |
# “content/about.html”). To select all children, grandchildren, … of an | |
# item, use the pattern “/about/*/”; “/about/*” will also select the parent, | |
# because “*” matches zero or more characters. | |
preprocess do | |
#authors may unpublish items by setting meta attribute publish: false | |
items.delete_if { |item| item[:published] == false } | |
end | |
# ----------------- | |
# static css {{{ | |
# ----------------- | |
compile '/static/css/*' do | |
# don’t filter or layout | |
end | |
route '/static/css/*' do | |
item.identifier.chop + '.' + item[:extension] | |
end | |
# static css }}} | |
# ----------------- | |
# posts {{{ | |
# ----------------- | |
compile '/posts/*' do | |
filter :kramdown | |
layout 'posts' | |
end | |
route '/posts/*' do | |
y,m,d,slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/ | |
.match(item.identifier).captures | |
"/#{y}/#{m}/#{slug}/index.html" | |
end | |
# posts }}} | |
# ----------------- | |
# Blog post imagery {{{ | |
# ----------------- | |
compile '/images/posts/*/' do | |
end | |
compile '/imgages/*/' do | |
# make images fit the blog's size | |
if @item[:extension] == 'png' then | |
filter :thumbnailize, :width => 580, :height => 800 | |
if item[:extension] == "png" | |
filter :pngcrush, :level => 7 | |
end | |
end | |
end | |
route '/imgages/*/' do | |
@item.identifier.chop + '.' + @item[:extension] | |
end | |
# blog post imagery }}} | |
# ------------------------------------- | |
# Regex matching for everything else | |
# ------------------------------------- | |
compile '*' do | |
if item.binary? | |
# don’t filter binary items | |
else | |
filter :erb | |
layout 'default' | |
end | |
end | |
route '*' do | |
if item.binary? | |
# Write item with identifier /foo/ to /foo.ext | |
item.identifier.chop + '.' + item[:extension] | |
else | |
# Write item with identifier /foo/ to /foo/index.html | |
item.identifier + 'index.html' | |
end | |
end | |
layout '*', :erb |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment