From: Gabriel Saravia Date: 2009-05-07T16:02:09+09:00 Subject: Adding a =~ method to the Method class The Ruby API specifies that objects of the Method class have an instance method "==": "Two method objects are equal if that are bound to the same object and contain the same body." At this moment, I would very much like it if it also had a "=~" method: "two method objects are similar if they contain the same body but are NOT necessarily bound to the same object" unfortunately I'm not currently skilled enough to really understand the C code in which the "==" method for the Method class is written. could someone help me out here? Below I've replicated the C code for the "==" method with some changes to reflect what the =~ method would look like: static VALUE method_similar(method, other) VALUE method, other; { struct METHOD *m1, *m2; if (TYPE(other) != T_DATA || RDATA(other)->dmark != (RUBY_DATA_FUNC)bm_mark) return Qfalse; //I Do Not understand what this if statement does if (CLASS_OF(method) != CLASS_OF(other)) return Qfalse; //I assume this makes sure that the classes of both methods is Method? Data_Get_Struct(method, struct METHOD, m1);//No clue but looks harmless enough Data_Get_Struct(other, struct METHOD, m2); //No clue but looks harmless enough if (m1->klass != m2->klass || m1->rklass != m2->rklass || //this condition looks like it ALSO checks that the classes of both methods is Method, so I must be missing something somewhere... m1->recv != m2->recv || // <-!! Would all that need to happen is this line be eliminated?? m1->body != m2->body) return Qfalse; return Qtrue; } Also, how can you modify Ruby to include this function, so i can use it in my Rails tests? -Gabe -- Posted via http://www.ruby-forum.com/.