Class: Pry::Pager::PageTracker
Overview
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.
Instance Method Summary collapse
-
#initialize(rows, cols) ⇒ PageTracker
constructor
A new instance of PageTracker.
- #page? ⇒ Boolean
- #record(str) ⇒ Object
- #reset ⇒ Object
Constructor Details
#initialize(rows, cols) ⇒ PageTracker
Returns a new instance of PageTracker.
203 204 205 206 |
# File 'lib/pry/pager.rb', line 203 def initialize(rows, cols) @rows, @cols = rows, cols reset end |
Instance Method Details
#page? ⇒ Boolean
219 220 221 |
# File 'lib/pry/pager.rb', line 219 def page? @row >= @rows end |
#record(str) ⇒ Object
208 209 210 211 212 213 214 215 216 217 |
# 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 ⇒ Object
223 224 225 226 |
# File 'lib/pry/pager.rb', line 223 def reset @row = 0 @col = 0 end |