class Pry::Pager::PageTracker - pry-0.10.1 Documentation

# class Pry::Pager::PageTracker

`PageTracker` tracks output to determine whether it’s likely to take up a whole page. This doesn’t need to be super precise, but we can use it for `SimplePager` and to avoid invoking the system pager unnecessarily.

One simplifying assumption is that we don’t need `#page?` to return `true` on the basis of an incomplete line. Long lines should be counted as multiple lines, but we don’t have to transition from `false` to `true` until we see a newline.

### Public Class Methods

new(rows, cols) click to toggle source

    # File lib/pry/pager.rb, line 203
    def initialize(rows, cols)
      @rows, @cols = rows, cols
      reset
    end

### Public Instance Methods

page?() click to toggle source

    # File lib/pry/pager.rb, line 219
    def page?
      @row >= @rows
    end

record(str) click to toggle source

    # File lib/pry/pager.rb, line 208
    def record(str)
      str.lines.each do |line|
        if line.end_with? "\n"
          @row += ((@col + line_length(line) - 1) / @cols) + 1
          @col  = 0
        else
          @col += line_length(line)
        end
      end
    end

reset() click to toggle source

    # File lib/pry/pager.rb, line 223
    def reset
      @row = 0
      @col = 0
    end