Feature #3346 » __dir__.patch
| eval.c | ||
|---|---|---|
| 
         } 
   | 
||
| 
     } 
   | 
||
| 
     /* 
   | 
||
| 
      *  call-seq: 
   | 
||
| 
      *     __dir__         -> string 
   | 
||
| 
      * 
   | 
||
| 
      *  Returns the value of <code>File.dirname(__FILE__)</code> 
   | 
||
| 
      *  If <code>__FILE__</code> is <code>nil</code>, it returns <code>nil</code>. 
   | 
||
| 
      * 
   | 
||
| 
      */ 
   | 
||
| 
     static VALUE 
   | 
||
| 
     f_current_dirname(void) 
   | 
||
| 
     { 
   | 
||
| 
         VALUE base = rb_current_realfilepath(); 
   | 
||
| 
         if (NIL_P(base)) { 
   | 
||
| 
     	return Qnil; 
   | 
||
| 
         } 
   | 
||
| 
         base = rb_file_dirname(base); 
   | 
||
| 
         return base; 
   | 
||
| 
     } 
   | 
||
| 
     void 
   | 
||
| 
     Init_eval(void) 
   | 
||
| 
     { 
   | 
||
| ... | ... | |
| 
         rb_define_global_function("__method__", rb_f_method_name, 0); 
   | 
||
| 
         rb_define_global_function("__callee__", rb_f_callee_name, 0); 
   | 
||
| 
         rb_define_global_function("__dir__", f_current_dirname, 0); 
   | 
||
| 
         rb_define_private_method(rb_cModule, "append_features", rb_mod_append_features, 1); 
   | 
||
| 
         rb_define_private_method(rb_cModule, "extend_object", rb_mod_extend_object, 1); 
   | 
||
| test/ruby/test_method.rb | ||
|---|---|---|
| 
           1000.times {p = Bug6171.new('test'); 10000.times {p.reverse}} 
   | 
||
| 
           EOC 
   | 
||
| 
       end 
   | 
||
| 
       def test___dir__ 
   | 
||
| 
         assert_instance_of String, __dir__ 
   | 
||
| 
         assert_equal(File.dirname(__FILE__), __dir__) 
   | 
||
| 
       end 
   | 
||
| 
     end 
   | 
||
- « Previous
 - 1
 - 2
 - Next »