public Method

IO.puts(...)

ios.puts(obj, ...)     nil

Writes the given objects to ios as with IO#print. Writes a record separator (typically a newline) after any that do not already end with a newline sequence. If called with an array argument, writes each element on a new line. If called without arguments, outputs a single record separator.

$stdout.puts("this", "is", "a", "test")

produces:

this
is
a
test

Source Code

/*
*  call-seq:
*     ios.puts(obj, ...)    => nil
*  
*  Writes the given objects to <em>ios</em> as with
*  <code>IO#print</code>. Writes a record separator (typically a
*  newline) after any that do not already end with a newline sequence.
*  If called with an array argument, writes each element on a new line.
*  If called without arguments, outputs a single record separator.
*     
*     $stdout.puts("this", "is", "a", "test")
*     
*  <em>produces:</em>
*     
*     this
*     is
*     a
*     test
*/

VALUE
rb_io_puts(argc, argv, out)
   int argc;
   VALUE *argv;
   VALUE out;
{
   int i;
   VALUE line;

   /* if no argument given, print newline. */
   if (argc == 0) {
       rb_io_write(out, rb_default_rs);
       return Qnil;
   }
   for (i=0; i<argc; i++) {
       if (NIL_P(argv[i])) {
           line = rb_str_new2("nil");
       }
       else {
           line = rb_check_array_type(argv[i]);
           if (!NIL_P(line)) {
               rb_protect_inspect(io_puts_ary, line, out);
               continue;
           }
           line = rb_obj_as_string(argv[i]);
       }
       rb_io_write(out, line);
       if (RSTRING(line)->len == 0 ||
           RSTRING(line)->ptr[RSTRING(line)->len-1] != '\n') {
           rb_io_write(out, rb_default_rs);
       }
   }

   return Qnil;
}
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.