# 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.new`, or `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 54
    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 70
    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 78
    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 26
    def print(*opts)
      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 37
    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 31
    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 60
    def puts(*objs)
      for obj in objs
        print(*obj)
        print "\n"
      end
    end