namedlock 0.2.1

Namespaces for named locks
require 'cgi'

lines=[]
last_line=nil
trace=nil
IO.foreach(ARGV[0]) { |line|
	if line=~/^ / then
		trace||=[]
		trace << line
	elsif line=~/^stack backtrace/ then
		trace=nil
	else
		lines << [last_line,trace] unless last_line.nil?
		trace=nil
		last_line=line
	end
}
lines << [last_line,trace] unless last_line.nil?

puts <<EOF
<style type="text/css">
input, pre { display: none }
input:checked + pre { display: block }
</style>
EOF

i=0
lines.each { |line,trace|
	vis=(trace.nil?) ? ' style="visibility:hidden"' : ""
	puts "<label for=\"line#{i}\" style=\"font-family:monospace\"><span#{vis}>+ </span>#{CGI.escapeHTML(line.strip)}</label><br>"
	puts "<input id=\"line#{i}\" type=\"checkbox\"><pre>#{CGI.escapeHTML(trace*"")}</pre>" unless trace.nil?
	i+=1
}