[前][次][番号順一覧][スレッド一覧]

ruby-changes:28055

From: akr <ko1@a...>
Date: Thu, 4 Apr 2013 20:12:22 +0900 (JST)
Subject: [ruby-changes:28055] akr:r40107 (trunk): * ext/pathname/pathname.c (path_write): New method.

akr	2013-04-04 20:12:12 +0900 (Thu, 04 Apr 2013)

  New Revision: 40107

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=40107

  Log:
    * ext/pathname/pathname.c (path_write): New method.
      (path_binwrite): Ditto.
      [ruby-core:49468] [Feature #7378]

  Modified files:
    trunk/ChangeLog
    trunk/NEWS
    trunk/ext/pathname/pathname.c
    trunk/test/pathname/test_pathname.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 40106)
+++ ChangeLog	(revision 40107)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Apr  4 20:07:19 2013  Tanaka Akira  <akr@f...>
+
+	* ext/pathname/pathname.c (path_write): New method.
+	  (path_binwrite): Ditto.
+	  [ruby-core:49468] [Feature #7378]
+
 Thu Apr  4 16:51:29 2013  Yuki Yugui Sonoda  <yugui@g...>
 
 	* thread_pthread.c: Fixes wrong scopes of #if USE_SLEEPY_TIMER_THREAD
Index: ext/pathname/pathname.c
===================================================================
--- ext/pathname/pathname.c	(revision 40106)
+++ ext/pathname/pathname.c	(revision 40107)
@@ -346,6 +346,48 @@ path_binread(int argc, VALUE *argv, VALU https://github.com/ruby/ruby/blob/trunk/ext/pathname/pathname.c#L346
 
 /*
  * call-seq:
+ *   pathname.write(string, [offset] )   => fixnum
+ *   pathname.write(string, [offset], open_args )   => fixnum
+ *
+ * Writes +contents+ to the file.
+ *
+ * See IO.write.
+ *
+ */
+static VALUE
+path_write(int argc, VALUE *argv, VALUE self)
+{
+    VALUE args[4];
+    int n;
+
+    args[0] = get_strpath(self);
+    n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
+    return rb_funcall2(rb_cIO, rb_intern("write"), 1+n, args);
+}
+
+/*
+ * call-seq:
+ *   pathname.binwrite(string, [offset] )   => fixnum
+ *   pathname.binwrite(string, [offset], open_args )   => fixnum
+ *
+ * Writes +contents+ to the file, opening it in binary mode.
+ *
+ * See IO.binwrite.
+ *
+ */
+static VALUE
+path_binwrite(int argc, VALUE *argv, VALUE self)
+{
+    VALUE args[4];
+    int n;
+
+    args[0] = get_strpath(self);
+    n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
+    return rb_funcall2(rb_cIO, rb_intern("binwrite"), 1+n, args);
+}
+
+/*
+ * call-seq:
  *   pathname.readlines(sep=$/ [, open_args])     -> array
  *   pathname.readlines(limit [, open_args])      -> array
  *   pathname.readlines(sep, limit [, open_args]) -> array
@@ -1334,6 +1376,8 @@ Init_pathname() https://github.com/ruby/ruby/blob/trunk/ext/pathname/pathname.c#L1376
     rb_define_method(rb_cPathname, "read", path_read, -1);
     rb_define_method(rb_cPathname, "binread", path_binread, -1);
     rb_define_method(rb_cPathname, "readlines", path_readlines, -1);
+    rb_define_method(rb_cPathname, "write", path_write, -1);
+    rb_define_method(rb_cPathname, "binwrite", path_binwrite, -1);
     rb_define_method(rb_cPathname, "sysopen", path_sysopen, -1);
     rb_define_method(rb_cPathname, "atime", path_atime, 0);
     rb_define_method(rb_cPathname, "ctime", path_ctime, 0);
Index: NEWS
===================================================================
--- NEWS	(revision 40106)
+++ NEWS	(revision 40107)
@@ -41,6 +41,11 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L41
 * Net::SMTP
   * Added Net::SMTP#rset to implement the RSET command
 
+* Pathname
+  * New methods:
+    * Pathname#write
+    * Pathname#binwrite
+
 * Rinda::RingServer, Rinda::RingFinger
   * Rinda now supports multicast sockets.  See Rinda::RingServer and
     Rinda::RingFinger for details.
Index: test/pathname/test_pathname.rb
===================================================================
--- test/pathname/test_pathname.rb	(revision 40106)
+++ test/pathname/test_pathname.rb	(revision 40107)
@@ -716,6 +716,22 @@ class TestPathname < Test::Unit::TestCas https://github.com/ruby/ruby/blob/trunk/test/pathname/test_pathname.rb#L716
     }
   end
 
+  def test_write
+    with_tmpchdir('rubytest-pathname') {|dir|
+      path = Pathname("a")
+      path.write "abc"
+      assert_equal("abc", path.read)
+    }
+  end
+
+  def test_binwrite
+    with_tmpchdir('rubytest-pathname') {|dir|
+      path = Pathname("a")
+      path.binwrite "abc\x80"
+      assert_equal("abc\x80".b, path.binread)
+    }
+  end
+
   def test_sysopen
     with_tmpchdir('rubytest-pathname') {|dir|
       open("a", "w") {|f| f.write "abc" }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]