Burdette Lamar
38385d28df
Enhanced RDoc for String ( #3574 )
...
Methods:
=~
match
2020-09-24 13:23:26 -05:00
Burdette Lamar
6fe2a9fcda
Enhanced RDoc for String ( #3569 )
...
Makes some methods doc compliant with https://github.com/ruby/ruby/blob/master/doc/method_documentation.rdoc . Also, other minor revisions to make more consistent.
Methods:
==
===
eql?
<=>
casecmp
casecmp?
index
rindex
2020-09-24 10:55:43 -05:00
Kazuhiro NISHIYAMA
9a8f5f0a9a
Fix call-seq [ci skip]
...
`encoding` can be not only an encoding name, but also an Encoding object.
```
s = String.new('foo', encoding: Encoding::US_ASCII)
s.encoding # => #<Encoding:US-ASCII>
```
2020-09-23 11:44:06 +09:00
Burdette Lamar
b904b72960
Enhanced RDoc for String ( #3565 )
...
Makes some methods doc compliant with https://github.com/ruby/ruby/blob/master/doc/method_documentation.rdoc . Also, other minor revisions to make more consistent.
Methods:
try_convert
+string
-string
concat
<<
prepend
hash
2020-09-22 16:32:17 -05:00
Burdette Lamar
c6c5d4b3fa
Comply with guide for method doc: string.c ( #3528 )
...
Methods:
::new
#length
#bytesize
#empty?
#+
#*
#%
2020-09-21 11:27:54 -05:00
Koichi Sasada
dd5db6f5fe
sync fstring_table for deletion
...
Ractors can access this table simultaneously so we need to sync
accesses.
2020-09-18 14:17:49 +09:00
Koichi Sasada
e81d7189a0
sync fstring pool
...
fstring pool should be sync with other Ractors.
2020-09-15 00:04:59 +09:00
Soutaro Matsumoto
f0ddbd502c
Let String#slice! return nil ( #3533 )
...
Returns `nil` instead of an empty string when non-integer number is given (to make it 2.7 compatible).
2020-09-11 14:34:10 +09:00
Nobuyoshi Nakada
eb67c603ca
Added Symbol#name
...
https://bugs.ruby-lang.org/issues/16150#change-87446
2020-09-04 22:18:59 +09:00
Burdette Lamar
51525557fd
Partial compliance with doc/method_documentation.rdoc in string.c ( #3436 )
...
Removes references to *-convertible thingies.
2020-08-20 12:09:49 -05:00
Jean Boussier
aaf0e33c0a
register_fstring: avoid duping the passed string when possible
...
If the passed string is frozen, bare and not shared, then there
is no need to duplicate it.
Ref: 4ab69ebbd7
Ref: https://bugs.ruby-lang.org/issues/11386
2020-08-19 08:08:56 -07:00
Nobuyoshi Nakada
d75433ae19
[DOC] fixed a missing markup
2020-08-15 14:17:02 +09:00
Kasumi Hanazuki
014a4fda54
rb_str_{index,rindex}_m: Handle /\K/ in pattern
...
When the pattern Regexp given to String#index and String#rindex
contain a /\K/ (lookbehind) operator, these methods return the
position where the beginning of the lookbehind pattern matches, while
they are expected to return the position where the \K matches.
```
# without patch
"abcdbce".index(/b\Kc/) # => 1
"abcdbce".rindex(/b\Kc/) # => 4
```
This patch fixes this problem by using BEG(0) instead of the return
value of rb_reg_search.
```
# with patch
"abcdbce".index(/b\Kc/) # => 2
"abcdbce".rindex(/b\Kc/) # => 5
```
Fixes [Bug #17118 ]
2020-08-13 20:54:12 +09:00
Kasumi Hanazuki
5d71eed1a7
rb_str_{partition,rpartition}_m: Handle /\K/ in pattern
...
When the pattern given to String#partition and String#rpartition
contain a /\K/ (lookbehind) operator, the methods return strings
sliced at incorrect positions.
```
# without patch
"abcdbce".partition(/b\Kc/) # => ["a", "c", "cdbce"]
"abcdbce".rpartition(/b\Kc/) # => ["abcd", "c", "ce"]
```
This patch fixes the problem by using BEG(0) instead of the return
value of rb_reg_search.
```
# with patch
"abcdbce".partition(/b\Kc/) # => ["ab", "c", "dbce"]
"abcdbce".rpartition(/b\Kc/) # => ["abcdb", "c", "e"]
```
As a side-effect this patch makes String#partition 2x faster when the
pattern is a costly Regexp by performing Regexp search only once,
which was unexpectedly done twice in the original implementation.
Fixes [Bug #17119 ]
2020-08-13 20:50:50 +09:00
Kasumi Hanazuki
e79cdcf61b
string.c(rb_str_split_m): Handle /\K/ correctly
...
Use BEG(0) instead of the result of rb_reg_search to handle the cases
when the separator Regexp contains /\K/ (lookbehind) operator.
Fixes [Bug #17113 ]
2020-08-12 10:01:39 +09:00
Nobuyoshi Nakada
0ca6b973e8
Removed non-ASCII code to suppress warnings by localized compilers
2020-08-10 19:46:13 +09:00
Nobuyoshi Nakada
fac62f094e
Adjust indent
2020-08-10 16:35:42 +09:00
Kazuhiro NISHIYAMA
946cd6c534
Use https instead of http
2020-07-28 19:51:54 +09:00
卜部昌平
de3e931df7
add UNREACHABLE_RETURN
...
Not every compilers understand that rb_raise does not return. When a
function does not end with a return statement, such compilers can issue
warnings. We would better tell them about reachabilities.
2020-06-29 11:05:41 +09:00
卜部昌平
5f926b2b00
rb_str_partition: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
e3d821a36c
rb_str_crypt: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
a5ae9aebbc
trnext: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
c7a4073154
chompped_length: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
fdae2063fb
get_pat_quoted: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
673ddea934
get_pat: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
31e5d138d7
rb_str_slice_bang: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
19f2cabed8
rb_str_aset: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
841eea4bcb
rb_str_subpat_set: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
0358846f8c
rb_str_update: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
d49924ed81
rb_str_match: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
c422fc4bbc
rb_str_rindex_m: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
c29ec1ef1a
rb_str_index_m: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
6df790f22e
rb_enc_cr_str_buf_cat: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
S-H-GAMELINKS
0fcb2dd51d
add static modifier for rb_str_ord func
2020-05-27 11:26:44 +09:00
Kazuhiro NISHIYAMA
fa7addebb4
Fix typos [ci skip]
2020-05-17 21:01:29 +09:00
Burdette Lamar
cc525d764b
[ci skip] Enhanced rdoc for String.new ( #3067 )
...
* Per @nobu review
* Enhanced rdoc for String.new
* Respond to review
2020-05-15 14:14:50 -07:00
Nobuyoshi Nakada
693f7ab315
Optimize String#split
...
Optimized `String#split` with `/ /` (single space regexp) as
simple string splitting. [ruby-core:98272]
| |compare-ruby|built-ruby|
|:--------------|-----------:|---------:|
|re_space-1 | 432.786k| 1.539M|
| | -| 3.56x|
|re_space-10 | 76.231k| 191.547k|
| | -| 2.51x|
|re_space-100 | 8.152k| 19.557k|
| | -| 2.40x|
|re_space-1000 | 837.405| 2.022k|
| | -| 2.41x|
ruby-core:98272: https://bugs.ruby-lang.org/issues/15771#change-85511
2020-05-12 19:58:58 +09:00
卜部昌平
9e41a75255
sed -i 's|ruby/impl|ruby/internal|'
...
To fix build failures.
2020-05-11 09:24:08 +09:00
卜部昌平
d7f4d732c1
sed -i s|ruby/3|ruby/impl|g
...
This shall fix compile errors.
2020-05-11 09:24:08 +09:00
S.H
034b8472ba
remove unused rb_str_clear define ( #3059 )
2020-04-25 20:39:44 -07:00
Nobuyoshi Nakada
d4215dafea
Use UNREACHABLE_RETURN for non-void function
2020-04-16 17:59:55 +09:00
Kazuhiro NISHIYAMA
c79e3a5957
Add {Regexp,String}#match with block to call-seq [ci skip]
2020-04-14 12:39:16 +09:00
卜部昌平
9e6e39c351
Merge pull request #2991 from shyouhei/ruby.h
...
Split ruby.h
2020-04-08 13:28:13 +09:00
Nobuyoshi Nakada
8a7e0aaaef
Warn non-nil `$/` [Feature #14240 ]
2020-02-23 13:37:40 +09:00
Nobuyoshi Nakada
fce667ed08
Get rid of warnings/exceptions at cleanup
...
After the encoding index instance variable is removed when all
instance variables are removed in `obj_free`, then `rb_str_free`
causes uninitialized instance variable warning and nil-to-integer
conversion exception. Both cases result in object allocation
during GC, and crashes.
2020-02-13 12:46:48 +09:00
Nobuyoshi Nakada
160d3165eb
Copy non-inlined encoding index
2020-02-12 20:09:57 +09:00
Nobuyoshi Nakada
bdf3032e35
Make temporary lock string encoding free
...
As a temporary lock string is hidden, it can not have instance
variables, including non-inlined encoding index.
2020-02-12 19:58:22 +09:00
Nobuyoshi Nakada
05229cef45
Improve `String#slice!` performance
...
Instead of searching twice to extract and to delete, extract and
delete the found position at the first search.
This makes faster nearly twice, for regexps and strings.
| |compare-ruby|built-ruby|
|:-------------|-----------:|---------:|
|regexp-short | 2.143M| 3.918M|
|regexp-long | 105.162k| 205.410k|
|string-short | 3.789M| 7.964M|
|string-long | 1.301M| 2.457M|
2020-01-31 17:12:05 +09:00
Nobuyoshi Nakada
0dd6f020fc
Make `empty_string` a fake string
2020-01-31 14:24:07 +09:00
Jean Boussier
52dc0632fa
Avoid allocating a temporary empty string in String#slice!
2020-01-31 09:22:20 +09:00