diff options
author | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-04-13 15:30:15 +0000 |
---|---|---|
committer | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-04-13 15:30:15 +0000 |
commit | 8e8cd649be669910e360e0be43eb9a9f4d6edd58 (patch) | |
tree | 7df78ae7cb7c7ab2f7cb4c4f95033c13f88f1108 /lib/irb/output-method.rb | |
parent | 914c81e98b4038845fea56f8b88fd9744911ce8b (diff) |
* 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
Diffstat (limited to 'lib/irb/output-method.rb')
-rw-r--r-- | lib/irb/output-method.rb | 85 |
1 files changed, 85 insertions, 0 deletions
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<OutputMethod + def print(*opts) + STDOUT.print *opts + end + end +end |