[#387246] newbie question — sunny parker <info@2020proj.com>

i am coming from php and dont seem to quite understand how ruby works

13 messages 2011/09/01

[#387330] installing naive bayes classifier — aya abdelsalam <ayoya_91@...>

Hello

10 messages 2011/09/02

[#387344] Beginner needing help - Writing right-angle triangle program — Kane Williams <theburrick@...>

I've been going through a Haskell tutorial (Just to see what it's like)

12 messages 2011/09/03

[#387356] Which version should I download? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im new to programming and Im thinking of downloading and starting with

17 messages 2011/09/03

[#387392] loops problem — jack jones <shehio_22@...>

for (j = @array.length ; j > counter ; j = j-1) # counter is a variable

13 messages 2011/09/04

[#387469] posts on Unix systems programming — Eric Wong <normalperson@...>

I would like to do a series of mailing list posts on the subject of Unix

28 messages 2011/09/06

[#387530] Unexpected behavior of Ruby array — Suvankar Satpati <suvankar.17@...>

I was going through the exercises at http://rubykoans.com/ and got

11 messages 2011/09/08

[#387544] Executing the output of a look — dwight schrute <spambocks@...>

Hi,

14 messages 2011/09/08

[#387586] Creating a hash from two arrays — simon harrison <simonharrison.uk@...>

Hi. Can anyone help with this? I'd like to end with a hash like so:

15 messages 2011/09/09

[#387596] newbie ruby installation malloc issue — "mark e." <mark_f_edwards@...>

hi all -

12 messages 2011/09/09

[#387614] how to write data in binary to a file? — frank hi <yw_hi@163.com>

Hi,

11 messages 2011/09/10

[#387646] How do I make output generate a float without an excess numbers of decimal places? — Kane Williams <theburrick@...>

For example, my current code is

11 messages 2011/09/11

[#387725] Any downsides to writing paranthesises? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im a newbie programmer who is trying to learn Ruby after having just

18 messages 2011/09/12

[#387811] Get interpreter path — Michal Suchanek <hramrach@...>

Hello,

26 messages 2011/09/14
[#387842] Re: Get interpreter path — Phillip Gawlowski <cmdjackryan@...> 2011/09/14

On Wed, Sep 14, 2011 at 3:35 PM, Michal Suchanek <hramrach@centrum.cz> wrote:

[#387844] Re: Get interpreter path — Michal Suchanek <hramrach@...> 2011/09/14

On 14 September 2011 20:47, Phillip Gawlowski <cmdjackryan@gmail.com> wrote:

[#387814] Tough Ruby Homework — Rory Pascua <rorypascua@...>

I'm trying to take a long piece of text, find a word, and get that word

18 messages 2011/09/14

[#387853] Can I Safely Use Rubinius While Learning? — Aaron Jackson <jacksonaaronc@...>

Greetings,

18 messages 2011/09/15

[#387915] Some newbie questions — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

I got some newbie questions which I would very much appreciate if

14 messages 2011/09/15

[#388003] Ruby Speed Question — Kevin Anon <oblivious.sage@...>

Wrote my first Ruby program recently for a class assignment where we had

12 messages 2011/09/18

[#388078] appending \n to each element in an array — Joe Collins <joec_49@...>

I have an array

13 messages 2011/09/20

[#388123] Turning on a special program at special time and turning off the computer at another special time — "amir e." <aef1370@...>

I decided to write a program in RUBY wherein these items have been done

11 messages 2011/09/21
[#388124] Re: Turning on a special program at special time and turning off the computer at another special time — andrew mcelroy <sophrinix@...> 2011/09/21

That sounds like a program a special program a terrorist would write. Are

[#388198] Conditional statements with multiple arguments — "Thomas B." <sinixlol@...>

Good afternoon everyone,

18 messages 2011/09/24

[#388203] Ruby 1.9.3 RC1 is out — "Yuki Sonoda (Yugui)" <yugui@...>

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

19 messages 2011/09/24
[#388208] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

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

[#388209] Re: [ANN] Ruby 1.9.3 RC1 is out — Chris White <cwprogram@...> 2011/09/24

[#388214] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

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

[#388216] Re: [ANN] Ruby 1.9.3 RC1 is out — Yusuke Endoh <mame@...> 2011/09/24

Hello,

[#388248] Looking for better/familiar approach to command line opts — "Perl J." <perljunkie@...>

So I guess the warning to the reader upfront is... I'm a bit of a Perl

14 messages 2011/09/25

[#388333] Get all classes from a list of files — Jeroen van Ingen <jeroeningen@...>

I have a list of ruby files. I would like to create objects from all

11 messages 2011/09/28

[#388342] Ruby Syntax @keywords ||= [ ] — Bhavesh Sharma <sharmabhavesh@...>

Sorry if this comes across as a dumb question, but what does the

11 messages 2011/09/28

[#388366] IO.readlines will not accept variable with file name Why? — Joda jenson <jodajen2@...>

I am fairly new to Ruby and I am stuck on this. Would someone have a

13 messages 2011/09/29
[#388368] Re: IO.readlines will not accept variable with file name Why? — Robert Klemme <shortcutter@...> 2011/09/29

On Thu, Sep 29, 2011 at 11:14 AM, Joda jenson <jodajen2@yahoo.com> wrote:

Looking for better/familiar approach to command line opts

From: "Perl J." <perljunkie@...>
Date: 2011-09-25 20:48:44 UTC
List: ruby-talk #388248
So I guess the warning to the reader upfront is...  I'm a bit of a Perl
hack who should have moved to Ruby a decade ago and just couldn't let go
of Perl.  Perl still does stuff that I use extensively that I can't
(take the time to) figure out how to do in Ruby, so... that's why I'm
here.

I've got a small framework I wrote in Perl I've been using for years
that is lightweight and yet powerful.   A lot of it centers around the
use of AUTOLOAD, which some Perlers say is bad -- I say it's extremely
powerful if used properly, and actually, AUTOLOAD forms a lot of the
backbone for my framework.  And honestly, it's helped me do some things
in Perl that I see in Ruby.  So there's some irony here in that I wrote
a framework to give me some of the power I see in Ruby in Perl. :-)

With all that as a backdrop, here's how I can process command line
arguments in Perl (*everything* I do in Perl is OO!!) and I want the
same thing in Ruby.  OptParser in Ruby is WAY more than I'm looking for
-- not as easy as what I'm used to (or maybe I don't understand
OptParser, which is likely).

In Perl, I can do this:

options = MyFramework::Options->new(
   sourcePath => 's:'
   destPath   => 'd:'
   verbose    => 'v'
);

What ends up happening behind the scenes is a class instance is created
dynamically that essentially gives me the ability to say:

## I actually have a puts() I created in Perl as well,
## borrowed from Ruby!
puts(
   "Source path.......: " . $options->sourcePath,
   "Destination path..: " . $options->destPath,
   "Verbose is........: " . ($options->verbose ? 'ON' : 'OFF'),
);

So I have a getter for sourcePath, a getter for destPath and a getter
for verbose, automagically created for that instance loaded with the
values from the command line.  If I said:

whatever = MyFramework::Options->new(
   foo => 'f:',
   bar => 'b:',
);

Then I would have an instance of 'whatever' with foo and bar as getters,
etc. with the values of 'f' and 'b' from the command line loaded
appropriately.

Now how to do this in Ruby?  Like I said, the OptParser seems WAY too
complicated for what I want and am trying to do.  It seems like you
still are coding some kind of OptParser class for the specific options
you want -- I don't want to create classes that mirror the command line
options.  I want to tell the class instance at the time I create it
(kind of like OpenStruct) what it looks like and it just creates the
right instance.  I want to be able to do this in Ruby, assuming I would
"define" this dynamically on the fly using maybe a hash as initial
input... I like the flexibility of hashes:

options = Options.new({
   :sPath   => 's:',
   :dPath   => 'd:',
   :verbose => 'v',
})

puts "Source path.......: #{options.sPath}"
puts "Destination path..: #{options.dPath}"
puts "Verbose is........: #{options.verbose ? 'ON' : 'OFF'}"

What this is saying is "map the value of 's' from the command line into
@sPath, map the value of 'd' from the command line into @dPath, and map
whether 'v' exists, true or false, into @verbose."  Now how much more
simple can you get??!!

Again, the warning of "trying to do Ruby stuff in a Perl way" comes to
me, but what I do in Perl is so stinking simple, it's unbelievable, and
this is one reason I haven't switched over to Ruby yet.  But now I'm
trying.

Things I've tried: A lot of different combinations of...
-- missing_method()
-- define_method()
(I don't understand why a lot of d_m() examples use self.class.send()!!)
-- Struct()
-- OpenStruct()

So far, requiring "optparse" and doing ARGV.getopts() does some of what
I want.  This is as close as I've gotten and it's not working:

require "optparse"

class Options
   attr_reader :cmdline, :options_list
   def initialize( options )
      @cmdline = ARGV.join( ' ' )
      @options_list = options.values.join
      params = ARGV.getopts( @options_list )
      options.each do |key,value|
         ## Why do I need to send( :define_method, ... ) here?
         ## Why can't I just say self.define_method?
         ## This seems like it would create proper closure
         ## on params[] elements?!
         self.class.send( :define_method, key ) { params[value] }
      end
   end
end

options = Options.new({
   :sPath   => 's:',
   :dPath   => 'd:',
   :verbose => 'v',
})

If someone can tell me how to do this using OptParser, so be it.  But
from an encapsulation standpoint, I'd like to be able to call it as I do
above.  If the innards of the Options class use OptParser, fine.

-pj

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next