require 'cgi' def title puts "

#{@_data}

" end def section puts "
" * 2 + "#{@_data}" + "
" end def code _puts "
"
  _body {|line| _puts "   #{::CGI.escape_html(line)}" }   # indentation
  _puts "
" end def rx(str) ::Regexp.compile(::Regexp.escape(str)) end def list puts "" end def nlist puts "
    " _body {|line| puts "
  1. #{_formatting(line)}
  2. " } _puts "
" end def dlist delim = "~~" _puts "" _body do |line| # @tty.puts "Line = #{line}" line = _formatting(line) # @tty.puts "Line = #{line}\n " term, defn = line.split(delim) _puts "" _puts "" _puts "" end _puts "
#{term}#{defn}
" end def inout src, out = _args t1 = ::File.readlines(src) rescue (abort "t1 = #{src}") t2 = ::File.readlines(out) rescue (abort "t2 = #{out}") # To pacify markdown for README (FIXME later) t1 = t1.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join t2 = t2.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join # t1 = ::CGI.escape_html(t1) # t2 = ::CGI.escape_html(t2) puts <<-HTML
Input Output
#{t1}
#{t2}
HTML end def put_table(src, exp) t1 = ::File.readlines(src) rescue (abort "t1 = #{src}") t2 = ::File.readlines(exp) rescue (abort "t2 = #{out}") t1 = t1.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join t2 = t2.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join puts <<-HTML
Input Output
#{t1}
#{t2}
HTML end def testcase name = _args.first # _puts "\nTest: #{name.gsub(/_/, "\\_")}
" _puts "\nTest: #{name}
" src, exp = "test/testfiles/#{name}/source.ltx", "test/testfiles/#{name}/expected-output.txt" @_args = [src, exp] # Better way to do this?? # inout # Weird - only place I've done this yet. put_table(src, exp) _puts "
" end