summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-25 17:45:00 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-25 17:45:00 +0000
commited20b2561ce9a387da6de5f93a7b7931cd136efd (patch)
treeb266846a6835e18540eb01fc40d22c40c7ef8619
parentfd69ec05c0726e8e22714e5d351db34964c4e174 (diff)
merge revision(s) 51871,51872,51874,51875,51876,51877,51878,57517: [Backport #13190]
* doc/syntax/literals.rdoc (Strings): mention about ?a literal. literals.rdoc: fix typos * doc/syntax/literals.rdoc (Strings): fix typos. * doc/syntax/literals.rdoc (Strings): [DOC] Document the full list of supported escape sequences in string literals. * doc/syntax/literals.rdoc (Strings): [DOC] Revise the character literal part. literals.rdoc: add DEL [ci skip] * doc/syntax/literals.rdoc (Strings): [DOC] add DEL. [DOC] `\0` is interpreted as NUL only if not followed by an octal digit. [DOC] Remove `\0` since it's aprt of octal notation A typo is fixed while at it. doc: Fix error for escape sequences in string literals Backslash goes first in escape sequences, so it must be "any other character following a backslash is interpreted as ...", while the doc says "...followed by...". Author: Marcus Stollsteimer <sto.mar@web.de> [ruby-core:79418] [Bug #13190] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58114 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog14
-rw-r--r--doc/syntax/literals.rdoc46
-rw-r--r--version.h2
3 files changed, 59 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index d6a1de9f75..9ed2482715 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Sun Mar 26 02:44:16 2017 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/syntax/literals.rdoc (Strings): [DOC] Revise the character
+ literal part.
+
+Sun Mar 26 02:44:16 2017 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/syntax/literals.rdoc (Strings): [DOC] Document the full list
+ of supported escape sequences in string literals.
+
+Sun Mar 26 02:44:16 2017 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * doc/syntax/literals.rdoc (Strings): mention about ?a literal.
+
Sun Mar 26 02:35:17 2017 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (process_options): convert -e script to the encoding
diff --git a/doc/syntax/literals.rdoc b/doc/syntax/literals.rdoc
index 194945abbd..aadd574a97 100644
--- a/doc/syntax/literals.rdoc
+++ b/doc/syntax/literals.rdoc
@@ -83,8 +83,33 @@ Any internal <tt>"</tt> must be escaped:
"This string has a quote: \". As you can see, it is escaped"
-Double-quote strings allow escaped characters such as <tt>\n</tt> for newline,
-<tt>\t</tt> for tab, etc.
+Double-quote strings allow escaped characters such as <tt>\n</tt> for
+newline, <tt>\t</tt> for tab, etc. The full list of supported escape
+sequences are as follows:
+
+ \a bell, ASCII 07h (BEL)
+ \b backspace, ASCII 08h (BS)
+ \t horizontal tab, ASCII 09h (TAB)
+ \n newline (line feed), ASCII 0Ah (LF)
+ \v vertical tab, ASCII 0Bh (VT)
+ \f form feed, ASCII 0Ch (FF)
+ \r carriage return, ASCII 0Dh (CR)
+ \e escape, ASCII 1Bh (ESC)
+ \s space, ASCII 20h (SPC)
+ \\ backslash, \
+ \nnn octal bit pattern, where nnn is 1-3 octal digits ([0-7])
+ \xnn hexadecimal bit pattern, where nn is 1-2 hexadecimal digits ([0-9a-fA-F])
+ \unnnn Unicode character, where nnnn is exactly 4 hexadecimal digits ([0-9a-fA-F])
+ \u{nnnn ...} Unicode character(s), where each nnnn is 1-6 hexadecimal digits ([0-9a-fA-F])
+ \cx or \C-x control character, where x is an ASCII printable character
+ \M-x meta character, where x is an ASCII printable character
+ \M-\C-x meta control character, where x is an ASCII printable character
+ \M-\cx same as above
+ \c\M-x same as above
+ \c? or \C-? delete, ASCII 7Fh (DEL)
+
+Any other character following a backslash is interpreted as the
+character itself.
Double-quote strings allow interpolation of other values using
<tt>#{...}</tt>:
@@ -124,6 +149,23 @@ be concatenated as long as a percent-string is not last.
%q{a} 'b' "c" #=> "abc"
"a" 'b' %q{c} #=> NameError: uninitialized constant q
+One more way of writing strings is using <tt>?</tt>:
+
+ ?a #=> "a"
+
+Basically only one character can be placed after <tt>?</tt>:
+
+ ?abc #=> SyntaxError
+
+Exceptionally, <tt>\C-</tt>, <tt>\M-</tt> and their combination are allowed
+before a character. They mean "control", "meta" and "control-meta"
+respectively:
+
+ ?\C-a #=> "\x01"
+ ?\M-a #=> "\xE1"
+ ?\M-\C-a #=> "\x81"
+ ?\C-\M-a #=> "\x81", same as above
+
=== Here Documents
If you are writing a large block of text you may use a "here document" or
diff --git a/version.h b/version.h
index 25e717be87..e14d8b6564 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.7"
#define RUBY_RELEASE_DATE "2017-03-26"
-#define RUBY_PATCHLEVEL 446
+#define RUBY_PATCHLEVEL 447
#define RUBY_RELEASE_YEAR 2017
#define RUBY_RELEASE_MONTH 3