class Beckett::Renderer
Constants
- DISPATCHER
Public Class Methods
new(root, options = {})
click to toggle source
Calls superclass method
# File lib/beckett/renderer.rb, line 8 def initialize(root, options = {}) super @stack = [] end
Public Instance Methods
convert(node)
click to toggle source
# File lib/beckett/renderer.rb, line 13 def convert(node) send(DISPATCHER[node.type], node) end
Protected Instance Methods
build(node)
click to toggle source
# File lib/beckett/renderer.rb, line 39 def build(node) Node.find(node).new(node).tap do |result| push(result) inner(node) pop end end
build_section(node)
click to toggle source
# File lib/beckett/renderer.rb, line 47 def build_section(node) level = node.options[:level] while @stack.length > level pop end if level == 1 Node::Article.new(node) else Node::Section.new(node) end end
context()
click to toggle source
# File lib/beckett/renderer.rb, line 61 def context @stack.last end
convert_blank(node)
click to toggle source
# File lib/beckett/renderer.rb, line 29 def convert_blank(node) nil end
convert_node(node)
click to toggle source
# File lib/beckett/renderer.rb, line 23 def convert_node(node) build(node) end
convert_root(node)
click to toggle source
# File lib/beckett/renderer.rb, line 19 def convert_root(node) build(node).to_h end
convert_text(node)
click to toggle source
# File lib/beckett/renderer.rb, line 33 def convert_text(node) Node.find(node).new(node) end
debug?()
click to toggle source
# File lib/beckett/renderer.rb, line 101 def debug? if @debug == nil @debug = (ENV['DEBUG'] == 'true') end @debug end
inner(node)
click to toggle source
# File lib/beckett/renderer.rb, line 65 def inner(node) node.children.each do |child| if child.type == :header build_section(child).tap do |result| context << result push(result) end end convert(child).tap do |result| context << result unless result.nil? end end end
pop()
click to toggle source
# File lib/beckett/renderer.rb, line 90 def pop context = @stack.pop if debug? @indent -= 2 puts "#{' ' * @indent}#{context}".sub(/^(\s*)<([A-Z]+).*/, '\1</\2>') end end
push(context)
click to toggle source
# File lib/beckett/renderer.rb, line 80 def push(context) if debug? @indent ||= 0 puts "#{' ' * @indent}#{context}" @indent += 2 end @stack.push(context) end