[#401849] If statement — Masoud Ahmadi <lists@...>

Will anyone be able to point out what I am doing wrong.

15 messages 2012/12/02

[#401987] Trying to get "translator" to work — JD KF <lists@...>

So, basically, I'm trying to get the below code to work properly for

12 messages 2012/12/06

[#402012] Need help to select some listbox item in different listbox together — Jonathan Masato <lists@...>

Hello,

10 messages 2012/12/07

[#402045] if n belongs to set a and m belongs to set b repeat some steps, How? — "zubair a." <lists@...>

We can do so in java and similar languages like:

11 messages 2012/12/08

[#402078] Time.new(2001, 12, 3).to_i returns wrong value — Robert Buck <lists@...>

I am doing something that not many do, I am writing a database driver

9 messages 2012/12/09

[#402145] How I can create/extract a variable/hash into the current binding in Ruby? — Ramon de C Valle <rcvalle@...>

Hi,

12 messages 2012/12/12

[#402205] Wondering About Flatiron School — "Kevin Y." <lists@...>

Hi everyone!,

35 messages 2012/12/15
[#402207] Re: Wondering About Flatiron School — Chad Perrin <code@...> 2012/12/15

On Sat, Dec 15, 2012 at 11:51:08AM +0900, Kevin Y. wrote:

[#402214] Ruby quick reference arranged in ASCII sequence? — Old Grantonian <lists@...>

As a ruby beginner, I would be grateful for any links to a ruby

17 messages 2012/12/15

[#402226] print - and strip text between tags using Nokogiri — Paul Mena <lists@...>

I'm a Ruby Newbie trying to write a program to process thousands of HTML

13 messages 2012/12/15

[#402332] Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...>

Hello all,

37 messages 2012/12/19
[#402342] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

First of all, thanks for the fast responses!

[#402352] Re: Perl to Ruby: regex captures to assignment. — Robert Klemme <shortcutter@...> 2012/12/20

On Thu, Dec 20, 2012 at 1:38 AM, Derrick B. <lists@ruby-forum.com> wrote:

[#402357] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

Robert Klemme wrote in post #1089733:

[#402359] trying to strip characters from a line — Paul Mena <lists@...>

I'm reading a table from a MySQL database and then processing it row by

18 messages 2012/12/20

[#402394] simple division: -9 / 5 = -2 what? — "Derrick B." <lists@...>

$ irb

13 messages 2012/12/22

[#402412] POLS and string-handling — Paul Magnussen <lists@...>

Hi,

14 messages 2012/12/22

[#402460] "Open" dialog of Windows — "Damián M. González" <lists@...>

Hi guys, been researching about pop up the "open" file dialog of

11 messages 2012/12/24

[#402466] How do I install Ruby on my Ubuntu 12.10 partition. — Kaye Ng <lists@...>

I already have Ruby installed on my Windows 7 partition.

23 messages 2012/12/25

[#402510] Ruby Association Certified Ruby Programmer — Sean Westfall <lists@...>

How well respected is this certification in the industry: Ruby

27 messages 2012/12/27
[#402528] Re: Ruby Association Certified Ruby Programmer — Peter Hickman <peterhickman386@...> 2012/12/27

On 27 December 2012 01:28, Sean Westfall <lists@ruby-forum.com> wrote:

[#402555] numeric? — Brandon Weaver <keystonelemur@...>

I've found a bit of an annoyance trying to find out if a number is numeric

20 messages 2012/12/27

[#402580] Ruby Koans regarding Hashes. — "Derrick B." <lists@...>

I am trying to understand this, so let me know how I do. :) I know

18 messages 2012/12/28

[#402609] can't open new ruby program under "new" context menu — "Lee V." <lists@...>

I'm stuck on the new version at trying to do something very simple.

10 messages 2012/12/28

[#402642] require "test/unit" — "Mattias A." <lists@...>

Hi,

17 messages 2012/12/29
[#402667] Re: require "test/unit" — "Mattias A." <lists@...> 2012/12/31

Hi Dami=C3=A1n M. Gonz=C3=A1lez!

[#402747] Re: require "test/unit" — "Derrick B." <lists@...> 2013/01/04

Mattias A. wrote in post #1090700:

[#402749] Re: require "test/unit" — sto.mar@... 2013/01/04

Am 04.01.2013 19:48, schrieb Derrick B.:

Re: Perl to Ruby: regex captures to assignment.

From: Robert Klemme <shortcutter@...>
Date: 2012-12-21 10:34:51 UTC
List: ruby-talk #402376
On Thu, Dec 20, 2012 at 7:23 PM, Derrick B. <lists@ruby-forum.com> wrote:
> Robert Klemme wrote in post #1089733:
>>
>> I would choose a completely different approach: I would have a single
>> expression for matching and decide which assignments to make based on
>> the value of one of the capturing groups in the conditional branch:
>>
>> ["1 3/4", "5"].each do |s|
>>   puts s
>>
>>   if %r{\A(\d+)(?:\s+(\d+)/(\d+))?\z} =~ s
>>     w, n, d = $2 ? [$1.to_i, $2.to_i, $3.to_i] : [1, $1.to_i, 0]
>>     printf "%4d %4d %4d\n", w, n, d
>>   else
>>     $stderr.puts "No match #{s}"
>>   end
>> end
>>
>> I also spiced the regexp a bit more to be more restrictive.
>
> I am prompting for input, so I would be parsing individual strings and
> not a list of them.

That was just for demonstration purposes.

>  Though I will remember that for future static
> testing.  Also, I and using the "\S+" to handle negative rational
> numbers: "-1 3/4".

There's still a better way to do that then just match everything non
whitespace.  How would you parse ":s9d2++*3h43" as a number?

["1 3/4", "5", '-23', '-23 -4/4'].each do |s|
  puts s

  if %r{\A([-+]?\d+)(?:\s+([-+]?\d+)/(\d+))?\z} =~ s
    w, n, d = $2 ? [$1.to_i, $2.to_i, $3.to_i] : [1, $1.to_i, 0]
    printf "%4d %4d %4d\n", w, n, d
  else
    $stderr.puts "No match #{s}"
  end
end

Btw, did I mention that I find your variable assignment weird?  I'd rather do

["1 3/4", "5", '-23', '-23 -4/4'].each do |s|
  puts s

  if %r{\A([-+]?\d+)(?:\s+([-+]?\d+)/(\d+))?\z} =~ s
    w, n, d = $2 ? [$1.to_i, $2.to_i, $3.to_i] : [$1.to_i, 0, 1]
    printf "%4d %4d %4d\n", w, n, d
  else
    $stderr.puts "No match #{s}"
  end
end

>> If you like readability then why are you using Perl in the first place?
>> :-)
>
> Because Perl is awesome!

Hm...  It's been a while that I thought that (but I did actually
once).  IMHO Perl has gone over the edge of usefulness long ago.

>  That is why I chose Ruby as my next personal
> choice of languages to learn.

Good choice!

>  I just completed a quarter of Programming
> Language Concepts where I was introduced to Lisp, but was also required
> to use some Python.  I know Python is a fascinatng language, but I am
> not yet a big fan of it.  The final assignment was write a class to work
> with fractions.  It started as a C++ class, then migrated to Perl (for
> fun), and now Ruby (more fun).

:-)

> I attached the two versions, Ruby and Perl.  The Perl version uses a
> "class", also.  Feel free to suggest how to make the Ruby version more
> Ruby-ish!  My goal is to take more advantage of the OO aspects of Ruby,
> and not just have it look like Perl.

I don't have the time right now but you should definitively use class
Rational.  Also your parsing of the command line could be better:

do
  print "Fraction 1: "
  input = gets or break
  f1 = parse_fraction(input)

  print "Fraction 2: "
  input = gets or break
  f2 = parse_fraction(input)

  print "Command: "
  input = gets or break

  case input
  when "A"
    puts f1 + f2
  when "S"
    puts f1 - f2
 ...
 else
   abort "Invalid command: #{input}"
 end

end until cmd == "Q"

puts "Quitting"


You should also not implement #to_string but rather #to_s and then use
string interpolation for constructing your outputs.

Kind regards

robert

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread