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 ""
_body {|line| puts "- #{_formatting(line)}
" }
_puts "
"
end
def nlist
puts ""
_body {|line| puts "- #{_formatting(line)}
" }
_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 " | #{term} | #{defn} | "
_puts "
"
end
_puts "
"
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
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
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