#!/usr/bin/ruby -w
# -*- ruby -*-
# Very minimal logging output. If $verbose is set, this displays the method and
# line number whence called.
module Log
@@verbose = false
@@width = 0
@@output = $stdout
@@fmt = "[%s:%04d] {%s} %s\n"
@@align = false
def Log.verbose=(v)
@@verbose = v
end
def Log.output=(fname)
@@output = File.new(fname, "w")
end
def Log.set_widths(file_width, line_width, func_width)
@@fmt = "[%#{file_width}s:%#{line_width}d] {%#{func_width}s} %s\n"
end
def Log.align
@@align = true
end
def Log.log(msg)
if @@verbose
c = caller(1)[0]
c.index(/(.*):(\d+)(?::in \`(.*)\')?/)
file, line, func = $1, $2, $3
file.sub!(/.*\//, "")
if @@align
@@width = [ @@width, func.length ].max
@@output.printf "[%s:%04d] {%-*s} %s\n", file, line, @@width, func, msg.chomp
else
@@output.printf @@fmt, file, line, func, msg.chomp
end
end
end
def log(msg)
if @@verbose
c = caller(1)[0]
c.index(/(.*):(\d+)(?::in \`(.*)\')?/)
file, line, func = $1, $2, $3
func = self.class.to_s + "#" + func
file.sub!(/.*\//, "")
if @@align
@@width = [ @@width, func.length ].max
@@output.printf "[%s:%04d] {%-*s} %s\n", file, line, @@width, func, msg.chomp
else
@@output.printf @@fmt, file, line, func, msg.chomp
end
end
end
protected
end
syntax highlighted by Code2HTML, v. 0.9.1