devroom.io/Rules
2013-06-14 21:26:17 +02:00

150 lines
2.6 KiB
Ruby

#!/usr/bin/env ruby
preprocess do
create_robots_txt
create_webmaster_tools_authentications
create_sitemap
end
compile %r{^/(google|robots|assets)} do
end
compile %r{/_.+/$} do
# don't filter partials
end
# Sitemap and htaccess do get filtered with erb, but get no layout.
compile %r{^/(sitemap|htaccess)/$} do
filter :erb
end
compile '/sitemap/', :rep => 'gzip' do
filter :erb
filter :shellcmd, :cmd => 'gzip'
end
# Use screen.scss as the single entry point for styles, ignore everything else in /assets/css
compile '/css/screen/' do
filter :sass, :syntax => :scss if @item[:extension] == 'scss'
end
compile '/css/*' do
end
route '/css/screen/' do
fp = fingerprint(item[:filename])
item.identifier.chop + fp + '.css'
end
compile '/js/bsa/' do
end
route '/js/bsa/' do
item.identifier.chop + '.js'
end
compile '/js/*/' do
filter :coffeescript if @item[:extension] == 'coffee'
filter :concat_js
filter :uglify_js
end
route '/js/*/' do
fp = fingerprint(item[:filename])
item.identifier.chop + fp + '.js'
end
compile '/rss/' do
filter :erb
end
compile '/posts/*' do
filter :kramdown
filter :pygmentizer
filter :typogruby
layout 'post'
layout 'default'
filter :cache_buster
end
compile %r{^/(404)/$} do
filter :haml, format: :html5, ugly: true
layout 'default'
filter :cache_buster
end
compile '*' do
unless item.binary?
case item[:extension]
when 'md'
filter :erb
filter :kramdown
when 'haml'
filter :haml, format: :html5, ugly: true
else
filter :erb
end
if %w(html haml md).include?(item[:extension])
layout 'page'
layout 'default'
filter :cache_buster
end
end
end
route %r{/_.+/$} do
nil # don't route partials
end
route %r{^/(assets/.*|sitemap|robots|atom)/$} do
ext = item[:extension]
ext = 'js' if ext == 'coffee'
ext = 'css' if ext == 'scss'
fp = cachebust?(item) ? fingerprint(item[:filename]) : ''
item.identifier.chop + fp + '.' + ext
end
route '/rss/' do
'/rss.xml'
end
route '/htaccess/' do
'/.htaccess'
end
route '/sitemap/', :rep => 'gzip' do
'/sitemap.xml.gz'
end
route '/sitemap/' do
'/sitemap.xml'
end
route %r{^/(404)/$} do
item.identifier.chop + '.html'
end
route '/posts/*' do
y, m, d, slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/.match(item.identifier).captures
"/#{y}/#{m}/#{d}/#{slug}/index.html"
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 '*', :haml, :format => :html5, ugly: true