Class: Bbcode::HtmlHandler

Inherits:
Handler show all
Includes:
ActionView::Helpers::TagHelper
Defined in:
lib/bbcode/html_handler.rb

Instance Attribute Summary

Attributes inherited from Handler

#element_handlers, #locals

Instance Method Summary collapse

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){
			(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