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.
214 215 216 217 218 |
# File 'lib/pry/pager.rb', line 214 def initialize(rows, cols) @rows = rows @cols = cols reset end |
Instance Method Details
#page? ⇒ Boolean
231 232 233 |
# File 'lib/pry/pager.rb', line 231 def page? @row >= @rows end |
#record(str) ⇒ Object
220 221 222 223 224 225 226 227 228 229 |
# File 'lib/pry/pager.rb', line 220 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
235 236 237 238 |
# File 'lib/pry/pager.rb', line 235 def reset @row = 0 @col = 0 end |