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
|
2012-04-18 02:08:04 +02:00
|
|
|
|
@site.initialize_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
|
2012-06-11 20:52:39 +02:00
|
|
|
|
if @item.binary?
|
|
|
|
|
# pass images used for styling
|
|
|
|
|
else
|
|
|
|
|
filter :sass, :syntax => :scss
|
|
|
|
|
end
|
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-06-25 12:49:29 +02:00
|
|
|
|
compile '/feed-merged/' do
|
|
|
|
|
filter :erb
|
|
|
|
|
end
|
|
|
|
|
|
2011-07-31 22:51:41 +02:00
|
|
|
|
compile '*' do
|
2012-05-30 06:06:38 +02:00
|
|
|
|
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]
|
2012-04-16 15:45:42 +02:00
|
|
|
|
filter :markdown_link_check unless @item.draft?
|
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
|
2012-04-18 23:06:03 +02:00
|
|
|
|
when "erb" # general erb files
|
|
|
|
|
filter :erb
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
2011-10-10 13:00:51 +02:00
|
|
|
|
|
|
|
|
|
# layout
|
2012-04-18 23:06:03 +02:00
|
|
|
|
unless @item[:is_hidden]
|
|
|
|
|
if @site.blog?
|
|
|
|
|
layout 'blog'
|
|
|
|
|
else
|
|
|
|
|
layout 'default'
|
|
|
|
|
end
|
2012-04-11 12:04:41 +02:00
|
|
|
|
|
2012-04-18 23:06:03 +02:00
|
|
|
|
# clean up
|
|
|
|
|
filter :tidy
|
|
|
|
|
end
|
2011-07-31 22:51:41 +02:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2012-05-30 06:06:38 +02:00
|
|
|
|
compile '/log/*', :rep => :wordcount do
|
|
|
|
|
if @item[:extension] == "mkd"
|
|
|
|
|
filter :erb
|
|
|
|
|
filter :kramdown
|
|
|
|
|
filter :tidy
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
route '*', :rep => :wordcount do
|
|
|
|
|
# pass
|
|
|
|
|
end
|
|
|
|
|
|
2011-09-04 19:22:08 +02:00
|
|
|
|
route '/feed/' do
|
|
|
|
|
'/rss.xml'
|
|
|
|
|
end
|
|
|
|
|
|
2012-06-25 12:49:29 +02:00
|
|
|
|
route '/feed-merged/' do
|
|
|
|
|
'/rss-merged.xml'
|
|
|
|
|
end
|
|
|
|
|
|
2011-09-05 19:05:40 +02:00
|
|
|
|
route '/htaccess/' do
|
|
|
|
|
'/.htaccess'
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-18 23:06:03 +02:00
|
|
|
|
route '/robots/' do
|
|
|
|
|
'/robots.txt'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
route '/sitemap/' do
|
|
|
|
|
'/sitemap.xml'
|
|
|
|
|
end
|
|
|
|
|
|
2012-04-11 12:04:41 +02:00
|
|
|
|
route '/styles/*' do
|
2012-06-11 20:52:39 +02:00
|
|
|
|
if @item.binary?
|
|
|
|
|
route_unchanged
|
|
|
|
|
else
|
|
|
|
|
route_with_new_extension "css"
|
|
|
|
|
end
|
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
|
|
|
|
route '/pigs/*' do
|
2012-04-18 02:08:04 +02:00
|
|
|
|
route_unchanged
|
2012-04-11 12:07:08 +02:00
|
|
|
|
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
|