2005-04-13 19:30:15 +04:00
|
|
|
|
#
|
|
|
|
|
# output-method.rb - optput methods used by irb
|
|
|
|
|
# $Release Version: 0.9.5$
|
|
|
|
|
# $Revision$
|
|
|
|
|
# $Date$
|
|
|
|
|
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
|
|
|
|
#
|
|
|
|
|
# --
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
require "e2mmap"
|
|
|
|
|
|
|
|
|
|
module IRB
|
|
|
|
|
# OutputMethod
|
|
|
|
|
# StdioOutputMethod
|
|
|
|
|
|
|
|
|
|
class OutputMethod
|
|
|
|
|
@RCS_ID='-$Id$-'
|
|
|
|
|
|
|
|
|
|
def print(*opts)
|
|
|
|
|
IRB.fail NotImplementError, "print"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def printn(*opts)
|
|
|
|
|
print opts.join(" "), "\n"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# extend printf
|
|
|
|
|
def printf(format, *opts)
|
|
|
|
|
if /(%*)%I/ =~ format
|
|
|
|
|
format, opts = parse_printf_format(format, opts)
|
|
|
|
|
end
|
|
|
|
|
print sprintf(format, *opts)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# %
|
|
|
|
|
# <<3C>ե饰> [#0- +]
|
|
|
|
|
# <<3C>Ǿ<EFBFBD><C7BE>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
|
|
|
|
|
# <<3C><><EFBFBD><EFBFBD>>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
|
|
|
|
|
# #<Ĺ<><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>>(hh|h|l|ll|L|q|j|z|t)
|
|
|
|
|
# <<3C>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>>[diouxXeEfgGcsb%]
|
|
|
|
|
def parse_printf_format(format, opts)
|
|
|
|
|
return format, opts if $1.size % 2 == 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def foo(format)
|
|
|
|
|
pos = 0
|
|
|
|
|
inspects = []
|
|
|
|
|
format.scan(/%[#0\-+ ]?(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9]))?(\.(\*(?=[^0-9])|\*[1-9][0-9]*\$|[1-9][0-9]*(?=[^0-9])))?(([1-9][0-9]*\$)*)([diouxXeEfgGcsb%])/) {|f, p, pp, pos, new_pos, c|
|
|
|
|
|
puts [f, p, pp, pos, new_pos, c].join("!")
|
|
|
|
|
pos = new_pos if new_pos
|
|
|
|
|
if c == "I"
|
|
|
|
|
inspects.push pos.to_i
|
|
|
|
|
(f||"")+(p||"")+(pp||"")+(pos||"")+"s"
|
|
|
|
|
else
|
|
|
|
|
$&
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def puts(*objs)
|
|
|
|
|
for obj in objs
|
|
|
|
|
print(*obj)
|
|
|
|
|
print "\n"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def pp(*objs)
|
2005-04-14 10:16:08 +04:00
|
|
|
|
puts(*objs.collect{|obj| obj.inspect})
|
2005-04-13 19:30:15 +04:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def ppx(prefix, *objs)
|
2005-04-14 10:16:08 +04:00
|
|
|
|
puts(*objs.collect{|obj| prefix+obj.inspect})
|
2005-04-13 19:30:15 +04:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
class StdioOutputMethod<OutputMethod
|
|
|
|
|
def print(*opts)
|
2005-04-14 10:16:08 +04:00
|
|
|
|
STDOUT.print(*opts)
|
2005-04-13 19:30:15 +04:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|