class ContentfulConverter::TreeCloner
Attributes
noko_stack[R]
nokogiri_fragment[R]
rich_stack[R]
Public Class Methods
new(nokogiri_fragment, noko_stack, rich_stack)
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 16 def initialize(nokogiri_fragment, noko_stack, rich_stack) @nokogiri_fragment = nokogiri_fragment @noko_stack = noko_stack @rich_stack = rich_stack end
nokogiri_to_rich_text(nokogiri_fragment)
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 8 def self.nokogiri_to_rich_text(nokogiri_fragment) if nokogiri_fragment.children.empty? return NodeBuilder.build(nokogiri_fragment).to_h end new(nokogiri_fragment, Stack.new, Stack.new).traverse_and_clone end
Public Instance Methods
traverse_and_clone()
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 22 def traverse_and_clone initialize_stacks while noko_stack.any? noko_node = noko_stack.pop rich_node = rich_stack.pop next unless noko_node.children.any? children_traversal(noko_node, rich_node) end rich_root_node.to_h end
Private Instance Methods
add_to_stacks(noko_node, rich_node)
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 60 def add_to_stacks(noko_node, rich_node) noko_stack.add(noko_node) rich_stack.add(rich_node) end
children_traversal(noko_node, rich_node)
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 50 def children_traversal(noko_node, rich_node) noko_node.children.each do |child_node| rich_child_node = NodeBuilder.build(child_node, rich_node) add_to_stacks(child_node, rich_child_node) rich_node.add_content(rich_child_node) end end
initialize_stacks()
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 41 def initialize_stacks noko_stack.add(nokogiri_fragment) rich_stack.add(rich_root_node) end
rich_root_node()
click to toggle source
# File lib/contentful_converter/tree_cloner.rb, line 46 def rich_root_node @rich_root_node ||= NodeBuilder.build(nokogiri_fragment) end