Class: Bbcode::HtmlHandler
- Inherits:
-
Handler
- Object
- AbstractHandler
- Handler
- Bbcode::HtmlHandler
- Includes:
- ActionView::Helpers::TagHelper
- Defined in:
- lib/bbcode/html_handler.rb
Instance Attribute Summary
Attributes inherited from Handler
Instance Method Summary collapse
-
#initialize(element_handlers = nil) ⇒ HtmlHandler
constructor
A new instance of HtmlHandler.
- #register_element_handler(name, handler) ⇒ Object
Methods inherited from Handler
#apply_element_handler_for_element, #clear, #continue_element, #end_element, #get_document, #get_element_handler, #interrupt_element, #register_element_handlers, #start_element, #text
Methods inherited from AbstractHandler
#continue_element, #end_element, #interrupt_element, #restart_element, #start_element, #text, #void_element
Constructor Details
#initialize(element_handlers = nil) ⇒ HtmlHandler
Returns a new instance of HtmlHandler.
7 8 9 10 |
# File 'lib/bbcode/html_handler.rb', line 7 def initialize( element_handlers = nil ) super :"#text" => ->(text){ CGI.escapeHTML(text) } register_element_handlers element_handlers unless element_handlers.nil? end |
Instance Method Details
#register_element_handler(name, handler) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/bbcode/html_handler.rb', line 12 def register_element_handler( name, handler ) unless handler.is_a?(Proc) target_tagname, attributes = handler.is_a?(Array) ? handler : [handler, {}] handler = ->(element){ content_tag(target_tagname, element.content, !attributes ? {} : Hash[attributes.map{ |k, v| [k, v.gsub(/%{[^}]+}/) { |m| CGI.escapeHTML element[m[3] == ":" ? m[3...-1].to_sym : m[2...-1].to_i].to_s }] }], false) } end super name, handler end |