[#3861] super — ts <decoux@...>
[#3862] Marshal.dump'ing OpenStruct objects — Mauricio Fern疣dez <batsman.geo@...>
Hi,
[#3881] mkdir, mkdir_p in FileUtils and mode — Florian Frank <flori@...>
Hello,
[#3907] Obtaining mode information on an IO object — Jos Backus <jos@...>
The attached patch implements IO#mode. This method returns the mode the IO
Hi,
On Tue, Dec 07, 2004 at 09:25:13AM +0900, nobu.nokada@softhome.net wrote:
Jos Backus wrote:
Hi,
On Thu, Dec 09, 2004 at 10:47:48AM +0900, nobu.nokada@softhome.net wrote:
On Thu, Dec 09, 2004 at 02:40:33PM +0900, James Britt wrote:
[#3914] Pathname needs a makeover — "Berger, Daniel" <Daniel.Berger@...>
Hi all,
[#3922] Incorrect escaping in strings produced by String::inspect — noreply@...
Bugs item #1173, was opened at 2004-12-08 17:35
[#3966] unknown node type 0 — Andrew Walrond <andrew@...>
I still get this happening a lot with my Rubyx linux ruby script.
This is a long standing bug in Ruby, and has been reported hundreds of times
Hi,
[#3975] Patches to test/unit — Ryan Davis <ryand-ruby@...>
I believe these are the minimal patches needed to make it possible to
[#3982] Win32: rb_sys_fail() - errno == 0 — Florian Gro<florgro@...>
Moin!
[#4000] 1.8.2 preview4 — Yukihiro Matsumoto <matz@...>
Hello,
[#4009] cgi.rb -- more GET/POST stuff — mde@...26.com
First of all, I think it would be great, as Eustaquio suggests, to
GETs and POSTs are defined to be fairly different actions. I'd read
-----BEGIN PGP SIGNED MESSAGE-----
Francis Hwang wrote:
-----BEGIN PGP SIGNED MESSAGE-----
First of all, the entire discussion of when GET is appropriate
mde@state26.com wrote:
[#4027] Allowing custom number literal suffixes? — Florian Gro<florgro@...>
Moin!
Hi,
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
I'm not sure I would advocate making Ruby's grammar even more
>
Brent Roman wrote:
> Brent Roman wrote:
Brent Roman wrote:
> Florian Gross wrote:
Mathieu Bouchard wrote:
Mathieu Bouchard wrote:
[#4033] Garbage collection trouble — Christian Neukirchen <chneukirchen@...>
Hello,
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
ts <decoux@moulon.inra.fr> writes:
>>>>> "C" == Christian Neukirchen <chneukirchen@gmail.com> writes:
[#4040] Extensions, Internal — Jgen Mangler <juergen.mangler@...>
Hi,
Allowing custom number literal suffixes?
Moin!
On the ruby-muse mailing list which is a place for discussion of new
ideas for Ruby there recently was a sub-thread concerning the
introduction of user-defined number literal suffixes. These suffixes are
already used in other languages and look like 1.5f or 0.6r. I think
having these would be nice for user-defined numeric Classes like
Rational (currently these overload 1/2 under mathn and other operations
which can be a problem) and imaginary numbers (via the Complex class). I
think being able to write 0.5r instead of the much longer
Rational.reduce(1, 2), 2i instead of Complex.new(2, 1) or 5.1b instead
of BigDecimal.new("5.1") would be a nice thing that would not have many
downsides.
Peter Vanbroekhoven was able to come up with a fairly simple and
efficient patch which I have reattached to this mail. With it applied
you can write 1.5x and it will call number_literal_x("1.5") and return
the result.
However I might be overlooking issues that are associated with this
enhancement and I know that having useless features leads to language
bloat. So what do the community and matz think about this? Would this be
useful to you?
Thank you all in advance for feedback.
Regards,
Florian Gross
Attachments (1)
--- eval.c 13 Oct 2004 19:45:26 -0000 1.1.1.1
+++ eval.c 26 Dec 2004 23:38:50 -0000 1.1.1.1.22.2
@@ -7527,6 +7527,13 @@
ruby_safe_level = safe;
}
+static VALUE
+rb_number_literal_f(obj, s)
+ VALUE obj, s;
+{
+ return rb_float_new(rb_str_to_dbl(s, Qfalse));
+}
+
void
Init_eval()
{
@@ -7623,6 +7630,8 @@
rb_global_variable(&trace_func);
rb_define_virtual_variable("$SAFE", safe_getter, safe_setter);
+
+ rb_define_method(rb_mKernel, "number_literal_f", rb_number_literal_f, 1);
}
/*
--- parse.y 13 Oct 2004 19:46:40 -0000 1.1.1.1
+++ parse.y 26 Dec 2004 23:38:51 -0000 1.1.1.1.22.3
@@ -244,7 +244,7 @@
k__FILE__
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR
-%token <node> tINTEGER tFLOAT tSTRING_CONTENT
+%token <node> tINTEGER tFLOAT tSTRING_CONTENT tNUMBER_LITERAL
%token <node> tNTH_REF tBACK_REF
%token <num> tREGEXP_END
@@ -2131,6 +2131,7 @@
;
numeric : tINTEGER
+ | tNUMBER_LITERAL
| tFLOAT
| tUMINUS_NUM tINTEGER %prec tLOWEST
{
@@ -3923,6 +3924,19 @@
decode_num:
pushback(c);
+ if (nondigit && ISALPHA(nondigit)) {
+ c = nondigit;
+ }
+ if (ISALPHA(c)) {
+ char name[17] = "number_literal_*";
+ name[15] = c;
+ NODE *str;
+ tokfix();
+ str = NEW_LIST(NEW_STR(rb_str_new(tok(), toklen())));
+ nextc();
+ yylval.node = NEW_FCALL(rb_intern(name), str);
+ return tNUMBER_LITERAL;
+ }
tokfix();
if (nondigit) {
char tmp[30];
--- ext/bigdecimal/bigdecimal.c 13 Oct 2004 19:48:30 -0000 1.1.1.1
+++ ext/bigdecimal/bigdecimal.c 26 Dec 2004 01:19:20 -0000 1.1.1.1.22.1
@@ -1217,6 +1217,19 @@
}
static VALUE
+rb_number_literal_b(obj, s)
+ VALUE obj, s;
+{
+ ENTER(5);
+ Real *pv;
+
+ SafeStringValue(s);
+ GUARD_OBJ(pv, VpCreateRbObject(0, RSTRING(s)->ptr));
+
+ return ToValue(pv);
+}
+
+static VALUE
BigDecimal_limit(int argc, VALUE *argv, VALUE self)
{
VALUE nFig;
@@ -1346,6 +1359,8 @@
rb_define_method(rb_cBigDecimal, "finite?", BigDecimal_IsFinite, 0);
rb_define_method(rb_cBigDecimal, "truncate", BigDecimal_truncate, -1);
rb_define_method(rb_cBigDecimal, "_dump", BigDecimal_dump, -1);
+
+ rb_define_method(rb_mKernel, "number_literal_b", rb_number_literal_b, 1);
}
/*