/* * 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; }