class HighLine::Paginator
Take the task of paginating some piece of text given a HighLine
context
Attributes
@return [HighLine] HighLine
context
Public Class Methods
Source
# File lib/highline/paginator.rb, line 14 def initialize(highline) @highline = highline end
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)
Public Instance Methods
Source
# File lib/highline/paginator.rb, line 45 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
Ask user if they wish to continue paging output. Allows them to type “q” to cancel the paging process.
Source
# File lib/highline/paginator.rb, line 28 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
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