Pagination in Readline

Hello All,

I’m writing a Ruby command-line terminal program using Readline, and in
some cases the output from the commands ran by the user overflows the
height of the terminal. Thus, I’d like to be able to have pagination in
the program. Any ideas how to do this?

I found the following blog post
(http://nex-3.com/posts/73-git-style-automatic-paging-in-ruby) that
describes how to to Git-style pagination in a command-line program, but
it wasn’t meant for a terminal-style program. I tried switching the
suggested code around such that I could redirect STDOUT back to the
original IO and could kill the child process used to print the output,
but that didn’t work either.

Any ideas on how to do pagination in Readline would be greatly
appreciated!


Thanks!
Bryan

Hi Brian,

I’m writing a Ruby command-line terminal program using Readline, and in
some cases the output from the commands ran by the user overflows the
height of the terminal. Thus, I’d like to be able to have pagination in
the program. Any ideas how to do this?

I’ve written hirb, http://tagaholic.me/hirb/, which does conditional
stdout pagination
among other things. For your particular case you’d do this:

require ‘hirb’
Hirb::View.enable
Hirb::View.capture_and_render { puts output }

If the output exceeds your console height, it should default to a
system pager.
If this doesn’t work you may need to pass your console’s width and
height explicitly to Hirb:
Hirb::View.resize(width, height)

If Hirb doesn’t do exactly what you want, you can also just rip out
the pagination stuff + tweak it.

Gabriel

Awesome Gabe! This worked PERFECTLY! Thank you so much for pointing
out
your project!


Bryan

2009/7/23 cldwalker [email protected]

On Jul 23, 4:44 pm, Bryan R. [email protected] wrote:

[Note: parts of this message were removed to make it a legal post.]

Awesome Gabe! This worked PERFECTLY! Thank you so much for pointing out
your project!

Glad it worked out :slight_smile:
Gabriel

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs