mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Added Symbol#start_with? and Symbol#end_with? method. [Feature #16348]
This commit is contained in:
parent
76871dea6b
commit
b5fbefbf2c
3 changed files with 70 additions and 0 deletions
4
NEWS
4
NEWS
|
@ -397,6 +397,10 @@ RubyVM::
|
|||
|
||||
String::
|
||||
|
||||
New methods::
|
||||
|
||||
* Added Symbol#start_with? and Symbol#end_with? method. [Feature #16348]
|
||||
|
||||
Unicode::
|
||||
|
||||
* Update Unicode version and Emoji version from 11.0.0 to
|
||||
|
|
43
string.c
43
string.c
|
@ -11075,6 +11075,46 @@ sym_swapcase(int argc, VALUE *argv, VALUE sym)
|
|||
return rb_str_intern(rb_str_swapcase(argc, argv, rb_sym2str(sym)));
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* sym.start_with?([prefixes]+) -> true or false
|
||||
*
|
||||
* Returns true if +sym+ starts with one of the +prefixes+ given.
|
||||
* Each of the +prefixes+ should be a String or a Regexp.
|
||||
*
|
||||
* :hello.start_with?("hell") #=> true
|
||||
* :hello.start_with?(/H/i) #=> true
|
||||
*
|
||||
* # returns true if one of the prefixes matches.
|
||||
* :hello.start_with?("heaven", "hell") #=> true
|
||||
* :hello.start_with?("heaven", "paradise") #=> false
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
sym_start_with(int argc, VALUE *argv, VALUE sym)
|
||||
{
|
||||
return rb_str_start_with(argc, argv, rb_sym2str(sym));
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* sym.end_with?([suffixes]+) -> true or false
|
||||
*
|
||||
* Returns true if +sym+ ends with one of the +suffixes+ given.
|
||||
*
|
||||
* :hello.end_with?("ello") #=> true
|
||||
*
|
||||
* # returns true if one of the +suffixes+ matches.
|
||||
* :hello.end_with?("heaven", "ello") #=> true
|
||||
* :hello.end_with?("heaven", "paradise") #=> false
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
sym_end_with(int argc, VALUE *argv, VALUE sym)
|
||||
{
|
||||
return rb_str_end_with(argc, argv, rb_sym2str(sym));
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* sym.encoding -> encoding
|
||||
|
@ -11361,5 +11401,8 @@ Init_String(void)
|
|||
rb_define_method(rb_cSymbol, "capitalize", sym_capitalize, -1);
|
||||
rb_define_method(rb_cSymbol, "swapcase", sym_swapcase, -1);
|
||||
|
||||
rb_define_method(rb_cSymbol, "start_with?", sym_start_with, -1);
|
||||
rb_define_method(rb_cSymbol, "end_with?", sym_end_with, -1);
|
||||
|
||||
rb_define_method(rb_cSymbol, "encoding", sym_encoding, 0);
|
||||
}
|
||||
|
|
|
@ -560,4 +560,27 @@ class TestSymbol < Test::Unit::TestCase
|
|||
puts :a == :a
|
||||
RUBY
|
||||
end
|
||||
|
||||
def test_start_with?
|
||||
assert_equal(true, :hello.start_with?("hel"))
|
||||
assert_equal(false, :hello.start_with?("el"))
|
||||
assert_equal(true, :hello.start_with?("el", "he"))
|
||||
|
||||
bug5536 = '[ruby-core:40623]'
|
||||
assert_raise(TypeError, bug5536) {:str.start_with? :not_convertible_to_string}
|
||||
|
||||
assert_equal(true, :hello.start_with?(/hel/))
|
||||
assert_equal("hel", $&)
|
||||
assert_equal(false, :hello.start_with?(/el/))
|
||||
assert_nil($&)
|
||||
end
|
||||
|
||||
def test_end_with?
|
||||
assert_equal(true, :hello.end_with?("llo"))
|
||||
assert_equal(false, :hello.end_with?("ll"))
|
||||
assert_equal(true, :hello.end_with?("el", "lo"))
|
||||
|
||||
bug5536 = '[ruby-core:40623]'
|
||||
assert_raise(TypeError, bug5536) {:str.end_with? :not_convertible_to_string}
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue