class HighLine::Paginator

Take the task of paginating some piece of text given a HighLine context

def continue_paging?


type "q" to cancel the paging process.
Ask user if they wish to continue paging output. Allows them to
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

def initialize(highline)

Parameters:
  • highline (HighLine) -- context
def initialize(highline)
  @highline = highline
end

def page_print(text)

Returns:
  • (String) - last line if paging is aborted

Parameters:
  • text (String) -- text to be paginated
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