Class: Bbcode::HtmlHandler

Inherits:
Handler
  • Object
show all
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

Constructor Details

#initialize(element_handlers = nil) ⇒ HtmlHandler

Returns a new instance of HtmlHandler.



5
6
7
8
# File 'lib/bbcode/html_handler.rb', line 5

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



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/bbcode/html_handler.rb', line 10

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] }]
			}], false)
		}
	end
	super name, handler
end