class HighLine::Paginator
Take the task of paginating some piece of text given a HighLine context
Attributes
highline[R]
@return [HighLine] HighLine context
Public Class Methods
new(highline)
click to toggle source
Returns a HighLine::Paginator instance where you can call {#page_print} on it. @param highline [HighLine] context @example
HighLine::Paginator.new(highline).page_print(statement)
# File lib/highline/paginator.rb, line 13 def initialize(highline) @highline = highline end
Public Instance Methods
continue_paging?()
click to toggle source
Ask user if they wish to continue paging output. Allows them to type “q” to cancel the paging process.
# File lib/highline/paginator.rb, line 44 def continue_paging? command = highline.new_scope.ask( "-- press enter/return to continue or q to stop -- " ) { |q| q.character = true } command !~ /\A[qQ]\Z/ # Only continue paging if Q was not hit. end
page_print(text)
click to toggle source
Page print a series of at most page_at lines for output. After each page is printed, HighLine will pause until the user presses enter/return then display the next page of data.
Note that the final page of output is not printed, but returned instead. This is to support any special handling for the final sequence.
@param text [String] text to be paginated @return [String] last line if paging is aborted
# File lib/highline/paginator.rb, line 27 def page_print(text) return text unless highline.page_at lines = text.lines.to_a while lines.size > highline.page_at highline.puts lines.slice!(0...highline.page_at).join highline.puts # Return last line if user wants to abort paging return "...\n#{lines.last}" unless continue_paging? end lines.join end