Class: IRB::OutputMethod
Overview
An abstract output class for IO in irb. This is mainly used internally by IRB::Notifier. You can define your own output method to use with Irb.new, or Context.new
Direct Known Subclasses
Instance Method Summary collapse
-
#parse_printf_format(format, opts) ⇒ Object
Returns an array of the given
format
andopts
to be used by Kernel#sprintf, if there was a successful Regexp match in the givenformat
from #printf. -
#pp(*objs) ⇒ Object
Prints the given
objs
calling Object#inspect on each. -
#ppx(prefix, *objs) ⇒ Object
Prints the given
objs
calling Object#inspect on each and appending the givenprefix
. -
#print(*opts) ⇒ Object
Open this method to implement your own output method, raises a NotImplementedError if you don’t define #print in your own class.
-
#printf(format, *opts) ⇒ Object
Extends IO#printf to format the given
opts
for Kernel#sprintf using #parse_printf_format. -
#printn(*opts) ⇒ Object
Prints the given
opts
, with a newline delimiter. -
#puts(*objs) ⇒ Object
Calls #print on each element in the given
objs
, followed by a newline character.
Instance Method Details
#parse_printf_format(format, opts) ⇒ Object
Returns an array of the given format
and opts
to be used by Kernel#sprintf, if there was a successful Regexp match in the given format
from #printf
%
<flag> [#0- +]
<minimum field width> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
<precision>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
#<length modifier>(hh|h|l|ll|L|q|j|z|t)
<conversion specifier>[diouxXeEfgGcsb%]
42 43 44 |
# File 'lib/irb/output-method.rb', line 42 def parse_printf_format(format, opts) return format, opts if $1.size % 2 == 1 end |
#pp(*objs) ⇒ Object
Prints the given objs
calling Object#inspect on each.
See #puts for more detail.
58 59 60 |
# File 'lib/irb/output-method.rb', line 58 def pp(*objs) puts(*objs.collect{|obj| obj.inspect}) end |
#ppx(prefix, *objs) ⇒ Object
Prints the given objs
calling Object#inspect on each and appending the given prefix
.
See #puts for more detail.
66 67 68 |
# File 'lib/irb/output-method.rb', line 66 def ppx(prefix, *objs) puts(*objs.collect{|obj| prefix+obj.inspect}) end |
#print(*opts) ⇒ Object
Open this method to implement your own output method, raises a NotImplementedError if you don’t define #print in your own class.
14 15 16 |
# File 'lib/irb/output-method.rb', line 14 def print(*opts) raise NotImplementedError end |
#printf(format, *opts) ⇒ Object
Extends IO#printf to format the given opts
for Kernel#sprintf using #parse_printf_format
25 26 27 28 29 30 |
# File 'lib/irb/output-method.rb', line 25 def printf(format, *opts) if /(%*)%I/ =~ format format, opts = parse_printf_format(format, opts) end print sprintf(format, *opts) end |
#printn(*opts) ⇒ Object
Prints the given opts
, with a newline delimiter.
19 20 21 |
# File 'lib/irb/output-method.rb', line 19 def printn(*opts) print opts.join(" "), "\n" end |
#puts(*objs) ⇒ Object
Calls #print on each element in the given objs
, followed by a newline character.
48 49 50 51 52 53 |
# File 'lib/irb/output-method.rb', line 48 def puts(*objs) for obj in objs print(*obj) print "\n" end end |