[#18974] Perl/Python/Ruby common backend (Perl6) — ptkwt@...1.aracnet.com (Phil Tomson)

There is a thread about using .NET's CLR as a backend for Ruby, but how

17 messages 2001/08/01

[#19064] ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...>

17 messages 2001/08/03
[#19184] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Fri, 3 Aug 2001, David Alan Black wrote:

[#19185] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...> 2001/08/06

Hello --

[#19186] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Mon, 6 Aug 2001, David Alan Black wrote:

[#19125] My 1st look @ ruby: No prototypes and problem with String#gsub — stesch@... (Stefan Scholl)

My first ruby program:

23 messages 2001/08/04

[#19192] Some remarks from a nembie in Ruby — Renaud HEBERT <renaud.hebert@...>

After having read the book "Programming Ruby: The Pragmatic Programmer's

38 messages 2001/08/06

[#19269] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — ptkwt@...1.aracnet.com (Phil Tomson)

In article <72X97.12093$9i1.972452@e420r-atl1.usenetserver.com>,

50 messages 2001/08/07
[#19349] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Mathieu Bouchard <matju@...> 2001/08/08

[#19456] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Harry Ohlsen <harryo@...> 2001/08/09

Ned Konz wrote:

[#19451] Re: Help! I'm still confused about threadin g in the ML — "Morris, Chris" <chris.morris@...>

> Is there an Outlook option to turn on In-Reply-To or References

14 messages 2001/08/09
[#19453] Re: Help! I'm still confused about threadin g in the ML — Dave Thomas <Dave@...> 2001/08/09

"Morris, Chris" <chris.morris@snelling.com> writes:

[#19506] the way class variables work — David Alan Black <dblack@...>

Hello --

51 messages 2001/08/10
[#19511] Re: the way class variables work — Chris Uzdavinis <chris@...> 2001/08/11

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

[#19524] order and freedom in Ruby (was: Re: Re: the way class variables work) — David Alan Black <dblack@...> 2001/08/11

Hello --

[#19517] Why not?: Assigning to self — furufuru@... (Ryo Furue)

Hi there,

55 messages 2001/08/11
[#19689] Re: Why not?: Assigning to self — Ron Jeffries <ronjeffries@...> 2001/08/14

On 13 Aug 2001 20:59:54 -0700, furufuru@ccsr.u-tokyo.ac.jp (Ryo Furue)

[#19694] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 05:09 am, Ron Jeffries wrote:

[#19695] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19696] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 07:51 am, you wrote:

[#19697] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19700] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 08:27 am, you wrote:

[#19701] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19703] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:05 am, Guy Decoux wrote:

[#19704] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19708] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:27 am, you wrote:

[#19709] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19713] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:45 am, you wrote:

[#19750] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/15

Hi,

[#19819] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/15

On Tuesday 14 August 2001 08:14 pm, matz wrote:

[#19852] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19857] Re: Why not?: Assigning to self — "Florian G. Pflug" <fgp@...> 2001/08/16

On Thu, Aug 16, 2001 at 11:05:59AM +0900, Yukihiro Matsumoto wrote:

[#19858] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19867] Re: Why not?: Assigning to self — "Pit Capitain" <pit@...> 2001/08/16

Just a followup at (my) current end of the thread:

[#19550] Forced garbage collection — Lars Christensen <larsch@...>

14 messages 2001/08/11
[#19562] Re: Forced garbage collection — "Nat Pryce" <nat.pryce@...13media.com> 2001/08/12

From: "Lars Christensen" <larsch@cs.auc.dk>

[#19551] /.ed again — Tobias Reif <tobiasreif@...>

Ruy gets slasdotted again ;)

19 messages 2001/08/11

[#19650] Ruby Newbie mailing list — Michael Pence <mikepence@...>

Hello all.

14 messages 2001/08/13
[#19656] RE: Ruby Newbie mailing list — "Louis Brothers" <lcb134@...> 2001/08/13

We had a similar discussion on the OmniWeb Objective-C mailing list not to

[#19659] Re: Ruby Newbie mailing list — Michael Pence <mikepence@...> 2001/08/13

I appreciate your references to Objectionable-C ;-)

[#19685] Compiling Ruby with cygwin and Tk support — Manuel Zabelt <ng@...>

Hello!

13 messages 2001/08/14

[#19718] General (GUI/license) questions — Ryan Tarpine <rtarpine@...>

First: Kero commented in the description of his new Ruby Agenda program

18 messages 2001/08/14

[#19755] "new" returning nil: how to report the failure of object creation — furufuru@... (Ryo Furue)

Hi there,

14 messages 2001/08/15

[#19758] The GUI poll is in, and the results are surprising — Dave Thomas <Dave@...>

40 messages 2001/08/15
[#19774] Re: The GUI poll is in, and the results are surprising — Lars Christensen <larsch@...> 2001/08/15

On Wed, 15 Aug 2001, Dave Thomas wrote:

[#19784] Re: The GUI poll is in, and the results aresurprising — "Lyle Johnson" <ljohnson@...> 2001/08/15

> Please don't forget what Ruby is all about in this discussion! I think

[#19824] Ruby GUI — "Hal E. Fulton" <hal9000@...>

The concept of a new GUI is somewhat appealing,

16 messages 2001/08/15

[#20033] Ruby Article — Joshua Drake <jd.nospam@...>

Hello,

38 messages 2001/08/20

[#20127] Another Possible RCR - Wrappers via Mixins — Stephen White <spwhite@...>

The main difference between mix-ins and multiple inheritence is (to my understanding) that parent classes do not call child code, but mix-ins do.

15 messages 2001/08/22

[#20135] Bruce Eckel's criticism of Ruby — Ned Konz <ned@...>

Python.org links to http://www.mindview.net/Etc/notes.html#Ruby , saying

24 messages 2001/08/22

[#20183] ++ Operator — kamphausen@... (SKa)

Dear Community,

35 messages 2001/08/23
[#20234] Re: ++ Operator — Dave Thomas <Dave@...> 2001/08/24

matz@ruby-lang.org (Yukihiro Matsumoto) writes:

[#20236] Re: ++ Operator — matz@... (Yukihiro Matsumoto) 2001/08/24

Hi,

[#20209] In Ruby 0 is true but nil is false.. or how to shoot yourself?.. — Guillaume Cottenceau <gc@...>

I have a simple Audio-CD database (using CSV format). I was writing a

11 messages 2001/08/23

[#20254] File.readline(s) — Michael Husmann <michael.husmann@...>

I am reading a 55MB ASCII file by using File.readline(s) which takes on

14 messages 2001/08/24

[#20303] New Windows InstallShield version of Ruby — Andrew Hunt <andy@...>

19 messages 2001/08/24

[#20307] Backwards language — "Sean Middleditch" <elanthis@...>

Greetings,

30 messages 2001/08/24

[ruby-talk:20038] Re: Ruby Article

From: Michael Neumann <neumann@...>
Date: 2001-08-20 23:10:09 UTC
List: ruby-talk #20038
Joshua Drake wrote:
> Hello,
> 
> I am the author of the Programming in ruby on IBM Developworks. I have been
> reviewing all the feedback I received on the first article. Most of the
> feedback was positive but I did receive some negative feedback about
> my use of Global variables, and the over simplified approach I used
> for some of the examples.
> 
> I am getting ready to release the second article, but I want to get
> some feedback from the ruby community first. I would like the second
> article to be more ruby centric and will need some help.
> 
> I have a lot of experience in Perl and moderate experience with
> Python. ruby I have only been using part time and we are increasing
> our usage but I am having a hard time figuring out what is "good"
> about ruby (excluding the pure OO).
> 
> Anyway, without getting too wordy, I have included two example 
> scripts that I was going to include in the second article. I 
> would sincerely appreciate it if some of the more experienced 
> ruby programmers would provide some feedback on it. No, the 
> scripts are not terribly advanced. The first script opens a file
> in append mode and asks for some input. The second allows you
> to search through the file you created.
> 
> I really want to present ruby in a good light with the next article.
> Any help would be greatly appreciated.
> 
> Sincereley,
> 
> Joshau Drake
> 
> == Begin Script
> #!/usr/bin/ruby
> begin
>  myfile = open('phonespec.txt', 'a')

I'd use "File.open" instead of "open". I think the multitude of Ruby
user do so as well. 
Do you know that

  File.open("phonespec.txt", "a") do |f|
    # .... do whatever with f
  end 

is equivalent to

  begin
    f = File.open(....)
    # .... do whatever with f
  ensure
    f.close
  end

but much more elegnat.


>  $closing = "\n\nTo start the program again please type intro2.rb\n\tGood 
> Bye!\n\n"

You don't have to use a global variable here!

> 
>     enterFirstName = ""    #First Name in the addressbook
>     enterLastName = ""    #Last Name in the Addressbook
>     enterPhoneNumber = "" #Phone Number in the addressbook
> 
>   print "Welcome to MyAddressbook. Please follow the prompts.\n"
>   print "If you wish to end data entry, you may do so at any time\n"
>   print "by type the word END into a prompt.\n\n"

You could use

   print %{Welcome ....
           If you wish...
           by type....
          }

or 

  print <<EOF
....
EOF

instead

>  while 1

better:

  while true

or I'd use "loop" for an endless loop:

  loop do

  ....

  end 


>    print "\n\tFirst Name: "
>    enterFirstName = STDIN.gets
>    enterFirstName.chop!

The whole three inputs could be abbreviated, so I'd have written the example as:

  def input(closing, *prompts)
    prompts.collect { |pr|
      print "\n\t#{ pr }: "
      line = STDIN.gets.chop
      if line == "END"
        print closing
        return nil
      else
        line
      end
    }
  end

  CLOSING = "\n\nTo start the program again please type intro2.rb\n\tGood Bye!\n\n"

  print "Welcome to MyAddressbook. Please follow the prompts.\n"
  print "If you wish to end data entry, you may do so at any time\n"
  print "by type the word END into a prompt.\n\n"

  File.open("phonespec.txt", "a") do |myfile|
    loop {
      a = input(CLOSING, "First Name", "Last Name", "Phone Number")
      break if a.nil?   # END was entered anywhere
      myfile << a.join("\t") << "\n"
    }
  end 


  I think this is more Rubish way of doing your example.


>   if enterFirstName == "END"
>      print $closing
>      break
>    end
>    if enterFirstName != "END"
>      print "\n\tLast Name: "
>      enterLastName = STDIN.gets
>      enterLastName.chop!
>   end
>   if enterLastName == "END"
>     print $closing
>     break
>   end
>   if enterLastName != "END"
>     print "\n\tPhone Number: "
>     enterPhoneNumber = STDIN.gets
>     enterPhoneNumber.chop!
>   end
>   if enterPhoneNumber == "END"
>     print $closing
>     break
>   end
>   myfile.write(enterFirstName+"\t"+enterLastName+"\t"+enterPhoneNumber+"\n")
>  end
>    ensure
>      myfile.close
> end
> == end script 1




> == begin script 2
> phoneData = IO.readlines("phonespec.txt");      # Read in file into array, 

phoneData = File.readlines("phonespec.txt") 

> default separator of '\n'
> 
> print "\n\nYou are searching for:\t"
> searchData = STDIN.gets
> searchData.chop!

  searchData = gets.chop

> myreg = Regexp.new(searchData, "i")     # The "i" option makes it 
> case-insensitive.
> numres = 0                              # Init number of results at 0.
> 
> for data in phoneData                   # For each line of data in our array...
>   if myreg =~ data                      # Compare our regex against this line.
>     print "Found result: " + data       # Output line that matched the regex.
>     numres += 1                         # Increment number of results found.
>   else
>   end
> end



> 
> print "\n\n(Found " + String(numres) + " results, while searching for '" + 

use numres.to_s instead String(numres) 

and 

  print a, b, c

instead of

  print a + b + c


> searchData + "' in 'phonespec.txt')\n\n"
> == end script 2




> phoneData = IO.readlines("phonespec.txt");      # Read in file into array, 

phoneData = File.readlines("phonespec.txt") 

> default separator of '\n'
> 

So I'd have written:

    print "\n\nYou are searching for:\t"
    searchData = gets.chop
    myreg = Regexp.new(searchData, "i")
    numres = 0

    IO.foreach("phonespec.txt") do |data|
      if myreg =~ data
         print "Found result: ", data
         numres += 1                
      end
    end

    print "\n\n(Found #{ numres } results, while searching for '#{ searchData }' in 'phonespec.txt')\n\n"


or more elegantly something like that:


    print "\n\nYou are searching for:\t"
    searchData = gets.chop
    myreg = Regexp.new(searchData, "i")

    found = File.readlines("phonespec.txt").grep(myreg)

    found.each {|f| print "Found result: #{ f }"}

    print "\n\n(Found #{ found.size } results, while searching for '#{ searchData }' in 'phonespec.txt')\n\n"



Regards,

  Michael

-- 
Michael Neumann
merlin.zwo InfoDesign GmbH
http://www.merlin-zwo.de

In This Thread