Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 64 lines (59 sloc) 1.571 kb
class Pry::Pager
#
# @param [String] text
# A piece of text to run through a pager.
#
# @param [:simple] pager
# Use the pure ruby pager.
#
# @param [:system] pager
# Use the system pager (less)
#
# @param [nil] pager
# Infer what pager to use from the environment.
# What this really means is that JRuby and systems that do not have access
# to 'less' will run through the pure ruby pager.
#
# @return [void]
#
def self.page(text, pager = nil)
case pager
when nil
no_pager = !(`less` rescue nil)
is_jruby = defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
(is_jruby || no_pager) ? SimplePager.new(text).page : SystemPager.new(text).page
when :simple
SimplePager.new(text).page
when :system
SystemPager.new(text).page
else
raise "'#{pager}' is not a recongized pager."
end
end
def self.page_size
27
end
def initialize(text)
@text = text
end
class SimplePager < Pry::Pager
def page
text_array = @text.lines.to_a
text_array.each_slice(Pry::Pager.page_size) do |chunk|
puts chunk.join
break if chunk.size < Pry::Pager.page_size
if text_array.size > Pry::Pager.page_size
puts "\n<page break> --- Press enter to continue ( q<enter> to break ) --- <page break>"
break if $stdin.gets.chomp == "q"
end
end
end
end
class SystemPager < Pry::Pager
def page
IO.popen("less -R -S -F -X", "w") do |less|
less.puts @text
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.