Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Pathname#split_names
(untyped path) -> untyped
split_names(p1)
pathname.c
View on GitHub ↗
static VALUE
split_names(VALUE self, VALUE path)
{
rb_encoding *enc = rb_enc_get(check_strpath(path));
const char *beg = RSTRING_PTR(path), *ptr = beg;
const char *end = RSTRING_END(path);
const char *root = rb_enc_path_skip_prefix_root(ptr, end, enc);
VALUE pre = rb_str_subseq(path, 0, root - ptr);
VALUE names = rb_ary_new();
while (ptr < end) {
const char *next = rb_enc_path_next(ptr, end, enc);
if (next > ptr) rb_ary_push(names, rb_str_subseq(path, ptr - beg, next - ptr));
ptr = next;
while (ptr < end && isdirsep(*ptr)) ++ptr;
}
return rb_assoc_new(pre, names);
}
split_names(path) -> prefix, [name, …]