class Dominate::Dom
Constants
- PARTIAL_REGEX
- PARTIAL_REGEX_WITHIN
- YIELD_REGEX
Attributes
config[RW]
doc[RW]
instance[RW]
options[RW]
raw_html[RW]
Public Class Methods
new(raw_html, instance = false, config = {})
click to toggle source
# File lib/dominate/dom.rb, line 9 def initialize raw_html, instance = false, config = {} @raw_html = raw_html @instance = instance @config = (Dominate.config.to_h.merge config).to_deep_ostruct set_doc raw_html load_html if Dominate.config.view_path end
Public Instance Methods
apply(data, &block)
click to toggle source
# File lib/dominate/dom.rb, line 69 def apply data, &block @scope.apply data, &block self end
apply_instance()
click to toggle source
# File lib/dominate/dom.rb, line 75 def apply_instance reset_html Scope.new(instance, config, doc).apply_instance end
html()
click to toggle source
# File lib/dominate/dom.rb, line 62 def html @html ||= begin apply_instance if instance "#{doc}" end end
load_html()
click to toggle source
# File lib/dominate/dom.rb, line 18 def load_html load_layout if config.layout inner_html = doc.to_s updated_html = inner_html.gsub(PARTIAL_REGEX_WITHIN) do |m| match = m.strip.match(PARTIAL_REGEX) partial = match[1] HTML.load_file "#{view_path}/#{partial}", config, instance end updated_html = updated_html.gsub(PARTIAL_REGEX) do |m| partial = $~.captures.first HTML.load_file "#{view_path}/#{partial}", config, instance end set_doc updated_html # doc.traverse do |e| # if match = e.to_html.strip.match(PARTIAL_REGEX) # partial = match[1] # e.swap Nokogiri::HTML.fragment( # HTML.load_file "#{view_path}/#{partial}", config, instance # ) # end # end end
load_layout()
click to toggle source
# File lib/dominate/dom.rb, line 46 def load_layout path = "#{config.view_path}/#{config.layout}" html = HTML.load_file path, config, instance inner_html = doc.inner_html doc.inner_html = html.gsub YIELD_REGEX, inner_html end
reset_html()
click to toggle source
# File lib/dominate/dom.rb, line 80 def reset_html @html = false end
scope(name, &block)
click to toggle source
# File lib/dominate/dom.rb, line 53 def scope name, &block root_doc = doc.search("[data-scope='#{name}']") @scope = Scope.new instance, config, root_doc Instance.new(instance, config).instance_exec(root_doc, &block) if block self end
Private Instance Methods
set_doc(html)
click to toggle source
# File lib/dominate/dom.rb, line 86 def set_doc html @doc = Nokogiri::HTML html end
view_path()
click to toggle source
# File lib/dominate/dom.rb, line 90 def view_path config.view_path end