1
0
Fork 0
mirror of https://github.com/fmap/muflax65ngodyewp.onion synced 2024-06-29 10:36:48 +02:00
muflax65ngodyewp.onion/Rules
muflax 84ce8e58c6 * improved list css
* added layout support for org-mode
* added 'stuff' category
* fixed phaidros metadata
2011-10-10 21:58:15 +02:00

126 lines
2.7 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 cant 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
def reference_links
# find reference item
reference = @items.find{|item| item.identifier == '/references/'}
# add automatic content to reference
page_links = ["<!-- automatic content -->"]
@site.printed_items.each do |i|
page_links << "[#{i[:title]}]: #{i.identifier}"
unless i[:alt_titles].nil?
i[:alt_titles].each do |title|
page_links << "[#{title}]: #{i.identifier}"
end
end
end
reference.add_content(page_links.join("\n"))
unless reference.nil?
# add references to every markdown item
@site.printed_items.each do |item|
if item[:extension] == "mkd"
item.add_references reference.raw_content
end
end
end
end
def hide_pages
@items.each do |item|
if item.identifier.match %r{^/(style)/}
item[:is_hidden] = true
end
end
end
hide_pages # must be first
@site.find_printed_items
reference_links
end
compile '/style/' do
# pass
end
compile '/references' do
# link references are only added to other files
end
compile '/feed/' do
filter :erb
end
compile '*' do
if item.binary?
# don't filter binary items
else
# 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}."
end
end
end
# file-specific changes
case @item[:extension]
when "mkd" # normal pages
filter :erb
filter :kramdown
filter :colorize_syntax, :default_colorizer => :pygmentize
when "org" # org-mode pages
filter :org
end
# layout
layout 'default'
filter :tidy
end
end
route '/feed/' do
'/rss.xml'
end
route '/htaccess/' do
'/.htaccess'
end
route '/style/' do
'/style.css'
end
route '/references' do
# pass
end
route '*' do
if item.binary?
route_unchanged
else
# Write item with identifier /foo/ to /foo/index.html
item.identifier + 'index.html'
end
end
layout '*', :erb