[#1649] Re: New Ruby projects — Yukihiro Matsumoto <matz@...>
The following message is a courtesy copy of an article
[#1672] Re: Ruby 1.4 stable manual bug? — Yukihiro Matsumoto <matz@...>
The following message is a courtesy copy of an article
[#1673] Re: Possible problem with ext/socket in 1.5.2 — itojun@...
[#1694] Conventions for our Ruby book — Dave Thomas <Dave@...>
[#1715] Install postgresql support — Ikhlasul Amal <amal@...>
Hi all,
Hi,
[#1786] Is this a bug? — Clemens Hintze <clemens.hintze@...>
(mailed & posted)
[#1814] Objects nested sometimes. — Hugh Sasse Staff Elec Eng <hgs@...>
I am attemptiong to write a package which consists of a workspace
[#1816] Ruby 1.5.3 under Tru64 (Alpha)? — Clemens Hintze <clemens.hintze@...>
Hi all,
Hi,
Yukihiro Matsumoto writes:
Hi,
Hi,
[#1834] enum examples? — Hugh Sasse Staff Elec Eng <hgs@...>
Has anyone any examplse of using the Enumerable module? I've had a
[#1844] Minor irritation, can't figure out how to patch it though! — Hugh Sasse Staff Elec Eng <hgs@...>
I was considering how difficult it would be to patch Ruby to accept
[#1889] [ruby-1.5.3] require / SAFE — ts <decoux@...>
[#1896] Ruby Syntax similar to other languages? — "David Douthitt" <DDouthitt@...>
From: Yukihiro Matsumoto <matz@netlab.co.jp>
[#1900] Enumerations and all that. — Hugh Sasse Staff Elec Eng <hgs@...>
Thank you to the people who responded to my questions about Enumerated
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On 16 Mar 2000, Dave Thomas wrote:
[#1929] Re: Class Variables — "David Douthitt" <DDouthitt@...>
| "David Douthitt" <DDouthitt@cuna.com> writes:
[#1942] no Fixnum#new ? — Quinn Dunkan <quinn@...>
Ok, I can add methods to a built-in class well enough (yes I know about succ,
[#1989] English Ruby/Gtk Tutorial? — schneik@...
Hi,
[#2022] rb_global_entry — ts <decoux@...>
[#2036] Anonymous and Singleton Classes — B_DAVISON <Bob.Davison@...>
I am a Ruby newbie and having some problems getting my mind around certain
[#2069] Ruby/GTK+ question about imlib --> gdk-pixbug — schneik@...
[#2073] Re: eval.rb fails — "Dat Nguyen" <thucdat@...>
The doc is fine, this happens only if you try to execute 'until' block
On Wed, 22 Mar 2000, Dat Nguyen wrote:
[#2084] Scope violated by import via 'require'? — Clemens Hintze <c.hintze@...>
Hi,
[#2104] ARGF or $< — Hugh Sasse Staff Elec Eng <hgs@...>
Has anyone any examples of how to use ARGF or $< as I cannot find much
Hi.
[#2165] Ruby strict mode and stand-alone executables. — "Conrad Schneiker" <schneiker@...>
Some people want Ruby to have a strict compile mode.
[#2203] Re: parse bug in 1.5 — schneik@...
[#2212] Re: Ruby/Glade usage questions. — ts <decoux@...>
>>>>> "m" == mrilu <mrilu@ale.cx> writes:
[#2241] setter() for local variables — ts <decoux@...>
[#2256] Multiple assignment of pattern match results. — schneik@...
[#2267] Re: Ruby and Eiffel — h.fulton@...
[#2309] Question about attribute writers — Dave Thomas <Dave@...>
Clemens Hintze <c.hintze@gmx.net> writes:
[ruby-talk:02277] Re: Multiple assignment of pattern match results.
> In message "[ruby-talk:02256] Multiple assignment of pattern match results."
> on 00/03/30, schneik@us.ibm.com <schneik@us.ibm.com> writes:
> |The only problem I have with this example is that scan is going through the
> |work of producing an array of arrays, even though I only want the first
> |match:
On Thu, 30 Mar 2000, Yukihiro Matsumoto wrote:
> a)
> x="aabbbccccdddeeeefffabcdeabcdeabcde"
> (dummy, t, u, v) = /(a+)[^ace]*(c+)[^e]*(e+)/.match(x).to_a
> b)
> t = u = v = nil
> x.scan(/(a+)[^ace]*(c+)[^e]*(e+)/) do |t,u,v|
> break
> end
On a) I agree. It's nice, even tough x.match(re) might look better for
someone's eyes.
On b) I have to to think and learn a little.
mrilu> |I think it's time for String.scan(pattern[, limit]), like split.
matz> Interesting.
Is it interesting that scan(pattern,limit) might be useful or that me poor
stupid loser tend to think erratically consistently :) ?
Well, when I proposed this at morning I was think to make a patch at once.
But after half an hour of reading I decided to leave it up to you.
This was the case because there is this code in string.c routine
scan_once:
if (rb_reg_search(pat, str, *start, 0) >= 0) {
match = rb_backref_get();
regs = RMATCH(match)->regs;
if (BEG(0) == END(0)) {
/* Always consume at least one character of the input string*/
*start = END(0)+mbclen2(RSTRING(str)->ptr[END(0)],pat);
}
else {
*start = END(0);
}
if (regs->num_regs == 1) {
return rb_reg_nth_match(0, match);
}
! result = rb_ary_new2(regs->num_regs);
! for (i=1; i < regs->num_regs; i++) {
! rb_ary_push(result, rb_reg_nth_match(i, match));
! }
! return result;
So I thought this could return an array from scan_once to rb_str_scan,
and there we will call possible iterator for every match.
No, back to case b). I agree that functionality will be same, but I have
some doubts about performance. rb_reg_search will be called and it could
return finite amount of matches unless it's recoded, could it? So while
> t = u = v = nil
> x.scan(/(a+)[^ace]*(c+)[^e]*(e+)/) do |t,u,v|
# do something with t,u and v
> break
> end
will use only first matched data while there might be more than one
group of matched data. And I think in original mail Conrad
expressed his wish for performance:
> The only problem I have with this example is that scan is going through
> the work of producing an array of arrays, even though I only want the
> first match:
I don't know anything about RE-library's internals and I don't want to
mess it up (especially if rb_reg_search with limit is not needed). So I
didn't recode rb_str_scan nor scan_once with limit.
Or, as I know noted, rb_reg_nth_match will give only the nth data stored
when matched with paretheses like /a(.)b(d*)/. Is it so? If so, I think
you can all forget my mail. :)
But I'm really interested in to learn and hear how these things are
working!
One more thing. I don't know how things are done in other languages, but
for my eyes C-files that I got with Ruby seem to be crystal clear and
simple (umm. maybe I haven't looked hard enough - and don't look re.c :).
I don't know if this is special feature of Ruby? Or are other scriptings
languages as crisp?