Как написать собственный фильтр HAML? - PullRequest
6 голосов
/ 17 декабря 2009

Я написал простой пользовательский фильтр в HAML , но я не могу заставить свое приложение Rails найти его.

Фильтр выглядит так:

# lib/haml/filters/gfmarkdown.rb
module Haml::Filters::Gfmarkdown
  include Haml::Filters::Base

  # copied from Haml::Filters::Markdown
  lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'

  def render(text)
    # copied from Haml::Filters::Markdown
    engine = case @required
             when 'rdiscount'
               ::RDiscount
             when 'peg_markdown'
               ::PEGMarkdown
             when 'maruku'
               ::Maruku
             when 'bluecloth'
               ::BlueCloth
             end
    engine.new(gfm text).to_html  # gfm method defined elsewhere
  end
end

На мой взгляд, я пытаюсь использовать этот фильтр так:

:gfmarkdown
  #{comment.body}

Но я получаю это сообщение об ошибке: Filter "gfmarkdown" is not defined.

Есть идеи, как заставить приложение Rails поднять фильтр?

Версии: Rails 2.3.4, Haml 2.2.15.

1 Ответ

3 голосов
/ 17 декабря 2009

Я нашел решение: добавить инициализатор, для которого требуется фильтр.

# config/initializers/gfmarkdown.rb
require 'haml/filters/gfmarkdown'

Я думал, что модули в lib/ требуются автоматически, если иерархия модулей соответствует пути к файлу. Ну хорошо;)

...