[#345382] Nice algorithm for 'spreading' indexes across an array? — Max Williams <toastkid.williams@...>

Little ruby algorithm puzzle...

13 messages 2009/09/01

[#345437] clogger 0.0.4 - configurable request logging for Rack — Eric Wong <normalperson@...>

* http://clogger.rubyforge.org/

10 messages 2009/09/02
[#345439] Re: [ANN] clogger 0.0.4 - configurable request logging for Rack — Iñaki Baz Castillo <ibc@...> 2009/09/02

2009/9/2 Eric Wong <normalperson@yhbt.net>:

[#345446] rdoc — Oleg Puchinin <ruby_talk@...>

Hello !

17 messages 2009/09/02
[#346260] Ruby 1.9 rdoc never ends (Re: rdoc) — James Britt <james.britt@...> 2009/09/12

Oleg Puchinin wrote:

[#346267] Re: Ruby 1.9 rdoc never ends (Re: rdoc) — Ryan Davis <ryand-ruby@...> 2009/09/12

[#346276] Re: Ruby 1.9 rdoc never ends (Re: rdoc) — Roger Pack <rogerpack2005@...> 2009/09/12

Ryan Davis wrote:

[#345493] What licensing info is needed in code headers? — "Shot (Piotr Szotkowski)" <shot@...>

Disclaimer: I know that some of you live in jurisdictions that do not

10 messages 2009/09/02

[#345535] Simple New Ruby Programmer Problem with $stdin.gets — Mason Kelsey <masonkelsey@...>

I'm having difficulty getting any command to work to pick up input from a

14 messages 2009/09/02

[#345573] Type checking function parameters — Nick Green <cruzmail.ngreen@...>

More or less all my functions look something like

22 messages 2009/09/03
[#345593] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/03

On 3 Sep 2009, at 05:04, Nick Green wrote:

[#345606] Re: Type checking function parameters — Paul Smith <paul@...> 2009/09/03

My first stab at some Ruby started like this too.

[#345667] Re: Type checking function parameters — Nick Green <cruzmail.ngreen@...> 2009/09/03

OK...

[#345676] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/04

On 3 Sep 2009, at 23:47, Nick Green wrote:

[#345687] Re: Type checking function parameters — James Edward Gray II <james@...> 2009/09/04

On Sep 3, 2009, at 7:30 PM, Eleanor McHugh wrote:

[#345745] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/04

On 4 Sep 2009, at 03:56, James Edward Gray II wrote:

[#345828] Re: Type checking function parameters — spiralofhope <spiralofhope@...> 2009/09/06

Along the lines of this thread..

[#345835] Re: Type checking function parameters — "David A. Black" <dblack@...> 2009/09/06

Hi --

[#345773] Rubyscript instead of javascript — Damjan Rems <d_rems@...>

30 messages 2009/09/05
[#345970] Re: Rubyscript instead of javascript — Jg W Mittag <JoergWMittag+Usenet@...> 2009/09/08

David Masover wrote:

[#345774] how to compare two object instances? is "m1.to_yaml.eql?(m2.to_yaml)" a good way? — Greg Hauptmann <greg.hauptmann.ruby@...>

Hi,

8 messages 2009/09/05

[#345848] i need to strip \n and nil — Bigmac Turdsplash <i8igmac@...>

im sending files back and forth form a client and a server using

16 messages 2009/09/06

[#345883] Executing system commands in threads under Ruby 1.8.6 — vhaerun vh <etaern@...>

I tried to write a script that makes use of external binaries. Each

17 messages 2009/09/07
[#345889] Re: Executing system commands in threads under Ruby 1.8.6 — Robert Klemme <shortcutter@...> 2009/09/07

2009/9/7 vhaerun vh <etaern@yahoo.com>:

[#345893] Re: Executing system commands in threads under Ruby 1.8.6 — vhaerun vh <etaern@...> 2009/09/07

Here's a link to the question I asked on SO:

[#345901] Re: Executing system commands in threads under Ruby 1.8.6 — Eleanor McHugh <eleanor@...> 2009/09/07

On 7 Sep 2009, at 09:55, vhaerun vh wrote:

[#345904] Re: Executing system commands in threads under Ruby 1.8.6 — Bertram Scharpf <lists@...> 2009/09/07

Hi,

[#345886] Ruby 1.9, Rubygems, and .gemspec warnings — Rob Sanheim <rsanheim@...>

Hi all

14 messages 2009/09/07

[#346018] Tutorial challenge program help — Chris Logan <t-logan3@...>

Hello all im really new to ruby as in a few days and getting into it. i

20 messages 2009/09/09
[#346023] Re: Tutorial challenge program help — 7stud -- <bbxx789_05ss@...> 2009/09/09

Chris Logan wrote:

[#346027] Re: Tutorial challenge program help — Chris Logan <t-logan3@...> 2009/09/09

7stud -- wrote:

[#346091] How Are Variables Kept Independent of Each Other Yet Pass Values? — Mason Kelsey <masonkelsey@...>

Somewhere in the several books I've been learning Ruby from there was the

14 messages 2009/09/10
[#346096] Re: How Are Variables Kept Independent of Each Other Yet Pass Values? — venkatesh Peddi <venkat.peddi@...> 2009/09/10

[#346106] Asynchronous http POST? — Ivan Shevanski <ocelot117@...>

Hey everyone, I'm new to Ruby and to the mailing list, so go easy.

14 messages 2009/09/10
[#346166] Re: Asynchronous http POST? — Ezra Zygmuntowicz <ezmobius@...> 2009/09/10

[#346193] populating a hash from an array using inject — Glenn Jackman <glennj@...>

I was looking at this problem on Stack Overflow (this one:

12 messages 2009/09/10

[#346324] module to overwrite method defined via define_method — Gaspard Bucher <gaspard@...>

Hi List !

17 messages 2009/09/13
[#346326] Re: module to overwrite method defined via define_method — "David A. Black" <dblack@...> 2009/09/13

Hi --

[#346328] Re: module to overwrite method defined via define_method — Gaspard Bucher <gaspard@...> 2009/09/13

David A. Black wrote:

[#346347] FasterCSV.foreach loop — Dot Baiki <dot_baiki@...>

Hello community,

16 messages 2009/09/13

[#346367] .map.with_object(3){|v|v+3} #=> 3 Is this a bug? — ErMaker <ermaker@...>

At ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-mswin32_90]

15 messages 2009/09/14

[#346383] Pre-allocate large amount of memory? — Carsten Gehling <carsten@...>

I've created a small daemon, that serves certain data very fast to our

15 messages 2009/09/14
[#346404] Re: Pre-allocate large amount of memory? — Robert Klemme <shortcutter@...> 2009/09/14

2009/9/14 Carsten Gehling <carsten@sarum.dk>:

[#346419] whats the best way to package deploy a Ruby app to windows??? (no UI, also standalone if possible) — Greg Hauptmann <greg.hauptmann.ruby@...>

Hi,

8 messages 2009/09/14

[#346452] Command line — Rong <ron.green@...>

Please forgive this stupid newb question but I thought it was possible

13 messages 2009/09/15

[#346500] Array of Hashes in an array of hashes - Complicated! — Matt Brooks <mattbrooks@...>

I have an unique problem that I can't solve. I am sorry this is long,

17 messages 2009/09/15
[#346505] Re: Array of Hashes in an array of hashes - Complicated! — John W Higgins <wishdev@...> 2009/09/15

Morning Matt,

[#346508] Re: Array of Hashes in an array of hashes - Complicated! — Matt Brooks <mattbrooks@...> 2009/09/15

Hi John,

[#346510] Re: Array of Hashes in an array of hashes - Complicated! — John W Higgins <wishdev@...> 2009/09/15

Matt,

[#346515] Re: Array of Hashes in an array of hashes - Complicated! — Aldric Giacomoni <aldric@...> 2009/09/15

+1 on object creation

[#346574] string to array — Re BR <rereis@...>

Hello all,

15 messages 2009/09/16

[#346611] block issues... — Dylan Lukes <revenantphoenix@...>

In the following block, each plugin in the constant hash PLUGINS is

17 messages 2009/09/16

[#346621] Monkey Patching 2 Methods, Overrides One Method, Not The Other — MaggotChild <hsomob1999@...>

I'm monkey patching 2 methods of an existing module: some_method() and

18 messages 2009/09/17

[#346645] Mucking about with dynamically adding methods to objects — Paul Smith <paul@...>

I've been toying with Ruby for a while, but only now am I beginning to

12 messages 2009/09/17
[#346652] Re: Mucking about with dynamically adding methods to objects — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2009/09/17

On Thu, Sep 17, 2009 at 11:44 AM, Paul Smith <paul@pollyandpaul.co.uk> wrote:

[#346665] Re: Mucking about with dynamically adding methods to objects — Paul Smith <paul@...> 2009/09/17

2009/9/17 Jes俍 Gabriel y Gal疣 <jgabrielygalan@gmail.com>:

[#346676] Value isn't appended in puts statement(appears on next line) — Mrmaster Mrmaster <mrsolarlife@...>

Hello,

13 messages 2009/09/17
[#346678] Re: Value isn't appended in puts statement(appears on next line) — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2009/09/17

On Thu, Sep 17, 2009 at 8:51 PM, Mrmaster Mrmaster

[#346759] Newbie: Are Ruby regexp's a subset, superset, or equal to Perl's? — Harry <simonsharry@...>

Hi,

13 messages 2009/09/18

[#346774] Exceptional Rails Developer — Richard Price <richard.price100@...>

Hi all,

32 messages 2009/09/18
[#347451] Re: Exceptional Rails Developer — Ilan Berci <ilan.berci@...> 2009/09/30

Richard Price wrote:

[#347452] Re: Exceptional Rails Developer — Zundra Daniel <zundra.daniel@...> 2009/09/30

At least he didn't say "Rockstar" or "Ninja"

[#347476] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/09/30

On Wednesday 30 September 2009 01:45:27 pm Zundra Daniel wrote:

[#347477] Re: Exceptional Rails Developer — Greg Donald <gdonald@...> 2009/09/30

On Wed, Sep 30, 2009 at 6:44 PM, David Masover <ninja@slaphack.com> wrote:

[#347482] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/10/01

On Wednesday 30 September 2009 06:54:16 pm Greg Donald wrote:

[#347514] Re: Exceptional Rails Developer — Eleanor McHugh <eleanor@...> 2009/10/01

On 1 Oct 2009, at 01:32, David Masover wrote:

[#347551] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/10/01

On Thursday 01 October 2009 08:20:26 am Eleanor McHugh wrote:

[#347592] Re: Exceptional Rails Developer — Eleanor McHugh <eleanor@...> 2009/10/02

On 1 Oct 2009, at 19:15, David Masover wrote:

[#347596] Re: Exceptional Rails Developer — Aldric Giacomoni <aldric@...> 2009/10/02

[#346775] Determining if a file is binary or text — James Masters <james.d.masters@...>

Hi all,

15 messages 2009/09/18

[#346891] Incrementing variable names in a loop? — Matt Brooks <mattbrooks@...>

I have a function write_log that takes in a string and it prints to

10 messages 2009/09/21

[#347044] the great ruby editor and ide roundup — Martin DeMello <martindemello@...>

https://spreadsheets.google.com/ccc?key=0Al_hzYODcgxwdG9tUFhqcVVoUDVaLTlqT2YtNjV1N0E&hl=en

26 messages 2009/09/23
[#347045] Re: the great ruby editor and ide roundup — Rajinder Yadav <devguy.ca@...> 2009/09/23

On Wed, Sep 23, 2009 at 4:02 PM, Martin DeMello <martindemello@gmail.com> wrote:

[#347058] How do you limit the line length of the output commands? Where is pqueue library documented? — Mason Kelsey <masonkelsey@...>

There must be an easy way to solve the problem of controlling the length of

12 messages 2009/09/23

[#347156] Roulette & rand — Semih Ozkoseoglu <ozansemih@...>

Hi,

22 messages 2009/09/25
[#347161] Re: Roulette & rand — Stefano Crocco <stefano.crocco@...> 2009/09/25

On Friday 25 September 2009, Semih Ozkoseoglu wrote:

[#347164] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Hi again Stefano,

[#347171] Re: Roulette & rand — Stefano Crocco <stefano.crocco@...> 2009/09/25

On Friday 25 September 2009, Semih Ozkoseoglu wrote:

[#347173] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Stefano, Paul,

[#347179] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Hi again,

[#347193] How to remove duplicate elements in a 2D array — Li Chen <chen_li3@...>

Hi all,

20 messages 2009/09/25

[#347202] Backporting Enumerator.new { ... } to Ruby 1.8.7 — "Shot (Piotr Szotkowski)" <shot@...>

Hello, good people of ruby-talk.

12 messages 2009/09/25

[#347260] handling of regexp objects that aren't referenced by variables, arrays, tables or objects — ThomasW <x.zupftom@...>

Hi,

12 messages 2009/09/27

[#347354] How do I use nitpick — "Michael W. Ryder" <_mwryder@...>

I was looking for a program like lint in C and came across nitpick. I

23 messages 2009/09/29
[#347366] Re: How do I use nitpick — Hassan Schroeder <hassan.schroeder@...> 2009/09/29

On Mon, Sep 28, 2009 at 9:25 PM, Michael W. Ryder

[#347397] Re: How do I use nitpick — "Michael W. Ryder" <_mwryder@...> 2009/09/29

Hassan Schroeder wrote:

[#347398] Re: How do I use nitpick — Ryan Davis <ryand-ruby@...> 2009/09/29

[#347364] Group by unique entries of a hash — Ne Scripter <stuart.clarke@...>

I have two data sets loaded into a hash to give the following output

15 messages 2009/09/29

[#347443] Get current working copy version in subversion/git — Anthony Metcalf <anthony.metcalf@...>

Hi,

11 messages 2009/09/30

[#347456] SystemStackError: stack level too deep > how make it deeper? — Joshua Muheim <forum@...>

Hi all

15 messages 2009/09/30
[#347459] Re: SystemStackError: stack level too deep > how make it deeper? — Jason Roelofs <jameskilton@...> 2009/09/30

On Wed, Sep 30, 2009 at 3:47 PM, Joshua Muheim <forum@josh.ch> wrote:

Re: Getting to one attribute of my marshalled array of objects

From: Brian Tickler <btickler@...>
Date: 2009-09-22 02:57:30 UTC
List: ruby-talk #346941
Douglas Seifert wrote:
> I would not go down this road.  A car should not care if it is being
> displayed as part of a listing of other cars or if it is alone.  It 
> should
> just know how to display itself.  In addition, adding a parameter to 
> to_s is
> bad ruby style: to_s has well-defined semantics in the ruby language.

Ok, I will stay away from that.  I normally stay pretty hands off on 
things like that, but I have seen a lot of examples of modifying really 
important things like Object and Integer in Ruby, so I thought it was 
just more normal to do this and that because it's interpreted it would 
not be permanent.  I did try to leave the functioning of to_s untouched 
if the parameter was not passed by defaulting the parameter and making 
sure the output when not in a list was as expected, but maybe that only 
works with the *p array method?  Anyway, I see the point, so I took it 
out.

>  I
> suggest before you go any further, you pick up a copy of "Programming
> Ruby".  If you can't afford the money, the first edition is available 
> for
> free on line: http://www.rubycentral.com/book/.  The book does a far 
> better
> job than I ever could of explaining how the to_s method works in the 
> Ruby
> world.

I do have it, and I have read the entire book ;).  That's how I deciding 
on marshalling, etc.  I will say the book is great, but if you don't 
have a C background or something similar (I do, but only at a basic 
level and dating from the 1980s ;)...), it's hard to figure some things 
out.  I ended up googling a lot of stuff to get sample code that I could 
understand readily for things that are not covered in depth.

> After looking at your implementations, I see what you are trying to
> accomplish.  A better idea in my opinion would be to leave the counting
> logic to the CarInventory class.  It is the class that knows about a 
> list of
> cars.

Fixed.

> I noticed also that you tried to put some logic in to line up the car
> attributes in a nice column layout.  You are reinventing the wheel here,
> unfortunately.  One thing you should look up right away is is the % 
> method
> of class String:
[snip...]
> You should do an ri Kernel#sprintf to see all the good stuff that can go 
> in
> the format string.  If you are familiar with c/c++ at all, this will be
> familiar to you.

I remembered this from C after you talked about it.  Also fixed now, but 
I did end up having to Google around to find an example since the ones 
in the book don't cover many of hte possible scenarios/uses for this.

> I'm not sure also in your original to_s method on the CarInventory class 
> how
> it ever worked.  The each method of class Array returns the Array 
> itself.
> Your to_s method would end up returning an array of Car objects and it 
> might
> have been pure accident that it looked ok in your command loop.

Hmmm...ok, I am confused on this one.  I thought the whole point of 
.each was to iterate through the elements of arrays and hashes and 
perform actions on each one...like a for or while loop without the fuss 
and muss of counters, etc.

> Here is a revised to_s for the CarInventory class.  It handles the 
> indexing
> problem and makes sure it returns a String object in all cases.  I would
> implement Car#to_s without a parameter and use the formatting methods 
> above
> to get a nice column layout
> 
>   def to_s
>    if @carArray.first
>      counter = 0
>      @carArray.map {|car| counter += 1; "[%3d] %s" % ]counter,
> car.to_s]}.join("\n")
>    else
>      return "(No inventory)"
>    end
>  end

Done, as you'll see below.

> I am not sure how a beginner goes about accumulating the knowlege 
> necessary
> to make implementing this method easy.  There is a lot of knowledge 
> bundled
> up in this implementation of to_s: use of Array#map and Array#join.
> Knowledge of String#% and by implication, Kernel#sprintf.  I have done a 
> lot
> of reading I guess.

One of the issues I am having in looking up what I need is that there's 
no master hierarchy/chart/graph of Ruby objects *and* mixins together in 
the book...and in this case, with Array, map is actually from the 
Enumerable mixin, although there is a connect! (which I guess is the 
same as map); but as a neophyte I was generally staying away from any 
commands that modify objects in-place and so I did not really look 
closely at what connect! was.  Once I saw your code I was able to figure 
it out, though.

> This whole thread is reminding me of a recent blog post by Jamis Buck, a 
> guy
> who I think it is fair to say is a Ruby community luminary:
> 
> http://weblog.jamisbuck.org/2009/9/17/there-is-no-magic-there-is-only-awesome-part-1

I read this and I like the ideas.  Hopefully the next installment is 
coming soon.

> If you ever want to get good with Ruby, you need to apply his four 
> rules:
> 
>    1. *Know thy tools.*
>    2. *Know thy languages.*
>    3. *Know thy libraries.*
>    4. *Know thy communities.*
> 
> Applying these rules, you would know about the % method of the String 
> class
> and about Kernel#sprintf and Array#map and Array#join.

Well, I have to be honest here, I will never be a master of Ruby.  I am 
a jack-of-all-trades in general, plus I left my programming days behind 
me long ago.  I am evaluating a bunch of languages/technologies right 
now for my  website/garage startup (I am also taking more classes...in 
PHP, Python, C#, Ajax, Perl, and I have been going to Drupal meetups 
since I did not see any classes on it).  Right now, I like Ruby the best 
(more of a gut feeling than anything else), and I have not even looked 
at Rails yet ;).  I have not really touched the .NET side of the house 
yet, though, to be fair.

Once I do have my chosen technology, though, I will probably end up 
having to code the first mockup of the site myself, so I do need to know 
as much as I can.

I want to thank you for all your help, Doug, it was very much 
appreciated.  You mentioned in an earlier post that if I wanted to know 
how to design this app better you could give me some tips...up to you, 
but I am all ears.  Frankly,  when I have been doing these Ruby 
assignments, they seem more like generic "learn this language's syntax" 
exercises and don't seem to be asking me to do things that will show me 
the power of Ruby.

> So keep studying!  It is a high hill to climb, but once you get over the
> top, your programs will reach the level of conciseness that Ruby is 
> famous
> for.

I have finishing pickaxe/Programming Ruby, and I also read a certain 
Ruby guide involving chunky bacon.  I pretty much had to, my class is 
online-only and I have had to learn everything on my own.

As far as conciseness goes, I'm sure this does not qualify...but here's 
the final source for my assignment (in case anyone is looking at this 
thread for answers somewhere down the road and needs to see it):

----SOURCE

# Car Inventory 1.0
# Brian Tickler
# 9/2009

INVENTORY_FILE = "cars.data"

class Car

  def initialize(vin, year, make, model, color, price)
    @vin = vin
    @year = year
    @make = make
    @model = model
    @color = color
    @price = price
  end

  def to_s
    if !self.vin or self.vin == ""
      displayVIN = "(No VIN)"
    else
      displayVIN = self.vin
    end
    if !self.color or self.color == ""
      displayColor = ""
    else
      displayColor = "(#{self.color})"
    end
    displayString = "%-20s %-40s %10s" % [
      displayVIN,
      (@year + " " + @make + " " + @model + " " + displayColor),
      ("$" + @price.to_s) ]
  end

  def <=> (compare)
    self.year  <=> compare.year
  end

  attr_accessor :vin, :year, :make, :model, :color, :price

end

class CarInventory

  def initialize
    if File.exists?(INVENTORY_FILE)
      File.open(INVENTORY_FILE) do |file|
        @carArray = Marshal.load(file)
      end
    else
        @carArray = Array.new
    end
  end

  def save
    File.open(INVENTORY_FILE, "w+") do |file|
      Marshal.dump(@carArray, file)
    end
  end

  def addCar(car)
    @carArray << car
  end

  def updateCar(car)
    updateIndex = @carArray.index(car)
    if updateIndex
      @carArray[updateIndex]  = car
    else
      puts "Error: Cannot find car #{car.vin}\n"
    end
  end

  def deleteCar(car)
    @carArray.delete(car)
  end

  def getCar(listPosition)
    @carArray[listPosition - 1]
  end

  def to_s
    if @carArray.first
      displayString = ""
      counter = 0
      priceTotal = 0
      displayString << "\n#     VIN                  Car Description 
Price\n"
      displayString << 
"------------------------------------------------------------------------------\n"
      displayString << @carArray.map {|car| counter += 1 ; \
        priceTotal += car.price.to_i; \
        "[%3d] %s" % [counter, car.to_s]}.join("\n")
      displayString << 
"\n------------------------------------------------------------------------------\n"
      displayString << "%78s" % ("Total Inventory Value:  $" + 
priceTotal.to_s)
    else
      return "(No inventory)"
    end
  end

  def ==(compare)
    self.vin == compare.vin
  end

end

def inputValue(inputLabel, inputRegexp, inputWarningString, 
allowBlankValue=false)
  loop do
    puts inputLabel
    input = gets.chomp
    return "" if allowBlankValue and input == ""
    if input =~ inputRegexp
      return input
    else
      puts inputWarningString
    end
  end
end

puts "Car Inventory 1.0 - Brian Tickler\n"

cars = CarInventory.new

loop do
  puts cars.to_s
  puts "(A)dd a new car\n"
  puts "(E)dit a car\n"
  puts "(D)elete a car\n"
  puts "(S)ave changes\n"
  puts "(Q)uit\n"
  puts "\nCommand: "
  command = gets.chomp.upcase
  case
    when command =~ /^A/ :
      puts "\nAdd a new car:\n"
      vin = inputValue("\nVIN:", /\w{3,17}/, "Please enter a VIN or 
identifier that is 3-17 alphanumeric characters.")
      year = inputValue("\nYear:",  /^[12][90]\d{2}$/, "Please enter a 
year between 1901-2099.")
      puts "\nMake:"
      make = gets.chomp
      puts "\nModel:"
      model = gets.chomp
      puts "\nColor:"
      color = gets.chomp
      price = inputValue("\nPrice:", /^\d*$/, "Please enter an integer 
(round to the nearest dollar).")
      newCar = Car.new(vin, year, make, model, color, price)
      cars.addCar(newCar)
    when command =~ /^E/ :
      puts "\nEdit a car:\n"
      puts "\nEnter the number of the car to be edited:"
      edit_selection = gets.chomp.to_i
      editCar = cars.getCar(edit_selection)
      puts "\nCar: " + editCar.to_s
      puts "(leave fields blank if you want them to keep their current 
values)"
      if editCar
        vin = inputValue("\nVIN:", /\w{3,17}/, "Please enter a VIN or 
identifier that is 3-17 alphanumeric characters.", true)
        year = inputValue("\nYear:",  /^[12][90]\d{2}$/, "Please enter a 
year between 1901-2099.", true)
        puts "\nMake:"
        make = gets.chomp
        puts "\nModel:"
        model = gets.chomp
        puts "\nColor:"
        color = gets.chomp
        price = inputValue("\nPrice:", /^\d*$/, "Please enter an integer 
(round to the nearest dollar).", true)
        puts "\nUpdate VIN# #{editCar.vin}? [Y/N]"
        confirm = gets.chomp.upcase
        if confirm =~ /^Y/
          editCar.vin = vin if vin != ""
          editCar.year = year if year != ""
          editCar.make = make if make != ""
          editCar.model = model if model != ""
          editCar.color = color if color != ""
          editCar.price = price if price != ""
        end
      else
        puts "Cannot access car #" + edit_selection.to_s
      end
    when command =~ /^D/ :
      puts "\nDelete a car:\n"
      puts "\nEnter the number of the car to be deleted:"
      delete_selection = gets.chomp.to_i
      delCar = cars.getCar(delete_selection)
      puts "\nCar: " + delCar.to_s
      if delCar
        puts "\nDelete VIN# #{delCar.vin}? [Y/N]"
        confirm = gets.chomp.upcase
        cars.deleteCar(delCar) if confirm =~ /^Y/
      else
        puts "Cannot access car #" + delete_selection.to_s
      end
    when command =~ /^S/ :
      cars.save
      puts "\nSaved to #{INVENTORY_FILE}\n"
    when command =~ /^Q/ :
      puts "Are you sure? [Y/N]"
      confirm = gets.chomp.upcase
      exit if confirm =~ /^Y/
      next
    else puts "Illegal Command: #{command}"
  end
end
-- 
Posted via http://www.ruby-forum.com/.

In This Thread