[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>
From: Jon Babcock <jon@kanji.com>
Thanks.
From: Jon Babcock <jon@kanji.com>
Ah, thanks, I think I get it, a slightly different nuance then.
From: Jon Babcock <jon@kanji.com>
'Because all of Ruby has been...' -> 'Because Ruby has been...'?
[#5221] better way to say 'recursive join' — Yasushi Shoji <yashi@...>
in [ruby-dev:6289], Shugo Maeda suggested better name for recursive
[#5240] Ruby for Win32/DOS — Dennis Newbold <dennisn@...>
Not all of us are blessed with the opportunity to be able to develop on
[#5254] problem: undefined method `size' for File — "葡ic Santonacci" <Eric.Santonacci@...>
Hi all,
HI,
[#5264] Re: problem: undefined method `size' for Fil e — Aleksi Niemel<aleksi.niemela@...>
matz critizes good solution argumenting with features lacking from some
[#5268] Proper ConditionVariable usage? — Aleksi Niemel<aleksi.niemela@...>
Abstract
On Wed, 04 Oct 2000 07:05:22 +0900, Aleksi Niemelwrote:
In message <20001004110040.A26666@xs4all.nl>
Hi,
[#5276] Re: Ruby Book Eng tl, ch1 question — schneik@...
[#5294] Re: RFC: Enumerable#every(n) — Aleksi Niemel<aleksi.niemela@...>
Hastily posting something isn't good thing to do. I started to wonder if I
[#5310] Errata for Ruby Book? — Jon Babcock <jon@...>
[#5318] Redefining super method as singleton? — Robert Feldt <feldt@...>
On Fri, 6 Oct 2000, Yukihiro Matsumoto wrote:
[#5329] Ruby vs PHP ? — "Valerio Bamberga" <bamberga@...>
Hi!
[#5331] Unit testing network code? — Hugh Sasse Staff Elec Eng <hgs@...>
Can someone give me pointers on how to Unit Test code that is run on
> I think maybe one would test each end on its own first, faking the
[#5335] string streams in Ruby? — Hugh Sasse Staff Elec Eng <hgs@...>
Is there any way, without going through "modifying the internals",
[#5346] Is Ruby "enough better"? — Gabriel Lima <Gabriel.Lima@...>
Hi.
[#5364] Allowing *ary's in the middle of a camma separated list — "Akinori MUSHA" <knu@...>
Hi,
Hi,
At Tue, 10 Oct 2000 14:17:24 +0900,
[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>
OK, here is what I think I know.
At Wed, 11 Oct 2000 11:37:25 +0900,
Hi,
Hi,
Hi,
Hi,
[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>
At Thu, 12 Oct 2000 03:49:46 +0900,
Thanks for the input.
At Thu, 12 Oct 2000 04:53:41 +0900,
At Thu, 12 Oct 2000 07:25:03 +0900,
oops, I didn't read this one before I went out for food..
At Thu, 12 Oct 2000 09:59:19 +0900,
[#5437] Editor recommandations? — "Chris Morris" <chrismo@...>
Any recommendations on editors for Ruby script on Windows?
[#5471] 2 ideas from Haskell — Mark Slagell <ms@...>
Do either of these interest anyone:
[#5479] Some newbye question — Davide Marchignoli <marchign@...>
I am reading the documentation I found about ruby but several points
[#5480] InstallShield version for Ruby soon... — andy@... (Andrew Hunt)
Okay folks,
[#5489] Regexp#matches — Aleksi Niemel<aleksi.niemela@...>
Would someone object aliasing matches for match in Regexp?
[#5505] Sorry, What is Ruby Book — Mansuriatus Shahrir Amir <chioque@...>
Sorry if this information is somewhere obvious. I just stumbled upon
[#5516] Re: Some newbye question — ts <decoux@...>
>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:
Hi,
On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:
matz@zetabits.com (Yukihiro Matsumoto) writes:
Dave Thomas <Dave@thomases.com> wrote:
Hi,
> Proposal a and b have incompatibility. I'm not sure it's worth it.
>>>>> "Y" == Yukihiro Matsumoto <matz@zetabits.com> writes:
>>>>> "Y" == Yukihiro Matsumoto <matz@zetabits.com> writes:
[#5558] GC: malloc_memories — Mathieu Bouchard <matju@...>
Hi,
> |precipitate a new GC cycle if lots of resizing is done. My biggest
[#5570] Notes about GC — Mathieu Bouchard <matju@...>
[#5600] passing single or multiple strings. — Hugh Sasse Staff Elec Eng <hgs@...>
With multple assignments I can get nested arrays "shelled" (like peas)
In message "[ruby-talk:5600] passing single or multiple strings."
[#5603] debug command list in English — "Morris, Chris" <ChrisM@...>
I found this page which lists the interactive debugger commands ... anyone
[#5619] lint? — "Swit" <swit@...>
Is there something like lint for Ruby? I'd like to find NameErrors before
[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>
There has been discussion on this list/group from time to time about
Hugh Sasse Staff Elec Eng wrote:
On Sat, 21 Oct 2000, Charles Hixson wrote:
[#5715] Help: sockets broken — jason petrone <jp@...>
I just compiled ruby 1.6.1 on an openbsd 2.6 machine(x86).
[#5716] Re: Array#insert — Aleksi Niemel<aleksi.niemela@...>
> From: jweirich@one.net [mailto:jweirich@one.net]
[#5727] String#slice surprise — "Guy N. Hurst" <gnhurst@...>
Hi,
Dave Thomas wrote:
[#5787] Shells and Ruby — "Dat Nguyen" <thucdat@...>
Hello all,
[#5850] Re: Array#insert rehashed — Aleksi Niemel<aleksi.niemela@...>
Dave asks for:
[#5862] succ but no pred? (& the MURKY award) — "Hal E. Fulton" <hal9000@...>
First of all, a serious question:
[#5873] Integer(String) weirdness for a ruby newbie — Stoned Elipot <Stoned.Elipot@...>
Hi,
[#5881] Q:what about "Programming Ruby"? — Gabriel Lima <Gabriel.Lima@...>
Hi to you all.
[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>
Hello fellow rubyists,
On Fri, 27 Oct 2000, hipster wrote:
[#5947] Hash.new {block} / Hash#default_proc{,_set} — "Brian F. Feldman" <green@...>
I've done very little testing, but I think I've successfully implemented the
[#5959] Problem with ++? — shreeve@...2s.org (Steve Shreeve)
Here's a simple script that seems to work fine:
[ruby-talk:5307] Re: [PATCH] version test using require
On Thu, 05 Oct 2000 04:33:43 +0900, hipster wrote:
> The following patch allows testing for a minimal Ruby version using the
> `require' statement, like
This fixes the problem noted by Guy. I took the logic from Debian
dpkg/apt, cut it down and added it to util.c. It's still a bit too
generic but it works like a charm.
- Michel
--- eval.c.orig Thu Oct 5 09:28:07 2000
+++ eval.c Thu Oct 5 14:30:26 2000
@@ -16,6 +16,8 @@
#include "node.h"
#include "env.h"
#include "rubysig.h"
+#include "util.h"
+#include "version.h"
#include <stdio.h>
#include <setjmp.h>
@@ -5107,7 +5109,7 @@
rb_f_require(obj, fname)
VALUE obj, fname;
{
- char *ext, *file, *feature, *buf; /* OK */
+ char *ext, *file, *feature, *buf, *version; /* OK */
volatile VALUE load;
int state;
volatile int safe = ruby_safe_level;
@@ -5182,6 +5184,24 @@
goto load_dyna;
}
#endif
+
+ /* check for Ruby version */
+ /* Michel van de Ven <hipster@xs4all.nl> 20001005 */
+ version = "^\\d+(\\.\\d+)*$";
+ if(rb_reg_match(rb_reg_new(version, strlen(version), 0),
+ rb_str_new2(RSTRING(fname)->ptr)) != Qnil)
+ {
+ if(version_compare(RSTRING(fname)->ptr, RUBY_VERSION) > 0)
+ {
+ fprintf(stderr,
+ "Ruby %s or later is required to run this script.\n",
+ RSTRING(fname)->ptr);
+ rb_exit(1);
+ }
+ else
+ return Qtrue;
+ }
+
rb_raise(rb_eLoadError, "No such file to load -- %s",
RSTRING(fname)->ptr);
--- util.c.orig Thu Jul 27 11:49:24 2000
+++ util.c Thu Oct 5 14:25:44 2000
@@ -770,3 +770,108 @@
return tmp;
}
+
+/* version comparison functions for require, see eval.c */
+/* glarked from apt-0.3.19::version.cc */
+/* Michel van de Ven <hipster@xs4all.nl> 20001005 */
+static unsigned long version_str_to_long(const char *begin, const char *end)
+{
+ char s[40];
+ char *i = s;
+ for (; begin != end && i < s + 40;)
+ *i++ = *begin++;
+ *i = 0;
+ return strtoul(s, 0, 10);
+}
+
+int version_compare(const char *a, const char *b)
+{
+ const char *aend = a, *bend = b;
+ const char *lhs = a, *rhs = b;
+
+ aend += strlen(a);
+ bend += strlen(b);
+
+ if (a >= aend && b >= bend)
+ return 0;
+ if (a >= aend)
+ return -1;
+ if (b >= bend)
+ return 1;
+
+ /* Iterate over the whole string
+ What this does is to spilt the whole string into groups of
+ numeric and non numeric portions. For instance:
+ a67bhgs89
+ Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
+ 2.7.2-linux-1
+ Has '2', '.', '7', '.' ,'-linux-','1' */
+ while (lhs != aend && rhs != bend){
+ /* Starting points */
+ const char *slhs = lhs;
+ const char *srhs = rhs;
+ int digit;
+
+ /* Compute ending points were we have passed over the portion */
+ digit = (isdigit(*lhs) > 0 ? 1 : 0);
+ for (;lhs != aend && (isdigit(*lhs) > 0 ? 1 : 0) == digit; lhs++);
+ for (;rhs != bend && (isdigit(*rhs) > 0 ? 1 : 0) == digit; rhs++);
+
+ if (digit == 1){
+ unsigned long ilhs, irhs;
+ /* If the lhs has a digit and the rhs does not then < */
+ if (rhs - srhs == 0)
+ return -1;
+
+ /* Generate integers from the strings. */
+ ilhs = version_str_to_long(slhs,lhs);
+ irhs = version_str_to_long(srhs,rhs);
+ if (ilhs != irhs){
+ if (ilhs > irhs)
+ return 1;
+ return -1;
+ }
+ }
+ else{
+ /* They are equal length so do a straight text compare */
+ for (;slhs != lhs && srhs != rhs; slhs++, srhs++)
+ {
+ if (*slhs != *srhs)
+ {
+ /* We need to compare non alpha chars as higher than alpha
+ chars (a < !) */
+ int lc = *slhs;
+ int rc = *srhs;
+ if (isalpha(lc) == 0) lc += 256;
+ if (isalpha(rc) == 0) rc += 256;
+ if (lc > rc)
+ return 1;
+ return -1;
+ }
+ }
+
+ /* If the lhs is shorter than the right it is 'less' */
+ if (lhs - slhs < rhs - srhs)
+ return -1;
+
+ /* If the lhs is longer than the right it is 'more' */
+ if (lhs - slhs > rhs - srhs)
+ return 1;
+ }
+ }
+
+ /* The strings must be equal */
+ if (lhs == aend && rhs == bend)
+ return 0;
+
+ /* lhs is shorter */
+ if (lhs == aend)
+ return -1;
+
+ /* rhs is shorter */
+ if (rhs == bend)
+ return 1;
+
+ /* Shouldnt happen */
+ return 1;
+}
--- util.h.orig Thu Jul 27 11:49:24 2000
+++ util.h Thu Oct 5 12:16:26 2000
@@ -50,4 +50,6 @@
#undef strdup
#define strdup(s) ruby_strdup((s))
+int version_compare _((const char*, const char*));
+
#endif /* UTIL_H */