--- numeric.c 2010-07-21 02:19:10.132975081 -0400
+++ numeric.c 2010-07-19 01:58:27.473031631 -0400
@@ -453,6 +453,23 @@
/*
* call-seq:
+ * num.divsor?(other) -> true or false
+ *
+ * Returns true
if other is a multiple of num.
+ *
+ * 1.divisor?(2) #=> false
+ * 2.divisor?(2) #=> true
+ * 126.divisor?(9) #=> true
+ */
+
+static VALUE
+num_divisor_p(VALUE num, VALUE other)
+{
+ return rb_equal(rb_funcall(num, '%', 1, other), DBL2NUM(0));
+}
+
+/*
+ * call-seq:
* num.abs -> numeric
* num.magnitude -> numeric
*
@@ -3351,6 +3368,7 @@
rb_define_method(rb_cNumeric, "integer?", num_int_p, 0);
rb_define_method(rb_cNumeric, "zero?", num_zero_p, 0);
rb_define_method(rb_cNumeric, "nonzero?", num_nonzero_p, 0);
+ rb_define_method(rb_cNumeric, "divisor?", num_divisor_p, 1);
rb_define_method(rb_cNumeric, "floor", num_floor, 0);
rb_define_method(rb_cNumeric, "ceil", num_ceil, 0);