* ext/pathname/pathname.c (path_split): Pathname#split translated from

pathname.rb.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2010-08-21 08:37:28 +00:00
parent b88a5027b8
commit 86b26898eb
3 changed files with 23 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Sat Aug 21 17:36:42 2010 Tanaka Akira <akr@fsij.org>
* ext/pathname/pathname.c (path_split): Pathname#split translated from
pathname.rb.
Fri Aug 20 10:40:04 2010 Tanaka Akira <akr@fsij.org> Fri Aug 20 10:40:04 2010 Tanaka Akira <akr@fsij.org>
* ext/pathname/pathname.c (path_expand_path): Pathname#expand_path * ext/pathname/pathname.c (path_expand_path): Pathname#expand_path

View File

@ -510,14 +510,6 @@ class Pathname # * IO *
end end
class Pathname # * File *
# See <tt>File.split</tt>. Returns the #dirname and the #basename in an
# Array.
def split() File.split(@path).map {|f| self.class.new(f) } end
end
class Pathname # * FileTest * class Pathname # * FileTest *
# See <tt>FileTest.blockdev?</tt>. # See <tt>FileTest.blockdev?</tt>.

View File

@ -474,6 +474,23 @@ path_expand_path(int argc, VALUE *argv, VALUE self)
return rb_class_new_instance(1, &str, rb_obj_class(self)); return rb_class_new_instance(1, &str, rb_obj_class(self));
} }
/*
* See <tt>File.split</tt>. Returns the #dirname and the #basename in an Array.
*/
static VALUE
path_split(VALUE self)
{
VALUE str = get_strpath(self);
VALUE ary, dirname, basename;
ary = rb_funcall(rb_cFile, rb_intern("split"), 1, str);
ary = rb_check_array_type(ary);
dirname = rb_ary_entry(ary, 0);
basename = rb_ary_entry(ary, 1);
dirname = rb_class_new_instance(1, &dirname, rb_obj_class(self));
basename = rb_class_new_instance(1, &basename, rb_obj_class(self));
return rb_ary_new3(2, dirname, basename);
}
/* /*
* == Pathname * == Pathname
* *
@ -697,4 +714,5 @@ Init_pathname()
rb_define_method(rb_cPathname, "dirname", path_dirname, 0); rb_define_method(rb_cPathname, "dirname", path_dirname, 0);
rb_define_method(rb_cPathname, "extname", path_extname, 0); rb_define_method(rb_cPathname, "extname", path_extname, 0);
rb_define_method(rb_cPathname, "expand_path", path_expand_path, -1); rb_define_method(rb_cPathname, "expand_path", path_expand_path, -1);
rb_define_method(rb_cPathname, "split", path_split, 0);
} }