Commit graph

1799 commits

Author SHA1 Message Date
Jean Boussier
0ae8dbbee0 rb_str_buf_append: fastpath to str_buf_cat
If the LHS is ASCII compatible and the RHS is 7BIT
we can directly concat without being concerned about
anything else.

Benchmark:
```
compare-ruby: ruby 3.2.0dev (2022-07-12T15:01:11Z master 71aec68566) [arm64-darwin21]
built-ruby: ruby 3.2.0dev (2022-07-13T10:13:53Z faster-buffer-conc.. a04c10476d) [arm64-darwin21]
warming up...

|                      |compare-ruby|built-ruby|
|:---------------------|-----------:|---------:|
|binary_append_utf8    |    385.315k|  573.663k|
|                      |           -|     1.49x|
|binary_append_binary  |    446.579k|  574.898k|
|                      |           -|     1.29x|
|utf8_append_utf8      |    430.936k|  573.394k|
|                      |           -|     1.33x|
```

Note that in the benchmark, the RHS always have a precomputed
coderange. So the benchmark never enter the slowpath of having to
scan the RHS. However it's extremly likely that we'll end
up scanning it anyway in rb_enc_cr_str_buf_cat
2022-07-19 10:41:40 +02:00
Jean Boussier
d084585f01 Rename ENCINDEX_ASCII to ENCINDEX_ASCII_8BIT
Otherwise it's way too easy to confuse it with US_ASCII.
2022-07-19 08:48:56 +02:00
Burdette Lamar
081bd061a8
[DOC] Correct call-seq directive in string.c (#6131)
Correct call-seq directive in string.c
2022-07-13 10:44:22 -05:00
S-H-GAMELINKS
420f3ced4d Using is_ascii_string to check encoding 2022-06-17 12:02:50 +09:00
Alan Wu
714a4942fd
Remove unused and accidentally public rb_str_shared_root_p()
This function was added to a public header in [1] probably
unintentionally since it's not used anywhere, exposes implementation
details, and isn't related to the goals of that pull request.

[1]: 56cc3e99b6
2022-06-16 07:20:20 -04:00
Nobuyoshi Nakada
048f14221c
Add placeholder to let braces match 2022-06-14 10:21:55 +09:00
Matt Valentine-House
56cc3e99b6 Move String RVALUES between pools
And re-embed any strings that can now fit inside the slot they've been
moved to
2022-06-13 10:11:27 -07:00
Alexander Ilyin
adcfd69690
[DOC] Fix markup for String (#5984)
* Add missing space for `String#start_with?`.
* Add missing pluses for `String#tr` and
  `Methods for Converting to New String` label.
* Move quote into the tag for `Whitespace in Strings` label.
2022-06-09 13:40:21 -05:00
Yusuke Endoh
b9f030954a Revert "error.c: Let Exception#inspect inspect its message"
This reverts commit 9d927204e7.
2022-06-07 11:52:44 +09:00
Yusuke Endoh
9d927204e7 error.c: Let Exception#inspect inspect its message
... only when the message string has a newline.

`p StandardError.new("foo\nbar")` now prints `#<StandardError: "foo\nbar">'
instead of:

    #<StandardError:
    bar>

[Bug #18170]
2022-06-07 11:07:09 +09:00
Jean Boussier
65122d09d5 [Feature #18595] Alias String#-@ as String#dedup 2022-05-20 11:31:59 -07:00
Nobuyoshi Nakada
5d45afdbbf
[DOC] Move the documentations of moved Symbol methods 2022-04-14 11:17:37 +09:00
Burdette Lamar
dfdc03248f
[DOC] Enhanced RDoc for Symbol (#5796)
Treats:
    #[]
    #length
    #empty?
    #upcase
    #downcase
    #capitalize
    #swapcase
    #start_with?
    #end_with?
    #encoding
    ::all_symbols
2022-04-13 13:45:18 -05:00
Nobuyoshi Nakada
7e97ebb6eb
Enforce literals on the second arguments 2022-04-13 18:33:34 +09:00
Burdette Lamar
b21026cb1a
Enhanced RDoc for Symbol (#5795)
Treats:

    #==
    #inspect
    #name
    #to_s
    #to_sym
    #to_proc
    #succ
    #<=>
    #casecmp
    #casecmp?
    #=~
    #match
    #match?
2022-04-12 17:27:18 -05:00
Burdette Lamar
70415071e8
Fix some RDoc links (#5778) 2022-04-08 14:25:38 -05:00
Burdette Lamar
9ca3d537b9
All-in-one RDoc for class String (#5777) 2022-04-07 14:29:04 -05:00
Burdette Lamar
717b20ee30
[DOC] Enhanced RDoc for string slices (#5769)
Creates file doc/string/slices.rdoc that the string slicing methods can link to.
2022-04-06 15:47:22 -05:00
Burdette Lamar
4a4485adbd
Enhanced RDoc for String#index (#5759) 2022-04-04 14:18:10 -05:00
Burdette Lamar
0b0ae583f4
[DOC] Enhanced RDoc for String (#5753)
Treats:
    #length
    #bytesize
2022-04-03 10:09:34 -05:00
Burdette Lamar
7be4d900f0
[DOC] Enhanced RDoc for String (#5751)
Adds to doc for String.new, also making it compliant with documentation_guide.rdoc.
    Fixes some broken links in io.c (that I failed to correct yesterday).
2022-04-02 14:26:49 -05:00
Burdette Lamar
056b7a8633
[DOC] Enhanced RDoc for String (#5742)
Treats:
    #force_encoding
    #b
    #valid_encoding?
    #ascii_only?
    #scrub
    #scrub!
    #unicode_normalized?
Plus a couple of minor tweaks.
2022-03-31 15:09:25 -05:00
Burdette Lamar
ffcdbedbfb
Repaired What's Here sections for Range, String, Symbol, Struct (#5735)
Repaired What's Here sections for Range, String, Symbol, Struct.
2022-03-30 13:46:24 -05:00
Burdette Lamar
b257034ae5
[DOC] Enhanced RDoc for String (#5730)
Treats:

    #start_with?
    #end_with?
    #delete_prefix
    #delete_prefix!
    #delete_suffix
    #delete_suffix!
2022-03-29 09:54:29 -05:00
Burdette Lamar
5525e47a0b
[DOC] Enhanced RDoc for String (#5726)
Treats:

    #ljust
    #rjust
    #center
    #partition
    #rpartition
2022-03-28 15:49:18 -05:00
Burdette Lamar
d52cf1013f
[DOC] Enhanced RDoc for String (#5724)
Treats:

    #scan
    #hex
    #oct
    #crypt
    #ord
    #sum
2022-03-27 14:45:14 -05:00
Nobuyoshi Nakada
1b0f05168d
[DOC] Fix references to unary operator 2022-03-27 11:24:06 +09:00
Burdette Lamar
e699e2d9bf
Enhanced RDoc for String (#5723)
Treats:

    #lstrip
    #lstrip!
    #rstrip
    #rstrip!
    #strip
    #strip!

Adds section Whitespace in Strings.
2022-03-26 12:42:44 -05:00
Nobuyoshi Nakada
300f4677c9
[DOC] Use simple references to operator methods
Method references is not only able to be marked up as code, also
reflects `--show-hash` option.
The bug that prevented the old rdoc from correctly parsing these
methods was fixed last month.
2022-03-26 21:13:16 +09:00
Burdette Lamar
465edb96f0
[DOC] Enhanced RDoc for String (#5707)
Treated:

    #chomp
    #chomp!
    #chop
    #chop!
2022-03-24 19:40:58 -05:00
Burdette Lamar
0140e6c41e
[DOC] Enhanced RDoc for String (#5685)
Treats:

    #chars
    #codepoints
    #each_char
    #each_codepoint
    #each_grapheme_cluster
    #grapheme_clusters

Also, corrects a passage in #unicode_normalize that mentioned module UnicodeNormalize, whose doc (:nodoc:, actually) says not to mention it.
2022-03-22 14:51:05 -05:00
Burdette Lamar
c129b6119d
[DOC] Use RDoc inclusions in string.c (#5683)
As @peterzhu2118 and @duerst have pointed out, putting string method's RDoc into doc/ (which allows non-ASCII in examples) makes the "click to toggle source" feature not work for that method.

This PR moves the primary method doc back into string.c, then includes RDoc from doc/string/*.rdoc, and also removes doc/string.rdoc.

The affected methods are:

    ::new
    #bytes
    #each_byte
    #each_line
    #split

The call-seq is in string.c because it works there; it did not work when the call-seq is in doc/string/*.rdoc.

This PR also updates the relevant guidance in doc/documentation_guide.rdoc.
2022-03-21 14:58:00 -05:00
Burdette Lamar
d52f41b765
[DOC] Enhanced RDoc for String (#5675)
Treats:
    #split
    #each_line
    #lines
    #each_byte
    #bytes
2022-03-18 17:17:00 -05:00
Shugo Maeda
1107839a7f Add String#bytesplice 2022-03-18 11:51:03 +09:00
Burdette Lamar
59a1a8185f
[DOC] Enhanced RDoc for String#split (#5644)
* Enhanced RDoc for String#split

* Enhanced RDoc for String#split

* Enhanced RDoc for String#split

* Enhanced RDoc for String#split

* Enhanced RDoc for String#split
2022-03-16 14:45:48 -05:00
Nobuyoshi Nakada
4d93b6299c
Initialize mutex for crypt(3) statically
Assuming that all platforms, where only `crypt` is available but
not `crypt_r`, are POSIX-base.
2022-03-16 18:51:34 +09:00
Burdette Lamar
561dda9934
[DOC] Enhanced RDoc for String (#5635)
Treats:

    #count
    #delete
    #delete!
    #squeeze
    #squeeze!

Adds section "Multiple Character Selectors" to doc/character_selectors.rdoc.

Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2022-03-09 19:53:51 -06:00
Burdette Lamar
72c038a8f5
[DOC] Enhanced RDoc for String (#5633)
Treats:

    #tr (revised to link to "Character Selectors" document)
    #tr!
    #tr_s
    #tr_s!

Also renames doc/character_selector.rdoc to match its title.
2022-03-09 08:42:12 -06:00
Kazuhiro NISHIYAMA
b068a53dc9
[DOC] Fix default offset of String#byterindex 2022-03-09 15:15:11 +09:00
Burdette Lamar
faff37da57
[DOC] Enhanced RDoc for String #tr and #tr! (#5626) 2022-03-07 12:58:29 -06:00
Nobuyoshi Nakada
7f7f07a600
[DOC] mark rb_str_init as :nodoc:
Otherwise, an empty entry will be generated as `String::new` along
with the one from doc/string.rb.
2022-03-03 13:39:07 +09:00
Mau Magnaguagno
347c3faf8e
[DOC] Fix String#getbyte doc
* String#getbyte returns `nil` if `index` is out of range.

* Add String#getbyte example with nil output.

* Modify String#getbyte example to use negative index.
2022-03-01 10:05:49 +09:00
Nobuyoshi Nakada
3e5d7e3176
[DOC] Move String.new to allow non US-ASCII characters 2022-02-26 21:50:46 +09:00
Burdette Lamar
26ffda2fd2
[DOC] Enhanced RDoc for some encoding methods (#5598)
In String, treats:

    #b
    #scrub
    #scrub!
    #unicode_normalize
    #unicode_normalize!
    #encode
    #encode!

Also adds a note to IO.new (suggested by @jeremyevans).
2022-02-25 13:12:59 -06:00
Shugo Maeda
63401b1384
Rename the wrong variable name beg to len 2022-02-23 11:23:33 +09:00
Nobuyoshi Nakada
8f0e3a97f9
rb_debug_rstring_null_ptr: add newlines in the message [ci skip]
The message should end with a newline, and break the long
paragraph.
2022-02-21 16:22:23 +09:00
Shugo Maeda
c8817d6a3e
Add String#byteindex, String#byterindex, and MatchData#byteoffset (#5518)
* Add String#byteindex, String#byterindex, and MatchData#byteoffset [Feature #13110]

Co-authored-by: NARUSE, Yui <naruse@airemix.jp>
2022-02-19 19:10:00 +09:00
Nobuyoshi Nakada
6e65e04186
[DOC] Remove unnecessary rdoc-ref: schemes 2022-02-12 12:38:37 +09:00
Nobuyoshi Nakada
50c972a1ae
[DOC] Simplify operator method references 2022-02-12 12:38:36 +09:00
Paarth Madan
2a30ddd9f3 Remove extraneous "." in String#+@ documentation 2022-02-08 10:33:49 +09:00