[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

A little idiom I like

Hal E. Fulton

9/2/2006 2:59:00 AM

Here's a little something I like. YMMV.

Hal


require 'pathname'

class Pathname
alias / +
end

home = Pathname.new("/home/hal")
proj = home/"projects"
foo = home/"projects/foobar"

10 Answers

Daniel Berger

9/2/2006 4:10:00 AM

0

Hal Fulton wrote:
> Here's a little something I like. YMMV.
>
> Hal
>
>
> require 'pathname'
>
> class Pathname
> alias / +
> end
>
> home = Pathname.new("/home/hal")
> proj = home/"projects"
> foo = home/"projects/foobar"
>
>
Already in pathname2. :)

- Dan

Gavin Kistner

9/2/2006 4:23:00 AM

0

Hal Fulton wrote:
> class Pathname
> alias / +
> end

I like this, both because it's element, AND because I'm not sure I've
ever seen alias before. #alias_method, yes, but not that. I was about
to reply "I think you mean 'alias_method :/, :+'", and was surprised to
find that what you wrote worked as advertised.

So...'alias' isn't a method? It's a reserved keyword that's part of the
syntax? And it's "parameters" can be raw method or operator names
instead of strings or symbols? (I'm looking at the section on
"Aliasing" in Pickaxe II, but it's still not telling me /what/ 'alias'
is. Or how it differs from #alias_method.)

Devin Mullins

9/2/2006 5:25:00 AM

0

Phrogz wrote:
> So...'alias' isn't a method? It's a reserved keyword that's part of the
> syntax? And it's "parameters" can be raw method or operator names
> instead of strings or symbols? (I'm looking at the section on
> "Aliasing" in Pickaxe II, but it's still not telling me /what/ 'alias'
> is. Or how it differs from #alias_method.)
I'm guessing you aren't aware of the "undef" keyword, either.

HTH,
Devin

William Crawford

9/2/2006 12:58:00 PM

0

Hal Fulton wrote:
> Here's a little something I like. YMMV.
>
> Hal
>
>
> require 'pathname'
>
> class Pathname
> alias / +
> end
>
> home = Pathname.new("/home/hal")
> proj = home/"projects"
> foo = home/"projects/foobar"

That's pretty freaking nifty. Thanks Hal.

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

Christian Neukirchen

9/2/2006 7:11:00 PM

0

Devin Mullins <twifkak@comcast.net> writes:

> Phrogz wrote:
>> So...'alias' isn't a method? It's a reserved keyword that's part of the
>> syntax? And it's "parameters" can be raw method or operator names
>> instead of strings or symbols? (I'm looking at the section on
>> "Aliasing" in Pickaxe II, but it's still not telling me /what/ 'alias'
>> is. Or how it differs from #alias_method.)
> I'm guessing you aren't aware of the "undef" keyword, either.

Whoa!

> HTH,
> Devin
>

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneuk...

Rick DeNatale

9/3/2006 4:04:00 PM

0

On 9/1/06, Hal Fulton <hal9000@hypermetrics.com> wrote:
> Here's a little something I like. YMMV.
>
> Hal
>
>
> require 'pathname'
>
> class Pathname
> alias / +
> end
>
> home = Pathname.new("/home/hal")
> proj = home/"projects"
> foo = home/"projects/foobar"
>
>

Those poor Windows guys. <G>

irb(main):017:0> class Pathname
irb(main):018:1> alias \ +
irb(main):019:1* end
SyntaxError: compile error
(irb):18: parse error, unexpected $undefined.
alias \ +
^
from (irb):19
from :0
irb(main):020:0>

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denh...

M. Edward (Ed) Borasky

9/3/2006 7:39:00 PM

0

Rick DeNatale wrote:
> On 9/1/06, Hal Fulton <hal9000@hypermetrics.com> wrote:
>> Here's a little something I like. YMMV.
>>
>> Hal
>>
>>
>> require 'pathname'
>>
>> class Pathname
>> alias / +
>> end
>>
>> home = Pathname.new("/home/hal")
>> proj = home/"projects"
>> foo = home/"projects/foobar"
>>
>>
>
> Those poor Windows guys. <G>
>
> irb(main):017:0> class Pathname
> irb(main):018:1> alias \ +
> irb(main):019:1* end
> SyntaxError: compile error
> (irb):18: parse error, unexpected $undefined.
> alias \ +
> ^
> from (irb):19
> from :0
> irb(main):020:0>
>

There's a workaround, right? Some combination of other quotes and double
backslashes? The R people get around it by using forward slashes
internally and only converting to backslashes when going out to a
Windows call that needs them. Even so, there was one thing I never did
figure out how to do in R, and ended up starting R up in the right
directory at the beginning of the session. :)

Rick DeNatale

9/4/2006 3:07:00 AM

0

On 9/3/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
> Rick DeNatale wrote:
> > On 9/1/06, Hal Fulton <hal9000@hypermetrics.com> wrote:
> >> Here's a little something I like. YMMV.
> >>
> >> Hal
> >>
> >>
> >> require 'pathname'
> >>
> >> class Pathname
> >> alias / +
> >> end
> >>
> >> home = Pathname.new("/home/hal")
> >> proj = home/"projects"
> >> foo = home/"projects/foobar"
> >>
> >>
> >
> > Those poor Windows guys. <G>
> >
> > irb(main):017:0> class Pathname
> > irb(main):018:1> alias \ +
> > irb(main):019:1* end
> > SyntaxError: compile error
> > (irb):18: parse error, unexpected $undefined.
> > alias \ +
> > ^
> > from (irb):19
> > from :0
> > irb(main):020:0>
> >
>
> There's a workaround, right? Some combination of other quotes and double
> backslashes? The R people get around it by using forward slashes
> internally and only converting to backslashes when going out to a
> Windows call that needs them. Even so, there was one thing I never did
> figure out how to do in R, and ended up starting R up in the right
> directory at the beginning of the session. :)

No easily, even if you can figure out how to define a method named or "\\" it's going to be messy sending it.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denh...

IPMS/USA Region 12 Coordinator
http://ipmsr12.denh...

Visit the Project Mercury Wiki Site
http://www.mercuryspace...

Hal E. Fulton

9/4/2006 5:13:00 AM

0

Rick DeNatale wrote:
> No easily, even if you can figure out how to define a method named > or "\\" it's going to be messy sending it.

If we're seriously talking about a Windows usage, let me point out
that it's only on the command line that \ is needed.

Internally, WIndows paths can use ordinary slashes (in every case
I'm familiar with).


Hal




Austin Ziegler

9/6/2006 5:15:00 PM

0

On 9/4/06, Hal Fulton <hal9000@hypermetrics.com> wrote:
> Rick DeNatale wrote:
>> No easily, even if you can figure out how to define a method named >> or "\\" it's going to be messy sending it.
> If we're seriously talking about a Windows usage, let me point out
> that it's only on the command line that \ is needed.

Mostly.

> Internally, WIndows paths can use ordinary slashes (in every case I'm
> familiar with).

Mostly.

The reality of the matter is that with the APIs that Ruby is currently
using -- which are problematic for certain cases (Unicode) -- the \ and
/ are interchangeable internally.

The advanced APIs -- the Unicode ones and the ones that make it possible
to have very long path names -- requires \.

-austin
--
Austin Ziegler * halostatue@gmail.com * http://www.halo...
* austin@halostatue.ca * http://www.halo...feed/
* austin@zieglers.ca