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

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


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

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

Raises:

  • (NotImplementedError)


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