Class: HighLine::Paginator
Overview
Take the task of paginating some piece of text given a HighLine context
Instance Attribute Summary collapse
-
#highline ⇒ HighLine
readonly
HighLine context.
Instance Method Summary collapse
-
#continue_paging? ⇒ Boolean
Ask user if they wish to continue paging output.
-
#initialize(highline) ⇒ Paginator
constructor
Returns a HighLine::Paginator instance where you can call #page_print on it.
-
#page_print(text) ⇒ String
Page print a series of at most page_at lines for output.
Constructor Details
#initialize(highline) ⇒ Paginator
Returns a HighLine::Paginator instance where you can call #page_print on it.
14 15 16 |
# File 'lib/highline/paginator.rb', line 14 def initialize(highline) @highline = highline end |
Instance Attribute Details
#highline ⇒ HighLine (readonly)
Returns HighLine context.
7 8 9 |
# File 'lib/highline/paginator.rb', line 7 def highline @highline end |
Instance Method Details
#continue_paging? ⇒ Boolean
Ask user if they wish to continue paging output. Allows them to type “q” to cancel the paging process.
45 46 47 48 49 50 |
# 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 |
#page_print(text) ⇒ String
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.
28 29 30 31 32 33 34 35 36 37 38 39 |
# 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 |