2011-07-31 22:51:41 +02:00
|
|
|
|
#!/usr/bin/env ruby
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
# 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
|
2011-09-03 17:29:00 +02:00
|
|
|
|
def reference_links
|
2012-04-15 22:45:39 +02:00
|
|
|
|
# find reference items
|
|
|
|
|
references = @items.select{|item| item.identifier.start_with? '/references/'}
|
|
|
|
|
|
|
|
|
|
# load references
|
|
|
|
|
ref_content = references.map{|r| File.open(r[:filename]).readlines}.join("\n\n")
|
|
|
|
|
|
|
|
|
|
# add references to every markdown item
|
|
|
|
|
unless references.nil?
|
2011-09-23 20:55:32 +02:00
|
|
|
|
@site.printed_items.each do |item|
|
2011-09-03 17:29:00 +02:00
|
|
|
|
if item[:extension] == "mkd"
|
2012-04-15 22:45:39 +02:00
|
|
|
|
item.add_references ref_content
|
2011-09-03 17:29:00 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def hide_pages
|
|
|
|
|
@items.each do |item|
|
2012-04-15 22:45:39 +02:00
|
|
|
|
if item.identifier.match %r{^/(styles|references)/}
|
2011-09-03 17:29:00 +02:00
|
|
|
|
item[:is_hidden] = true
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2011-09-23 20:55:32 +02:00
|
|
|
|
|
|
|
|
|
hide_pages # must be first
|
|
|
|
|
@site.find_printed_items
|
2011-09-03 17:29:00 +02:00
|
|
|
|
reference_links
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:04:41 +02:00
|
|
|
|
compile '/styles/*' do
|
2011-12-23 06:08:56 +01:00
|
|
|
|
filter :sass, :syntax => :scss
|
2011-09-03 14:28:45 +02:00
|
|
|
|
end
|
|
|
|
|
|
2011-12-11 19:49:57 +01:00
|
|
|
|
compile '/stuff/*' do
|
|
|
|
|
# pass
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-15 22:45:39 +02:00
|
|
|
|
compile '/references/*' do
|
2011-09-03 14:28:45 +02:00
|
|
|
|
# link references are only added to other files
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
|
2011-09-04 19:22:08 +02:00
|
|
|
|
compile '/feed/' do
|
|
|
|
|
filter :erb
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:04:41 +02:00
|
|
|
|
compile '/htaccess/' do
|
|
|
|
|
filter :erb
|
|
|
|
|
end
|
|
|
|
|
|
2011-07-31 22:51:41 +02:00
|
|
|
|
compile '*' do
|
|
|
|
|
if item.binary?
|
2011-09-03 14:28:45 +02:00
|
|
|
|
# don't filter binary items
|
2011-07-31 22:51:41 +02:00
|
|
|
|
else
|
2011-10-10 13:00:51 +02:00
|
|
|
|
# little sanity check
|
|
|
|
|
unless @item[:is_category] or @item[:non_cognitive]
|
|
|
|
|
[:techne, :episteme, :date, :title].each do |header|
|
|
|
|
|
if @item[header].nil?
|
|
|
|
|
puts "#{@item.identifier} is missing #{header}."
|
2011-09-04 19:22:08 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
2011-10-10 13:00:51 +02:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# file-specific changes
|
|
|
|
|
case @item[:extension]
|
|
|
|
|
when "mkd" # normal pages
|
2011-07-31 22:51:41 +02:00
|
|
|
|
filter :erb
|
2011-12-16 04:58:41 +01:00
|
|
|
|
filter :kramdown, :toc_levels => [1,2]
|
2011-09-03 18:28:11 +02:00
|
|
|
|
filter :colorize_syntax, :default_colorizer => :pygmentize
|
2011-10-10 13:00:51 +02:00
|
|
|
|
when "org" # org-mode pages
|
|
|
|
|
filter :org
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
2011-10-10 13:00:51 +02:00
|
|
|
|
|
|
|
|
|
# layout
|
2012-04-11 12:04:41 +02:00
|
|
|
|
if blog?
|
|
|
|
|
layout 'blog'
|
|
|
|
|
else
|
|
|
|
|
layout 'default'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# clean up
|
2011-10-10 13:00:51 +02:00
|
|
|
|
filter :tidy
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2011-09-04 19:22:08 +02:00
|
|
|
|
route '/feed/' do
|
|
|
|
|
'/rss.xml'
|
|
|
|
|
end
|
|
|
|
|
|
2011-09-05 19:05:40 +02:00
|
|
|
|
route '/htaccess/' do
|
|
|
|
|
'/.htaccess'
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:04:41 +02:00
|
|
|
|
route '/styles/*' do
|
|
|
|
|
route_with_new_extension "css"
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
|
2012-04-15 22:45:39 +02:00
|
|
|
|
route '/references/*' do
|
2011-09-03 17:29:00 +02:00
|
|
|
|
# pass
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:04:41 +02:00
|
|
|
|
# never change /stuff
|
2011-12-11 19:49:57 +01:00
|
|
|
|
route '/stuff/*' do
|
|
|
|
|
route_unchanged
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:07:08 +02:00
|
|
|
|
# only include pigs on the main site
|
|
|
|
|
route '/pigs/*' do
|
|
|
|
|
if main_site?
|
|
|
|
|
route_unchanged
|
|
|
|
|
else
|
|
|
|
|
# pass
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2011-07-31 22:51:41 +02:00
|
|
|
|
route '*' do
|
|
|
|
|
if item.binary?
|
2011-09-23 20:55:32 +02:00
|
|
|
|
route_unchanged
|
2011-07-31 22:51:41 +02:00
|
|
|
|
else
|
|
|
|
|
# Write item with identifier /foo/ to /foo/index.html
|
|
|
|
|
item.identifier + 'index.html'
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
layout '*', :erb
|