# Pretty format arrays

**URL:** <https://www.ruby-forum.com/t/pretty-format-arrays/165595>\
**Category:** Ruby\
**Created:** [April 15, 2009, 4:25pm UTC](https://www.ruby-forum.com/t/pretty-format-arrays/165595 "2009-04-15T16:25:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Srijayanth\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e95f7d/32.png) [@Srijayanth\_S](https://www.ruby-forum.com/u/Srijayanth_S)\
**Post date:** [April 15, 2009, 4:25pm UTC](https://www.ruby-forum.com/t/pretty-format-arrays/165595/1 "2009-04-15T16:25:18Z")

</div>

Hello,

I am using OptionParser and one of the nifty things it has is multi line  
descriptions for each option. I have a particularly long list of valid  
arguments for a valid option, for instance  
cities=[London,Paris,NY…].  
If printed in a single line it runs over and looks ugly. My hack so far  
is:

def pretty\_print\_list list,num=5  
a=[]  
(0…list.size).step(num) { |i| a \<\< (list[i…i+num]).join(’,’) }  
a  
end

This returns a list of strings which I pass as \*list to the OptionParser  
.on  
method as follows:

arg.on("–city [CITY]",cities,\*list) { |o| options.city=o }

The hack works fine, but on a broader subject, is there a nice easy way  
of  
grouping arrays? In python Range accepts a step value which is quite  
awesome…

Thanks,

Jayanth

---

<div class="post-metadata">

**Author:** ![Srijayanth\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e95f7d/32.png) [@Srijayanth\_S](https://www.ruby-forum.com/u/Srijayanth_S)\
**Post date:** [April 15, 2009, 4:52pm UTC](https://www.ruby-forum.com/t/pretty-format-arrays/165595/2 "2009-04-15T16:52:54Z")

</div>

2009/4/15 Srijayanth S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> a  
> end
> 
> This returns a list of strings which I pass as \*list to the OptionParser .on  
> method as follows:
> 
> arg.on(“–city [CITY]”,cities,\*list) { |o| options.city=o }
> 
> The hack works fine, but on a broader subject, is there a nice easy way of  
> grouping arrays? In python Range accepts a step value which is quite  
> awesome…

#each\_slice does the job:

irb(main):008:0\> a = (1…10).to\_a  
=\> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
irb(main):009:0\> a.each\_slice(3).to\_a  
=\> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

Cheers

robert

---

<div class="post-metadata">

**Author:** ![Srijayanth\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e95f7d/32.png) [@Srijayanth\_S](https://www.ruby-forum.com/u/Srijayanth_S)\
**Post date:** [April 15, 2009, 4:59pm UTC](https://www.ruby-forum.com/t/pretty-format-arrays/165595/3 "2009-04-15T16:59:21Z")

</div>

On Wed, Apr 15, 2009 at 9:24 AM, Srijayanth S.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> The hack works fine, but on a broader subject, is there a nice easy way of  
> grouping arrays?

You could use Enumerator#each\_slice:

```
require 'enumerator'

def pretty_print_list(list, num=5)
  a = []
  list.each_slice(5) {|s| a << s.join(",") }
  a
end

```

Hope this helps,

Lyle
