Class: IRB::OutputMethod

Inherits:
Object show all
Defined in:
lib/irb/output-method.rb

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

StdioOutputMethod

Defined Under Namespace

Classes: NotImplementedError

Instance Method Summary collapse

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%]


48
49
50
# File 'lib/irb/output-method.rb', line 48

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.



64
65
66
# File 'lib/irb/output-method.rb', line 64

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.



72
73
74
# File 'lib/irb/output-method.rb', line 72

def ppx(prefix, *objs)
  puts(*objs.collect{|obj| prefix+obj.inspect})
end

Open this method to implement your own output method, raises a NotImplementedError if you don’t define #print in your own class.



20
21
22
# File 'lib/irb/output-method.rb', line 20

def print(*opts)
  raise NotImplementedError, "print"
end

#printf(format, *opts) ⇒ Object

Extends IO#printf to format the given opts for Kernel#sprintf using #parse_printf_format



31
32
33
34
35
36
# File 'lib/irb/output-method.rb', line 31

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.



25
26
27
# File 'lib/irb/output-method.rb', line 25

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.



54
55
56
57
58
59
# File 'lib/irb/output-method.rb', line 54

def puts(*objs)
  for obj in objs
    print(*obj)
    print "\n"
  end
end