class MarkupNode
MarkupNode
is an wrapper introduced to simplify
producing Pandoc markdown output. It's a delegator to the Node class
Public Instance Methods
body()
click to toggle source
@return [String] output text for node.body
Calls superclass method
# File lib/assets/lib/markup_node.rb, line 46 def body String.new(super).tap do |txt| process_links!(txt) process_macro!(txt) txt.gsub!(/^$\n{2,}/, "\n") end end
link(ref)
click to toggle source
@return [String] output text for link [[node.id]]
# File lib/assets/lib/markup_node.rb, line 55 def link(ref) node = root.find{|n| n.id == ref} return "[#{ref}](#unknown)" unless node "[#{node.title}](##{url(ref)})" end
markup()
click to toggle source
# File lib/assets/lib/markup_node.rb, line 18 def markup [title, meta, body].select{|part| !part.empty?}.join("\n\n") end
meta()
click to toggle source
@return [String] output text of node.meta
Calls superclass method
# File lib/assets/lib/markup_node.rb, line 30 def meta return '' if nesting_level == 0 return '' if super[:skip_meta] hsh = {id: id}.merge(super) hsh.delete(:order_index) hsh.delete(:filename) hsh.delete(:parent) [].tap{|ary| ary << "Attribute | Value" ary << "--------- | -----" hsh.each{|k,v| ary << "#{k} | #{v}"} }.join("\n") end
title()
click to toggle source
@return [String] output text of node.title
Calls superclass method
# File lib/assets/lib/markup_node.rb, line 23 def title s = super s = ".#{id.split(/\./).last}" if s.empty? "#{'#' * nesting_level} #{s} {##{url(id)}}" end
url(id)
click to toggle source
@return [String] url for node.id
# File lib/assets/lib/markup_node.rb, line 62 def url(id) r = id.start_with?(/[[:digit:]]/) ? "p#{id}" : id r.downcase .gsub(/[^A-Za-z0-9]{1,}/, '-') .gsub(/^-/, '') .gsub(/-$/, '') end
Private Instance Methods
process_links!(source)
click to toggle source
process links and replace macros by markup output @param source [String] input string @return [String] markup output
# File lib/assets/lib/markup_node.rb, line 75 def process_links!(source) links.each{ |l| source.gsub!("[[#{l}]]", link(l)) } end
process_macro!(source)
click to toggle source
# File lib/assets/lib/markup_node.rb, line 79 def process_macro!(source) @@macros.each do |macro| source.scan(macro.regex).each do |i| source.gsub!(i, macro.process(i, self)) end end end