public Method

Object.inspect

obj.inspect    string

Returns a string containing a human-readable representation of obj. If not overridden, uses the to_s method to generate the string.

[ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
Time.new.inspect                 #=> "Wed Apr 09 08:54:39 CDT 2003"

Source Code

/*
*  call-seq:
*     obj.inspect   => string
*  
*  Returns a string containing a human-readable representation of
*  <i>obj</i>. If not overridden, uses the <code>to_s</code> method to
*  generate the string.
*     
*     [ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
*     Time.new.inspect                 #=> "Wed Apr 09 08:54:39 CDT 2003"
*/


static VALUE
rb_obj_inspect(obj)
   VALUE obj;
{
   if (TYPE(obj) == T_OBJECT
       && ROBJECT(obj)->iv_tbl
       && ROBJECT(obj)->iv_tbl->num_entries > 0) {
       VALUE str;
       size_t len;
       char *c;

       c = rb_obj_classname(obj);
       if (rb_inspecting_p(obj)) {
           len = strlen(c)+10+16+1;
           str = rb_str_new(0, len); /* 10:tags 16:addr 1:nul */
           snprintf(RSTRING(str)->ptr, len, "#<%s:0x%lx ...>", c, obj);
           RSTRING(str)->len = strlen(RSTRING(str)->ptr);
           return str;
       }
       len = strlen(c)+6+16+1;
       str = rb_str_new(0, len);     /* 6:tags 16:addr 1:nul */
       snprintf(RSTRING(str)->ptr, len, "-<%s:0x%lx", c, obj);
       RSTRING(str)->len = strlen(RSTRING(str)->ptr);
       return rb_protect_inspect(inspect_obj, obj, str);
   }
   return rb_funcall(obj, rb_intern("to_s"), 0, 0);
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.