Modified: MacRuby/trunk/re.cpp (3801 => 3802)
--- MacRuby/trunk/re.cpp 2010-03-18 05:34:06 UTC (rev 3801)
+++ MacRuby/trunk/re.cpp 2010-03-18 05:34:51 UTC (rev 3802)
@@ -448,6 +448,26 @@
}
/*
+ * call-seq:
+ * rxp.hash => fixnum
+ *
+ * Produce a hash based on the text and options of this regular expression.
+ */
+
+static VALUE
+regexp_hash(VALUE rcv, SEL sel)
+{
+ UnicodeString *unistr = RREGEXP(rcv)->unistr;
+ assert(unistr != NULL);
+
+ unsigned long code = rb_str_hash_uchars(unistr->getBuffer(),
+ unistr->length());
+ code += rb_reg_options(rcv);
+
+ return LONG2NUM(code);
+}
+
+/*
* call-seq:
* rxp == other_rxp => true or false
* rxp.eql?(other_rxp) => true or false
@@ -1058,7 +1078,7 @@
(void *)regexp_initialize, -1);
rb_objc_define_method(rb_cRegexp, "initialize_copy",
(void *)regexp_initialize_copy, 1);
- //rb_objc_define_method(rb_cRegexp, "hash", rb_reg_hash, 0);
+ rb_objc_define_method(rb_cRegexp, "hash", (void *)regexp_hash, 0);
rb_objc_define_method(rb_cRegexp, "eql?", (void *)regexp_equal, 1);
rb_objc_define_method(rb_cRegexp, "==", (void *)regexp_equal, 1);
rb_objc_define_method(rb_cRegexp, "=~", (void *)regexp_match, 1);