[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

[PATCH] Friendlier methods to compare two Time objects

From: "Jim Cropcho" <jim.cropcho@...>
Date: 2008-01-22 19:54:14 UTC
List: ruby-core #15185
Hello,

Currently, comparison of two Time objects is done via the >, < and <=>
methods. Although they make sense in many contexts, here they are
counterintuitive, because people do not normally think of a Time as being
"greater than" or "less than" another time. Rather, words such as "before"
and "after" are used.

I propose the addition of "before?(another_time)" and
"after?(another_time?)" as public instance methods for Class:Time.

Examples:

Time.now.after? Time.now+100 # => false
Time.now.before ? Time.now+100 # => true

As you can see, these methods can be read and written far more naturally,
providing quicker development and easier maintenance. Like Matz, "I'm trying
to make Ruby natural, not simple."

Regards,
Jim Cropcho

ChangeLog entry:
===========================
{DATE OF COMMIT}  Jim Cropcho <jim.cropcho@gmail.com>

  * time.c: added public instance methods "before?" and "after?".
===========================

Attachments (1)

ruby-before_and_after.patch (2.06 KB, text/x-diff)
Index: time.c
===================================================================
--- time.c	(revision 15174)
+++ time.c	(working copy)
@@ -1078,6 +1078,60 @@
 
 /*
  * call-seq:
+ *  time.before?(other_time)
+ *
+ * Return <code>true</code> if <i>time</i> is before <i>other_time</i>, or
+ * <code>false</code> if after or the same time as <i>other_time</i>.
+ */
+
+static VALUE
+time_before(VALUE time1, VALUE time2)
+{
+    struct time_object *tobj1, *tobj2;
+
+    GetTimeval(time1, tobj1);
+    if (TYPE(time2) == T_DATA && RDATA(time2)->dfree == time_free) {
+			GetTimeval(time2, tobj2);
+			if (tobj1->ts.tv_sec == tobj2->ts.tv_sec) {
+					if (tobj1->ts.tv_nsec < tobj2->ts.tv_nsec) return Qtrue;
+					return Qfalse;
+			}
+			if (tobj1->ts.tv_sec < tobj2->ts.tv_sec) return Qtrue;
+			return Qfalse;
+    }
+
+    return Qnil;
+}
+
+/*
+ * call-seq:
+ *  time.after?(other_time)
+ *
+ * Return <code>true</code> if <i>time</i> is e <i>other_time</i>, or
+ * <code>false</code> if before or the same time as <i>other_time</i>
+ */
+
+static VALUE
+time_after(VALUE time1, VALUE time2)
+{
+    struct time_object *tobj1, *tobj2;
+
+    GetTimeval(time1, tobj1);
+    if (TYPE(time2) == T_DATA && RDATA(time2)->dfree == time_free) {
+			GetTimeval(time2, tobj2);
+			if (tobj1->ts.tv_sec == tobj2->ts.tv_sec) {
+					if (tobj1->ts.tv_nsec > tobj2->ts.tv_nsec) return Qtrue;
+					return Qfalse;
+			}
+			if (tobj1->ts.tv_sec > tobj2->ts.tv_sec) return Qtrue;
+			return Qfalse;
+    }
+
+    return Qnil;
+}
+
+/*
+ * call-seq:
  *  time.eql?(other_time)
  *
  * Return <code>true</code> if <i>time</i> and <i>other_time</i> are
@@ -2339,6 +2393,8 @@
     rb_define_method(rb_cTime, "to_i", time_to_i, 0);
     rb_define_method(rb_cTime, "to_f", time_to_f, 0);
     rb_define_method(rb_cTime, "<=>", time_cmp, 1);
+    rb_define_method(rb_cTime, "before?", time_before, 1);
+    rb_define_method(rb_cTime, "after?", time_after, 1);
     rb_define_method(rb_cTime, "eql?", time_eql, 1);
     rb_define_method(rb_cTime, "hash", time_hash, 0);
     rb_define_method(rb_cTime, "initialize", time_init, 0);

In This Thread

Prev Next