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
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_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