# class IRB::OutputMethod

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::Irb.new, or IRB::Context.new

### Public Instance Methods

parse_printf_format(format, opts) click to toggle source

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

    # File lib/irb/output-method.rb, line 53
    def parse_printf_format(format, opts)
      return format, opts if $1.size % 2 == 1
    end

pp(*objs) click to toggle source

Prints the given `objs` calling Object#inspect on each.

See puts for more detail.

    # File lib/irb/output-method.rb, line 69
    def pp(*objs)
      puts(*objs.collect{|obj| obj.inspect})
    end

ppx(prefix, *objs) click to toggle source

Prints the given `objs` calling Object#inspect on each and appending the given `prefix`.

See puts for more detail.

    # File lib/irb/output-method.rb, line 77
    def ppx(prefix, *objs)
      puts(*objs.collect{|obj| prefix+obj.inspect})
    end

print(*opts) click to toggle source

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

    # File lib/irb/output-method.rb, line 25
    def print(*opts)
      OutputMethod.Raise NotImplementedError, "print"
    end

printf(format, *opts) click to toggle source

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

    # File lib/irb/output-method.rb, line 36
    def printf(format, *opts)
      if /(%*)%I/ =~ format
        format, opts = parse_printf_format(format, opts)
      end
      print sprintf(format, *opts)
    end

printn(*opts) click to toggle source

Prints the given `opts`, with a newline delimiter.

    # File lib/irb/output-method.rb, line 30
    def printn(*opts)
      print opts.join(" "), "\n"
    end

puts(*objs) click to toggle source

Calls print on each element in the given `objs`, followed by a newline character.

    # File lib/irb/output-method.rb, line 59
    def puts(*objs)
      for obj in objs
        print(*obj)
        print "\n"
      end
    end