Sha256: 8b9e559e40a40602ce22785a0260cf4790d61a6077f817569e331fc10cb64bec
Contents?: true
Size: 1.67 KB
Versions: 3
Compression:
Stored size: 1.67 KB
Contents
# coding: utf-8 class HighLine # Take the task of paginating some piece of text given a HighLine context class Paginator # @return [HighLine] HighLine context attr_reader :highline # 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) def initialize(highline) @highline = highline 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 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 return lines.join end # # Ask user if they wish to continue paging output. Allows them to type "q" to # cancel the paging process. # 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
highline-2.0.0.pre.develop.9 | lib/highline/paginator.rb |
highline-2.0.0.pre.develop.6 | lib/highline/paginator.rb |
highline-2.0.0.pre.develop.4 | lib/highline/paginator.rb |