[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:6834] Re: The ruby way...

From: "Fabio Mascarenhas" <mascarenhas@...>
Date: 2000-12-06 02:06:06 UTC
List: ruby-talk #6834
>
> Wondering if someone could critique this code and give me the
> "ruby way" of doing it.  Basically, what it does it get the
> "level" of different items in a menu based on the amount
> of whitespace before the item.   The code does function
> properly, but I have a feeling I may be attacking this the
> wrong way.

Let's apply some refactoring here. :-)

> def get_depths (string)
>   lastv = -1
>   i = 0
>   depth = 0
>   depths = []
>   lens = {}
>   # first get the depth of each line.
>   string.each do |line|
>     len = line =~ /^(\s+)/ ? $1.length : 0
>     lens[i] = len
>     i+=1
>   end
>   lens.sort {|a,b| a[1] <=>b[1]}.each do |k, v|
>     if(v > lastv)
>       depth+=1
>     end
>     lastv = v
>     depths[k] = depth
> #    print "k: #{k} v: #{v} d: #{depth}\n"
>   end
>   i=0
>   string.each do |line|
>     print depths[i], " #{line}"
>     i+=1
>   end
> end
>
> get_depths(<<EOF
> text1@url1
>   text2@url2
>     text3@url3
>       text3.1@url3.1
>       text3.2@url3.2
>          text4@url4
>       text5@url5
>          text6@url6
>       text7@url7
>       text8@url8
> text9@url9
> EOF
> )
>
> prints:
> 1 text1@url1
> 2   text2@url2
> 3     text3@url3
> 4       text3.1@url3.1
> 4       text3.2@url3.2
> 5          text4@url4
> 4       text5@url5
> 5          text6@url6
> 4       text7@url7
> 4       text8@url8
> 1 text9@url9
>
>

def get_lengths(string)
  lens={}
  string.each_with_index do |line,i|
    lens[i] = line.index(/[^\s]/)
  end
  lens
end

def get_depths(lens)
  last_depth,depths=0,[]
  lens.sort {|a,b| a[1] <=>b[1]}.each do |line, depth|
    depth+=1 if depth > last_depth
    depths[line] = last_depth = depth
  end
  depths
end

def print_depths(string,depths)
  string.each_with_index do |line,i|
    print depths[i], " #{line}"
  end
  self
end

def get_depths (string)
  lens=get_lenghts(string)
  depths=get_depths(string,lens)
  print_depths(string,depths)
end

Well, that's it. Lots of refactoring. Mainly extract method, and better use
of iterators.

Fabio Mascarenhas
mascarenhas@acm.org
mascarenhas@elitenet.com.br



In This Thread