Class: MarkdownRails::Handler
- Inherits:
-
Object
- Object
- MarkdownRails::Handler
- Defined in:
- lib/markdown-rails/handler.rb
Overview
We cannot use MarkdownRails because it conflicts with RDiscount’s Markdown class
Constant Summary collapse
- DEFAULT_EXTENSION =
:md- @@handlers =
{}
Class Method Summary collapse
- .handle(*extensions, &block) ⇒ Object
- .handler_for(extension) ⇒ Object
-
.register_default ⇒ Object
Registers a default ‘.md` handler for Rails templates.
Instance Method Summary collapse
- #call(template, source = template.source) ⇒ Object
- #create_renderer ⇒ Object
-
#initialize(extension, &block) ⇒ Handler
constructor
A new instance of Handler.
Constructor Details
#initialize(extension, &block) ⇒ Handler
Returns a new instance of Handler.
7 8 9 10 11 |
# File 'lib/markdown-rails/handler.rb', line 7 def initialize(extension, &block) @extension = extension @markdown = block @@handlers[@extension] = self end |
Class Method Details
.handle(*extensions, &block) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/markdown-rails/handler.rb', line 34 def self.handle(*extensions, &block) Array(extensions).each do |extension| handler = new(extension, &block) ActionView::Template.register_template_handler extension, handler end end |
.handler_for(extension) ⇒ Object
30 31 32 |
# File 'lib/markdown-rails/handler.rb', line 30 def self.handler_for(extension) @@handlers[extension] end |
.register_default ⇒ Object
Registers a default ‘.md` handler for Rails templates. This might be replaced by a handler in the `config/initializers/markdown.rb` file.
43 44 45 |
# File 'lib/markdown-rails/handler.rb', line 43 def self.register_default handle(DEFAULT_EXTENSION) { MarkdownRails::Renderer::Rails.new } end |
Instance Method Details
#call(template, source = template.source) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/markdown-rails/handler.rb', line 13 def call(template, source = template.source) # Generate code that fetches the handler and calls the block at render time extension = @extension " begin\n handler = MarkdownRails::Handler.handler_for(\#{extension.inspect})\n renderer = handler.create_renderer\n renderer.view_context = self\n renderer.renderer.render(\#{source.inspect}).html_safe\n end\n RUBY\nend\n" |
#create_renderer ⇒ Object
26 27 28 |
# File 'lib/markdown-rails/handler.rb', line 26 def create_renderer @markdown.call end |