module HamdownCore::Transformer
Public Class Methods
call(ast)
click to toggle source
# File lib/hamdown_core/transformer.rb, line 6 def call(ast) transform(ast) end
Private Class Methods
create_filter(nodes)
click to toggle source
# File lib/hamdown_core/transformer.rb, line 52 def create_filter(nodes) filter = HamdownCore::Ast::Filter.new filter.name = 'markdown' nodes.each do |collected_node| filter.texts << collected_node.text end filter end
transform(root_node)
click to toggle source
# File lib/hamdown_core/transformer.rb, line 12 def transform(root_node) collected_nodes = [] new_root_node = root_node.clone new_root_node.children = [] root_node.children.each do |node| if node.respond_to?(:markdownable?) && node.markdownable? collected_nodes << node next end if collected_nodes.size > 0 filter = create_filter(collected_nodes) collected_nodes = [] new_root_node << filter end if node.respond_to?(:children) && node.children.size > 0 node = transform(node) end if node.respond_to?(:html_list?) and node.html_list? filter = if node.ol_list? create_filter(node.children.map(&:to_ol_list_item!)) else create_filter(node.children.map(&:to_ul_list_item!)) end node = filter end new_root_node << node end if collected_nodes.size > 0 filter = create_filter(collected_nodes) collected_nodes = [] new_root_node << filter end new_root_node end