From 8e8cd649be669910e360e0be43eb9a9f4d6edd58 Mon Sep 17 00:00:00 2001 From: keiju Date: Wed, 13 Apr 2005 15:30:15 +0000 Subject: * bin/irb lib/irb.rb lib/irb/...: IRB 0.9.5(new files) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/irb/output-method.rb | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/irb/output-method.rb (limited to 'lib/irb/output-method.rb') diff --git a/lib/irb/output-method.rb b/lib/irb/output-method.rb new file mode 100644 index 0000000000..93db767de4 --- /dev/null +++ b/lib/irb/output-method.rb @@ -0,0 +1,85 @@ +# +# 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 + + # % + # <フラグ> [#0- +] + # <最小フィールド幅> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*) + # <精度>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)? + # #<長さ修正文字>(hh|h|l|ll|L|q|j|z|t) + # <変換修正文字>[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) + puts *objs.collect{|obj| obj.inspect} + end + + def ppx(prefix, *objs) + puts *objs.collect{|obj| prefix+obj.inspect} + end + + end + + class StdioOutputMethod