#!/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. passthrough '/assets/**' passthrough '/_redirects' passthrough '*/images/*' # RSS Feed compile '/blog/feed/' do filter :erb end route '/blog/feed/' do '/blog/feed.xml' end compile '*' do filter :erb if item[:extension] == 'html' if item[:extension] == 'md' filter :redcarpet, options: {filter_html: true, autolink: true, no_intraemphasis: true, fenced_code_blocks: true, gh_blockcode: true, tables: true}, renderer_options: {with_toc_data: true} filter :normalize_links, item[:repo_docs] if item[:repo_docs] filter :version_warning, item[:repo_docs] if item[:repo_docs] filter :add_anchors filter :bootstrappify filter :admonition filter :colorize_syntax, :default_colorizer => :pygmentsrb filter :config_linker if item[:title] == 'Configuration' filter :toc, style: item[:toc] if item[:kind] == 'article' layout 'blog' else # TODO(mr): separate layout selection from Markdown handling layout item[:layout] || 'docs' end elsif item[:extension] == 'css' # don’t filter stylesheets elsif item.binary? # don’t filter binary items elsif item[:layout] layout item[:layout] else layout 'default' end end route '/blog/' do '/blog/index.html' end # Transform /blog/--
- to # /blog///
/. route '/blog/*' do y, m, d, slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/.match(item.identifier).captures "/blog/#{y}/#{m}/#{d}/#{slug}/index.html" end route '*' do if item[:extension] == 'css' # Write item with identifier /foo/ to /foo.css item.identifier.chop + '.css' elsif item.binary? # Write item with identifier /foo.dat to /foo.dat item.identifier.to_s else # Write item with identifier /foo/ to /foo/index.html item.identifier + 'index.html' end end layout '*', :erb