Правила 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
конец

Другими словами, работа от более конкретных правил в начале к более общим правилам в конце.

Другие вопросы по тегам