class DraftjsExporter::WrapperState
Attributes
block_map[R]
document[R]
fragment[R]
wrapper[R]
Public Class Methods
new(block_map)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 3 def initialize(block_map) @block_map = block_map @document = Nokogiri::HTML::Document.new @fragment = Nokogiri::HTML::DocumentFragment.new(document) reset_wrapper end
Public Instance Methods
element_for(block)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 10 def element_for(block) type = block.fetch(:type, 'unstyled') document.create_element(block_options(type)).tap do |e| parent_for(type).add_child(e) end end
to_html(options = {})
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 21 def to_html(options = {}) fragment.to_html(options) end
to_s()
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 17 def to_s to_html end
Private Instance Methods
block_options(type)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 63 def block_options(type) block_map.fetch(type).fetch(:element) end
create_wrapper(options)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 67 def create_wrapper(options) document.create_element(*options).tap do |new_element| reset_wrapper.add_child(new_element) set_wrapper(new_element, options) end end
nokogiri_options(element_name, element_attributes)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 56 def nokogiri_options(element_name, element_attributes) config = element_attributes || {} options = {} options[:class] = config.fetch(:className) if config.key?(:className) [element_name, options] end
parent_for(type)
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 41 def parent_for(type) options = block_map.fetch(type) return reset_wrapper unless options.key?(:wrapper) new_options = nokogiri_options(*options.fetch(:wrapper)) return wrapper_element if new_options == wrapper_options create_wrapper(new_options) end
reset_wrapper()
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 51 def reset_wrapper set_wrapper(fragment) wrapper_element end
set_wrapper(element, options = {})
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 29 def set_wrapper(element, options = {}) @wrapper = [element, options] end
wrapper_element()
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 33 def wrapper_element @wrapper[0] || fragment end
wrapper_options()
click to toggle source
# File lib/draftjs_exporter/wrapper_state.rb, line 37 def wrapper_options @wrapper[1] end