require "rd/rdfmt"
require "rd/rd2html-lib"

@rd_style_visitor = RD::RD2HTMLVisitor.new

@rd_style_visitor.instance_eval do
  @base_level = 1
end

def @rd_style_visitor.apply_to_Reference_with_URL(element, content)
  %Q[<a href="#{meta_char_escape(element.label.url).gsub(/@/, '&#64;')}">] +
  %Q[#{content.join("")}</a>]
end

def @rd_style_visitor.apply_to_DocumentElement(element, content)
  foottext = make_foottext || ""
  content.join("") + foottext
end

def @rd_style_visitor.apply_to_Headline(element, title)
  anchor = get_anchor(element)
  label = hyphen_escape(element.label)
  return <<EOF
<h#{@base_level+element.level}><a name="#{anchor}" id="#{anchor}">#{title}</a>
</h#{@base_level+element.level}><!-- RDLabel: "#{label}" -->
EOF
end

def @rd_style_visitor.apply_to_TextBlock(element, content)
  content = content.join("")
  if (is_this_textblock_only_one_block_of_parent_listitem?(element) or
      is_this_textblock_only_one_block_other_than_sublists_in_parent_listitem?(element))
    content.chomp
  else
    %Q[<p>#{content.chomp.gsub(/\r?\n/, "<br />\n")}</p>]
  end
end

def @rd_style_visitor.apply_to_ItemListItem(element, content)
  %Q[<li>#{content.join("\n").chomp.gsub(/\r?\n/, "<br />\n")}</li>]
end

def @rd_style_visitor.apply_to_EnumListItem(element, content)
  %Q[<li>#{content.join("\n").chomp.gsub(/\r?\n/, "<br />\n")}</li>]
end


def rd_style
end

def rd_style_filter
  if @fext != "rd"
    return
  end
  @title.sub!(/^=\s*/, "")
  src = []
  src.push("=begin\n")
  src += @body.to_a
  src.push("=end\n")
  tree = RD::Tree.new(RD::DocumentStructure::RD, src)
  tree.parse
  @body = @rd_style_visitor.visit(tree)
end
