Module: Rails::Sh::Helpers
- Included in:
- Forkable
- Defined in:
- lib/rails/sh/helpers.rb
Instance Method Summary collapse
-
#lesspipe(*args) ⇒ Object
copy from pry: github.com/pry/pry.
Instance Method Details
#lesspipe(*args) ⇒ Object
copy from pry: github.com/pry/pry
Create scrollable output via less!
This command runs ‘less` in a subprocess, and gives you the IO to its STDIN pipe so that you can communicate with it.
Example:
lesspipe do |less|
50.times { less.puts "Hi mom!" }
end
The default less parameters are:
-
Allow colour
-
Don’t wrap lines longer than the screen
-
Quit immediately (without paging) if there’s less than one screen of text.
You can change these options by passing a hash to ‘lesspipe`, like so:
lesspipe(:wrap=>false) { |less| less.puts essay.to_s }
It accepts the following boolean options:
:color => Allow ANSI colour codes?
:wrap => Wrap long lines?
:always => Always page, even if there's less than one page of text?
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/rails/sh/helpers.rb', line 31 def lesspipe(*args) if args.any? and args.last.is_a?(Hash) = args.pop else = {} end output = args.first if args.any? params = [] params << "-R" unless [:color] == false params << "-S" unless [:wrap] == true params << "-F" unless [:always] == true if [:tail] == true params << "+\\>" $stderr.puts "Seeking to end of stream..." end params << "-X" IO.popen("less #{params * ' '}", "w") do |less| if output less.puts output else yield less end end end |