summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authorBurdette Lamar <BurdetteLamar@Yahoo.com>2020-09-25 15:13:10 -0500
committerGitHub <noreply@github.com>2020-09-25 15:13:10 -0500
commit8b42474a2604f35f6d2a635562ef16efc1af456c (patch)
tree314b89c2e30dba71b7d785b67e3b8e85a723eb8b /string.c
parent24820d508bc89775e10e4e3e6e07e192540cb4a2 (diff)
Enhanced RDoc for String#succ (#3590)
* Enhanced RDoc for String#succ
Notes
Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
Diffstat (limited to 'string.c')
-rw-r--r--string.c70
1 files changed, 49 insertions, 21 deletions
diff --git a/string.c b/string.c
index e2c7bfbe05..cf25dc1861 100644
--- a/string.c
+++ b/string.c
@@ -4160,27 +4160,55 @@ static VALUE str_succ(VALUE str);
/*
* call-seq:
- * str.succ -> new_str
- * str.next -> new_str
- *
- * Returns the successor to <i>str</i>. The successor is calculated by
- * incrementing characters starting from the rightmost alphanumeric (or
- * the rightmost character if there are no alphanumerics) in the
- * string. Incrementing a digit always results in another digit, and
- * incrementing a letter results in another letter of the same case.
- * Incrementing nonalphanumerics uses the underlying character set's
- * collating sequence.
- *
- * If the increment generates a ``carry,'' the character to the left of
- * it is incremented. This process repeats until there is no carry,
- * adding an additional character if necessary.
- *
- * "abcd".succ #=> "abce"
- * "THX1138".succ #=> "THX1139"
- * "<<koala>>".succ #=> "<<koalb>>"
- * "1999zzz".succ #=> "2000aaa"
- * "ZZZ9999".succ #=> "AAAA0000"
- * "***".succ #=> "**+"
+ * string.succ -> new_str
+ *
+ * Returns the successor to +self+. The successor is calculated by
+ * incrementing characters.
+ *
+ * The first character to be incremented is the rightmost alphanumeric:
+ * or, if no alphanumerics, the rightmost character:
+ * 'THX1138'.succ # => "THX1139"
+ * '<<koala>>'.succ # => "<<koalb>>"
+ * '***'.succ # => '**+'
+ *
+ * The successor to a digit is another digit, "carrying" to the next-left
+ * character for a "rollover" from 9 to 0, and prepending another digit
+ * if necessary:
+ * '00'.succ # => "01"
+ * '09'.succ # => "10"
+ * '99'.succ # => "100"
+ *
+ * The successor to a letter is another letter of the same case,
+ * carrying to the next-left character for a rollover,
+ * and prepending another same-case letter if necessary:
+ * 'aa'.succ # => "ab"
+ * 'az'.succ # => "ba"
+ * 'zz'.succ # => "aaa"
+ * 'AA'.succ # => "AB"
+ * 'AZ'.succ # => "BA"
+ * 'ZZ'.succ # => "AAA"
+ *
+ * The successor to a non-alphanumeric character is the next character
+ * in the underlying character set's collating sequence,
+ * carrying to the next-left character for a rollover,
+ * and prepending another character if necessary:
+ * s = 0.chr * 3
+ * s # => "\x00\x00\x00"
+ * s.succ # => "\x00\x00\x01"
+ * s = 255.chr * 3
+ * s # => "\xFF\xFF\xFF"
+ * s.succ # => "\x01\x00\x00\x00"
+ *
+ * Carrying can occur between and among mixtures of alphanumeric characters:
+ * s = 'zz99zz99'
+ * s.succ # => "aaa00aa00"
+ * s = '99zz99zz'
+ * s.succ # => "100aa00aa"
+ *
+ * The successor to an empty \String is a new empty \String:
+ * ''.succ # => ""
+ *
+ * String#next is an alias for String#succ.
*/
VALUE