#!/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 compile '/css/*/' do # filter :sass, syntax: :scss, load_paths: SASS_LOAD_PATHS filter :sass, Compass.sass_engine_options end compile '/js/*/' do filter :concat_js filter :uglify_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 '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 '/css/*/' do fp = fingerprint(item[:filename]) item.identifier.chop + fp + '.css' end route '/js/*/' do fp = fingerprint(item[:filename]) item.identifier.chop + fp + '.js' 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