Правила Nanoc для обработки файлов уценки
Мой текущий файл правил выглядит следующим образом:
#!/usr/bin/env ruby
### COMPILATION RULES
# Don’t filter or layout assets
compile %r{^/(favicon|robots|crypto/.*|stylesheets/.*|javascript/.*|plugins/.*|fonts/.*|images/.*|photos/.*|keybase.txt)/$} do
end
# compile '/' do
# filter :erb
# layout 'default'
# end
compile '*' do
if item.binary?
# don’t filter binary items
else
layout item[:layout] || 'default'
end
end
# Sitemap, RSS feed, and htaccess get filtered with erb, but get no layout.
compile %r{^/(sitemap|htaccess|feed|card|identity)/$} do
filter :erb
end
# Songs get rendered in the music player
compile %r{^/music/.*/$} do
filter :erb
layout 'player'
end
compile '*' do
case item[:extension]
when 'md'
filter :kramdown
when 'html'
filter :erb
end
layout 'default'
end
route '/photos/*/', :rep => :thumbnail do
item.identifier.chop + '-thumbnail.' + item[:extension]
end
route %r{^/(favicon|robots|sitemap|crypto/.*|stylesheets/.*|javascript/.*|plugins/.*|fonts/.*|images/.*|photos/.*)/$} do
ext = item[:extension]
item.identifier.chop + '.' + ext
end
route '*' do
item.identifier + 'index.html'
end
layout '*', :erb
Я хочу написать будущие файлы в уценке вместо HTML. Однако, похоже, что файл правил не имеет права обрабатывать его. Все написанное в уценке выглядит как текстовый дамп.
Что мне не хватает?
1 ответ
Похоже, у вас есть два compile
правила по той же схеме ('*'
). Только первый из них будет выполнен, а другой будет игнорироваться.
Вы должны реорганизовать свои правила так, чтобы первый compile
Правило, которое соответствует определенному элементу, является тем, которое вы хотите выполнить для него.
По моему Rules
файл, например, у меня есть такая договоренность:
скомпилировать '/**/*.md' do фильтр:kramdown конец скомпилировать '/**/*' do написать item.identifier.to_s конец
Другими словами, работа от более конкретных правил в начале к более общим правилам в конце.