[DOC] Adjust heading levels
So that the first headings would be the top-most headings.
This commit is contained in:
parent
caa9881fde
commit
19a7a7660c
@ -1,4 +1,4 @@
|
|||||||
== Binary Searching
|
= Binary Searching
|
||||||
|
|
||||||
A few Ruby methods support binary searching in a collection:
|
A few Ruby methods support binary searching in a collection:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Case Mapping
|
= Case Mapping
|
||||||
|
|
||||||
Some string-oriented methods use case mapping.
|
Some string-oriented methods use case mapping.
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ In Symbol:
|
|||||||
- Symbol#swapcase
|
- Symbol#swapcase
|
||||||
- Symbol#upcase
|
- Symbol#upcase
|
||||||
|
|
||||||
=== Default Case Mapping
|
== Default Case Mapping
|
||||||
|
|
||||||
By default, all of these methods use full Unicode case mapping,
|
By default, all of these methods use full Unicode case mapping,
|
||||||
which is suitable for most languages.
|
which is suitable for most languages.
|
||||||
@ -60,7 +60,7 @@ Case changes may not be reversible:
|
|||||||
Case changing methods may not maintain Unicode normalization.
|
Case changing methods may not maintain Unicode normalization.
|
||||||
See String#unicode_normalize).
|
See String#unicode_normalize).
|
||||||
|
|
||||||
=== Options for Case Mapping
|
== Options for Case Mapping
|
||||||
|
|
||||||
Except for +casecmp+ and +casecmp?+,
|
Except for +casecmp+ and +casecmp?+,
|
||||||
each of the case-mapping methods listed above
|
each of the case-mapping methods listed above
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
== Character Selectors
|
= Character Selectors
|
||||||
|
|
||||||
=== Character Selector
|
== Character Selector
|
||||||
|
|
||||||
A _character_ _selector_ is a string argument accepted by certain Ruby methods.
|
A _character_ _selector_ is a string argument accepted by certain Ruby methods.
|
||||||
Each of these instance methods accepts one or more character selectors:
|
Each of these instance methods accepts one or more character selectors:
|
||||||
@ -70,7 +70,7 @@ In a character selector, these three characters get special treatment:
|
|||||||
"hello\r\nworld".delete("\\r") # => "hello\r\nwold"
|
"hello\r\nworld".delete("\\r") # => "hello\r\nwold"
|
||||||
"hello\r\nworld".delete("\\\r") # => "hello\nworld"
|
"hello\r\nworld".delete("\\\r") # => "hello\nworld"
|
||||||
|
|
||||||
=== Multiple Character Selectors
|
== Multiple Character Selectors
|
||||||
|
|
||||||
These instance methods accept multiple character selectors:
|
These instance methods accept multiple character selectors:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Command Injection
|
= Command Injection
|
||||||
|
|
||||||
Some Ruby core methods accept string data
|
Some Ruby core methods accept string data
|
||||||
that includes text to be executed as a system command.
|
that includes text to be executed as a system command.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
== Encodings
|
= Encodings
|
||||||
|
|
||||||
=== The Basics
|
== The Basics
|
||||||
|
|
||||||
A {character encoding}[https://en.wikipedia.org/wiki/Character_encoding],
|
A {character encoding}[https://en.wikipedia.org/wiki/Character_encoding],
|
||||||
often shortened to _encoding_, is a mapping between:
|
often shortened to _encoding_, is a mapping between:
|
||||||
@ -30,9 +30,9 @@ Other characters, such as the Euro symbol, are multi-byte:
|
|||||||
s = "\u20ac" # => "€"
|
s = "\u20ac" # => "€"
|
||||||
s.bytes # => [226, 130, 172]
|
s.bytes # => [226, 130, 172]
|
||||||
|
|
||||||
=== The \Encoding \Class
|
== The \Encoding \Class
|
||||||
|
|
||||||
==== \Encoding Objects
|
=== \Encoding Objects
|
||||||
|
|
||||||
Ruby encodings are defined by constants in class \Encoding.
|
Ruby encodings are defined by constants in class \Encoding.
|
||||||
There can be only one instance of \Encoding for each of these constants.
|
There can be only one instance of \Encoding for each of these constants.
|
||||||
@ -43,7 +43,7 @@ There can be only one instance of \Encoding for each of these constants.
|
|||||||
Encoding.list.take(3)
|
Encoding.list.take(3)
|
||||||
# => [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>, #<Encoding:US-ASCII>]
|
# => [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>, #<Encoding:US-ASCII>]
|
||||||
|
|
||||||
==== Names and Aliases
|
=== Names and Aliases
|
||||||
|
|
||||||
\Method Encoding#name returns the name of an \Encoding:
|
\Method Encoding#name returns the name of an \Encoding:
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ because it includes both the names and their aliases.
|
|||||||
Encoding.find("US-ASCII") # => #<Encoding:US-ASCII>
|
Encoding.find("US-ASCII") # => #<Encoding:US-ASCII>
|
||||||
Encoding.find("US-ASCII").class # => Encoding
|
Encoding.find("US-ASCII").class # => Encoding
|
||||||
|
|
||||||
==== Default Encodings
|
=== Default Encodings
|
||||||
|
|
||||||
\Method Encoding.find, above, also returns a default \Encoding
|
\Method Encoding.find, above, also returns a default \Encoding
|
||||||
for each of these special names:
|
for each of these special names:
|
||||||
@ -118,7 +118,7 @@ for each of these special names:
|
|||||||
Encoding.default_internal = 'US-ASCII' # => "US-ASCII"
|
Encoding.default_internal = 'US-ASCII' # => "US-ASCII"
|
||||||
Encoding.default_internal # => #<Encoding:US-ASCII>
|
Encoding.default_internal # => #<Encoding:US-ASCII>
|
||||||
|
|
||||||
==== Compatible Encodings
|
=== Compatible Encodings
|
||||||
|
|
||||||
\Method Encoding.compatible? returns whether two given objects are encoding-compatible
|
\Method Encoding.compatible? returns whether two given objects are encoding-compatible
|
||||||
(that is, whether they can be concatenated);
|
(that is, whether they can be concatenated);
|
||||||
@ -132,7 +132,7 @@ returns the \Encoding of the concatenated string, or +nil+ if incompatible:
|
|||||||
s1 = "\xa1\xa1".force_encoding('euc-jp') # => "\x{A1A1}"
|
s1 = "\xa1\xa1".force_encoding('euc-jp') # => "\x{A1A1}"
|
||||||
Encoding.compatible?(s0, s1) # => nil
|
Encoding.compatible?(s0, s1) # => nil
|
||||||
|
|
||||||
=== \String \Encoding
|
== \String \Encoding
|
||||||
|
|
||||||
A Ruby String object has an encoding that is an instance of class \Encoding.
|
A Ruby String object has an encoding that is an instance of class \Encoding.
|
||||||
The encoding may be retrieved by method String#encoding.
|
The encoding may be retrieved by method String#encoding.
|
||||||
@ -183,7 +183,7 @@ Here are a couple of useful query methods:
|
|||||||
s = "\xc2".force_encoding("UTF-8") # => "\xC2"
|
s = "\xc2".force_encoding("UTF-8") # => "\xC2"
|
||||||
s.valid_encoding? # => false
|
s.valid_encoding? # => false
|
||||||
|
|
||||||
=== \Symbol and \Regexp Encodings
|
== \Symbol and \Regexp Encodings
|
||||||
|
|
||||||
The string stored in a Symbol or Regexp object also has an encoding;
|
The string stored in a Symbol or Regexp object also has an encoding;
|
||||||
the encoding may be retrieved by method Symbol#encoding or Regexp#encoding.
|
the encoding may be retrieved by method Symbol#encoding or Regexp#encoding.
|
||||||
@ -194,20 +194,20 @@ The default encoding for these, however, is:
|
|||||||
- The script encoding, otherwise;
|
- The script encoding, otherwise;
|
||||||
see (Script Encoding)[rdoc-ref:encodings.rdoc@Script+Encoding].
|
see (Script Encoding)[rdoc-ref:encodings.rdoc@Script+Encoding].
|
||||||
|
|
||||||
=== Filesystem \Encoding
|
== Filesystem \Encoding
|
||||||
|
|
||||||
The filesystem encoding is the default \Encoding for a string from the filesystem:
|
The filesystem encoding is the default \Encoding for a string from the filesystem:
|
||||||
|
|
||||||
Encoding.find("filesystem") # => #<Encoding:UTF-8>
|
Encoding.find("filesystem") # => #<Encoding:UTF-8>
|
||||||
|
|
||||||
=== Locale \Encoding
|
== Locale \Encoding
|
||||||
|
|
||||||
The locale encoding is the default encoding for a string from the environment,
|
The locale encoding is the default encoding for a string from the environment,
|
||||||
other than from the filesystem:
|
other than from the filesystem:
|
||||||
|
|
||||||
Encoding.find('locale') # => #<Encoding:IBM437>
|
Encoding.find('locale') # => #<Encoding:IBM437>
|
||||||
|
|
||||||
=== Stream Encodings
|
== Stream Encodings
|
||||||
|
|
||||||
Certain stream objects can have two encodings; these objects include instances of:
|
Certain stream objects can have two encodings; these objects include instances of:
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ The two encodings are:
|
|||||||
- An _internal_ _encoding_, which (if not +nil+) specifies the encoding
|
- An _internal_ _encoding_, which (if not +nil+) specifies the encoding
|
||||||
to be used for the string constructed from the stream.
|
to be used for the string constructed from the stream.
|
||||||
|
|
||||||
==== External \Encoding
|
=== External \Encoding
|
||||||
|
|
||||||
The external encoding, which is an \Encoding object, specifies how bytes read
|
The external encoding, which is an \Encoding object, specifies how bytes read
|
||||||
from the stream are to be interpreted as characters.
|
from the stream are to be interpreted as characters.
|
||||||
@ -250,7 +250,7 @@ For an \IO, \File, \ARGF, or \StringIO object, the external encoding may be set
|
|||||||
|
|
||||||
- \Methods +set_encoding+ or (except for \ARGF) +set_encoding_by_bom+.
|
- \Methods +set_encoding+ or (except for \ARGF) +set_encoding_by_bom+.
|
||||||
|
|
||||||
==== Internal \Encoding
|
=== Internal \Encoding
|
||||||
|
|
||||||
The internal encoding, which is an \Encoding object or +nil+,
|
The internal encoding, which is an \Encoding object or +nil+,
|
||||||
specifies how characters read from the stream
|
specifies how characters read from the stream
|
||||||
@ -276,7 +276,7 @@ For an \IO, \File, \ARGF, or \StringIO object, the internal encoding may be set
|
|||||||
|
|
||||||
- \Method +set_encoding+.
|
- \Method +set_encoding+.
|
||||||
|
|
||||||
=== Script \Encoding
|
== Script \Encoding
|
||||||
|
|
||||||
A Ruby script has a script encoding, which may be retrieved by:
|
A Ruby script has a script encoding, which may be retrieved by:
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ followed by a colon, space and the Encoding name or alias:
|
|||||||
# encoding: ISO-8859-1
|
# encoding: ISO-8859-1
|
||||||
__ENCODING__ #=> #<Encoding:ISO-8859-1>
|
__ENCODING__ #=> #<Encoding:ISO-8859-1>
|
||||||
|
|
||||||
=== Transcoding
|
== Transcoding
|
||||||
|
|
||||||
_Transcoding_ is the process of changing a sequence of characters
|
_Transcoding_ is the process of changing a sequence of characters
|
||||||
from one encoding to another.
|
from one encoding to another.
|
||||||
@ -302,7 +302,7 @@ but the bytes that represent them may change.
|
|||||||
The handling for characters that cannot be represented in the destination encoding
|
The handling for characters that cannot be represented in the destination encoding
|
||||||
may be specified by @Encoding+Options.
|
may be specified by @Encoding+Options.
|
||||||
|
|
||||||
==== Transcoding a \String
|
=== Transcoding a \String
|
||||||
|
|
||||||
Each of these methods transcodes a string:
|
Each of these methods transcodes a string:
|
||||||
|
|
||||||
@ -317,7 +317,7 @@ Each of these methods transcodes a string:
|
|||||||
- String#unicode_normalize!: Like String#unicode_normalize,
|
- String#unicode_normalize!: Like String#unicode_normalize,
|
||||||
but transcodes +self+ in place.
|
but transcodes +self+ in place.
|
||||||
|
|
||||||
=== Transcoding a Stream
|
== Transcoding a Stream
|
||||||
|
|
||||||
Each of these methods may transcode a stream;
|
Each of these methods may transcode a stream;
|
||||||
whether it does so depends on the external and internal encodings:
|
whether it does so depends on the external and internal encodings:
|
||||||
@ -352,7 +352,7 @@ Output:
|
|||||||
"R\xE9sum\xE9"
|
"R\xE9sum\xE9"
|
||||||
"Résumé"
|
"Résumé"
|
||||||
|
|
||||||
=== \Encoding Options
|
== \Encoding Options
|
||||||
|
|
||||||
A number of methods in the Ruby core accept keyword arguments as encoding options.
|
A number of methods in the Ruby core accept keyword arguments as encoding options.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Format Specifications
|
= Format Specifications
|
||||||
|
|
||||||
Several Ruby core classes have instance method +printf+ or +sprintf+:
|
Several Ruby core classes have instance method +printf+ or +sprintf+:
|
||||||
|
|
||||||
@ -37,12 +37,12 @@ It consists of:
|
|||||||
Except for the leading percent character,
|
Except for the leading percent character,
|
||||||
the only required part is the type specifier, so we begin with that.
|
the only required part is the type specifier, so we begin with that.
|
||||||
|
|
||||||
=== Type Specifiers
|
== Type Specifiers
|
||||||
|
|
||||||
This section provides a brief explanation of each type specifier.
|
This section provides a brief explanation of each type specifier.
|
||||||
The links lead to the details and examples.
|
The links lead to the details and examples.
|
||||||
|
|
||||||
==== \Integer Type Specifiers
|
=== \Integer Type Specifiers
|
||||||
|
|
||||||
- +b+ or +B+: Format +argument+ as a binary integer.
|
- +b+ or +B+: Format +argument+ as a binary integer.
|
||||||
See {Specifiers b and B}[rdoc-ref:format_specifications.rdoc@Specifiers+b+and+B].
|
See {Specifiers b and B}[rdoc-ref:format_specifications.rdoc@Specifiers+b+and+B].
|
||||||
@ -54,7 +54,7 @@ The links lead to the details and examples.
|
|||||||
- +x+ or +X+: Format +argument+ as a hexadecimal integer.
|
- +x+ or +X+: Format +argument+ as a hexadecimal integer.
|
||||||
See {Specifiers x and X}[rdoc-ref:format_specifications.rdoc@Specifiers+x+and+X].
|
See {Specifiers x and X}[rdoc-ref:format_specifications.rdoc@Specifiers+x+and+X].
|
||||||
|
|
||||||
==== Floating-Point Type Specifiers
|
=== Floating-Point Type Specifiers
|
||||||
|
|
||||||
- +a+ or +A+: Format +argument+ as hexadecimal floating-point number.
|
- +a+ or +A+: Format +argument+ as hexadecimal floating-point number.
|
||||||
See {Specifiers a and A}[rdoc-ref:format_specifications.rdoc@Specifiers+a+and+A].
|
See {Specifiers a and A}[rdoc-ref:format_specifications.rdoc@Specifiers+a+and+A].
|
||||||
@ -65,7 +65,7 @@ The links lead to the details and examples.
|
|||||||
- +g+ or +G+: Format +argument+ in a "general" format.
|
- +g+ or +G+: Format +argument+ in a "general" format.
|
||||||
See {Specifiers g and G}[rdoc-ref:format_specifications.rdoc@Specifiers+g+and+G].
|
See {Specifiers g and G}[rdoc-ref:format_specifications.rdoc@Specifiers+g+and+G].
|
||||||
|
|
||||||
==== Other Type Specifiers
|
=== Other Type Specifiers
|
||||||
|
|
||||||
- +c+: Format +argument+ as a character.
|
- +c+: Format +argument+ as a character.
|
||||||
See {Specifier c}[rdoc-ref:format_specifications.rdoc@Specifier+c].
|
See {Specifier c}[rdoc-ref:format_specifications.rdoc@Specifier+c].
|
||||||
@ -76,7 +76,7 @@ The links lead to the details and examples.
|
|||||||
- <tt>%</tt>: Format +argument+ (<tt>'%'</tt>) as a single percent character.
|
- <tt>%</tt>: Format +argument+ (<tt>'%'</tt>) as a single percent character.
|
||||||
See {Specifier %}[rdoc-ref:format_specifications.rdoc@Specifier+-25].
|
See {Specifier %}[rdoc-ref:format_specifications.rdoc@Specifier+-25].
|
||||||
|
|
||||||
=== Flags
|
== Flags
|
||||||
|
|
||||||
The effect of a flag may vary greatly among type specifiers.
|
The effect of a flag may vary greatly among type specifiers.
|
||||||
These remarks are general in nature.
|
These remarks are general in nature.
|
||||||
@ -85,7 +85,7 @@ See {type-specific details}[rdoc-ref:format_specifications.rdoc@Type+Specifier+D
|
|||||||
Multiple flags may be given with single type specifier;
|
Multiple flags may be given with single type specifier;
|
||||||
order does not matter.
|
order does not matter.
|
||||||
|
|
||||||
==== <tt>' '</tt> Flag
|
=== <tt>' '</tt> Flag
|
||||||
|
|
||||||
Insert a space before a non-negative number:
|
Insert a space before a non-negative number:
|
||||||
|
|
||||||
@ -97,49 +97,49 @@ Insert a minus sign for negative value:
|
|||||||
sprintf('%d', -10) # => "-10"
|
sprintf('%d', -10) # => "-10"
|
||||||
sprintf('% d', -10) # => "-10"
|
sprintf('% d', -10) # => "-10"
|
||||||
|
|
||||||
==== <tt>'#'</tt> Flag
|
=== <tt>'#'</tt> Flag
|
||||||
|
|
||||||
Use an alternate format; varies among types:
|
Use an alternate format; varies among types:
|
||||||
|
|
||||||
sprintf('%x', 100) # => "64"
|
sprintf('%x', 100) # => "64"
|
||||||
sprintf('%#x', 100) # => "0x64"
|
sprintf('%#x', 100) # => "0x64"
|
||||||
|
|
||||||
==== <tt>'+'</tt> Flag
|
=== <tt>'+'</tt> Flag
|
||||||
|
|
||||||
Add a leading plus sign for a non-negative number:
|
Add a leading plus sign for a non-negative number:
|
||||||
|
|
||||||
sprintf('%x', 100) # => "64"
|
sprintf('%x', 100) # => "64"
|
||||||
sprintf('%+x', 100) # => "+64"
|
sprintf('%+x', 100) # => "+64"
|
||||||
|
|
||||||
==== <tt>'-'</tt> Flag
|
=== <tt>'-'</tt> Flag
|
||||||
|
|
||||||
Left justify the value in its field:
|
Left justify the value in its field:
|
||||||
|
|
||||||
sprintf('%6d', 100) # => " 100"
|
sprintf('%6d', 100) # => " 100"
|
||||||
sprintf('%-6d', 100) # => "100 "
|
sprintf('%-6d', 100) # => "100 "
|
||||||
|
|
||||||
==== <tt>'0'</tt> Flag
|
=== <tt>'0'</tt> Flag
|
||||||
|
|
||||||
Left-pad with zeros instead of spaces:
|
Left-pad with zeros instead of spaces:
|
||||||
|
|
||||||
sprintf('%6d', 100) # => " 100"
|
sprintf('%6d', 100) # => " 100"
|
||||||
sprintf('%06d', 100) # => "000100"
|
sprintf('%06d', 100) # => "000100"
|
||||||
|
|
||||||
==== <tt>'*'</tt> Flag
|
=== <tt>'*'</tt> Flag
|
||||||
|
|
||||||
Use the next argument as the field width:
|
Use the next argument as the field width:
|
||||||
|
|
||||||
sprintf('%d', 20, 14) # => "20"
|
sprintf('%d', 20, 14) # => "20"
|
||||||
sprintf('%*d', 20, 14) # => " 14"
|
sprintf('%*d', 20, 14) # => " 14"
|
||||||
|
|
||||||
==== <tt>'n$'</tt> Flag
|
=== <tt>'n$'</tt> Flag
|
||||||
|
|
||||||
Format the (1-based) <tt>n</tt>th argument into this field:
|
Format the (1-based) <tt>n</tt>th argument into this field:
|
||||||
|
|
||||||
sprintf("%s %s", 'world', 'hello') # => "world hello"
|
sprintf("%s %s", 'world', 'hello') # => "world hello"
|
||||||
sprintf("%2$s %1$s", 'world', 'hello') # => "hello world"
|
sprintf("%2$s %1$s", 'world', 'hello') # => "hello world"
|
||||||
|
|
||||||
=== Width Specifier
|
== Width Specifier
|
||||||
|
|
||||||
In general, a width specifier determines the minimum width (in characters)
|
In general, a width specifier determines the minimum width (in characters)
|
||||||
of the formatted field:
|
of the formatted field:
|
||||||
@ -152,7 +152,7 @@ of the formatted field:
|
|||||||
# Ignore if too small.
|
# Ignore if too small.
|
||||||
sprintf('%1d', 100) # => "100"
|
sprintf('%1d', 100) # => "100"
|
||||||
|
|
||||||
=== Precision Specifier
|
== Precision Specifier
|
||||||
|
|
||||||
A precision specifier is a decimal point followed by zero or more
|
A precision specifier is a decimal point followed by zero or more
|
||||||
decimal digits.
|
decimal digits.
|
||||||
@ -194,9 +194,9 @@ the number of characters to write:
|
|||||||
sprintf('%s', Time.now) # => "2022-05-04 11:59:16 -0400"
|
sprintf('%s', Time.now) # => "2022-05-04 11:59:16 -0400"
|
||||||
sprintf('%.10s', Time.now) # => "2022-05-04"
|
sprintf('%.10s', Time.now) # => "2022-05-04"
|
||||||
|
|
||||||
=== Type Specifier Details and Examples
|
== Type Specifier Details and Examples
|
||||||
|
|
||||||
==== Specifiers +a+ and +A+
|
=== Specifiers +a+ and +A+
|
||||||
|
|
||||||
Format +argument+ as hexadecimal floating-point number:
|
Format +argument+ as hexadecimal floating-point number:
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ Format +argument+ as hexadecimal floating-point number:
|
|||||||
sprintf('%A', 4096) # => "0X1P+12"
|
sprintf('%A', 4096) # => "0X1P+12"
|
||||||
sprintf('%A', -4096) # => "-0X1P+12"
|
sprintf('%A', -4096) # => "-0X1P+12"
|
||||||
|
|
||||||
==== Specifiers +b+ and +B+
|
=== Specifiers +b+ and +B+
|
||||||
|
|
||||||
The two specifiers +b+ and +B+ behave identically
|
The two specifiers +b+ and +B+ behave identically
|
||||||
except when flag <tt>'#'</tt>+ is used.
|
except when flag <tt>'#'</tt>+ is used.
|
||||||
@ -226,14 +226,14 @@ Format +argument+ as a binary integer:
|
|||||||
sprintf('%#b', 4) # => "0b100"
|
sprintf('%#b', 4) # => "0b100"
|
||||||
sprintf('%#B', 4) # => "0B100"
|
sprintf('%#B', 4) # => "0B100"
|
||||||
|
|
||||||
==== Specifier +c+
|
=== Specifier +c+
|
||||||
|
|
||||||
Format +argument+ as a single character:
|
Format +argument+ as a single character:
|
||||||
|
|
||||||
sprintf('%c', 'A') # => "A"
|
sprintf('%c', 'A') # => "A"
|
||||||
sprintf('%c', 65) # => "A"
|
sprintf('%c', 65) # => "A"
|
||||||
|
|
||||||
==== Specifier +d+
|
=== Specifier +d+
|
||||||
|
|
||||||
Format +argument+ as a decimal integer:
|
Format +argument+ as a decimal integer:
|
||||||
|
|
||||||
@ -242,7 +242,7 @@ Format +argument+ as a decimal integer:
|
|||||||
|
|
||||||
Flag <tt>'#'</tt> does not apply.
|
Flag <tt>'#'</tt> does not apply.
|
||||||
|
|
||||||
==== Specifiers +e+ and +E+
|
=== Specifiers +e+ and +E+
|
||||||
|
|
||||||
Format +argument+ in
|
Format +argument+ in
|
||||||
{scientific notation}[https://en.wikipedia.org/wiki/Scientific_notation]:
|
{scientific notation}[https://en.wikipedia.org/wiki/Scientific_notation]:
|
||||||
@ -250,7 +250,7 @@ Format +argument+ in
|
|||||||
sprintf('%e', 3.14159) # => "3.141590e+00"
|
sprintf('%e', 3.14159) # => "3.141590e+00"
|
||||||
sprintf('%E', -3.14159) # => "-3.141590E+00"
|
sprintf('%E', -3.14159) # => "-3.141590E+00"
|
||||||
|
|
||||||
==== Specifier +f+
|
=== Specifier +f+
|
||||||
|
|
||||||
Format +argument+ as a floating-point number:
|
Format +argument+ as a floating-point number:
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ Format +argument+ as a floating-point number:
|
|||||||
|
|
||||||
Flag <tt>'#'</tt> does not apply.
|
Flag <tt>'#'</tt> does not apply.
|
||||||
|
|
||||||
==== Specifiers +g+ and +G+
|
=== Specifiers +g+ and +G+
|
||||||
|
|
||||||
Format +argument+ using exponential form (+e+/+E+ specifier)
|
Format +argument+ using exponential form (+e+/+E+ specifier)
|
||||||
if the exponent is less than -4 or greater than or equal to the precision.
|
if the exponent is less than -4 or greater than or equal to the precision.
|
||||||
@ -281,7 +281,7 @@ Otherwise format +argument+ using floating-point form (+f+ specifier):
|
|||||||
sprintf('%#G', 100000000000) # => "1.00000E+11"
|
sprintf('%#G', 100000000000) # => "1.00000E+11"
|
||||||
sprintf('%#G', 0.000000000001) # => "1.00000E-12"
|
sprintf('%#G', 0.000000000001) # => "1.00000E-12"
|
||||||
|
|
||||||
==== Specifier +o+
|
=== Specifier +o+
|
||||||
|
|
||||||
Format +argument+ as an octal integer.
|
Format +argument+ as an octal integer.
|
||||||
If +argument+ is negative, it will be formatted as a two's complement
|
If +argument+ is negative, it will be formatted as a two's complement
|
||||||
@ -296,14 +296,14 @@ prefixed with +..7+:
|
|||||||
sprintf('%#o', 16) # => "020"
|
sprintf('%#o', 16) # => "020"
|
||||||
sprintf('%#o', -16) # => "..760"
|
sprintf('%#o', -16) # => "..760"
|
||||||
|
|
||||||
==== Specifier +p+
|
=== Specifier +p+
|
||||||
|
|
||||||
Format +argument+ as a string via <tt>argument.inspect</tt>:
|
Format +argument+ as a string via <tt>argument.inspect</tt>:
|
||||||
|
|
||||||
t = Time.now
|
t = Time.now
|
||||||
sprintf('%p', t) # => "2022-05-01 13:42:07.1645683 -0500"
|
sprintf('%p', t) # => "2022-05-01 13:42:07.1645683 -0500"
|
||||||
|
|
||||||
==== Specifier +s+
|
=== Specifier +s+
|
||||||
|
|
||||||
Format +argument+ as a string via <tt>argument.to_s</tt>:
|
Format +argument+ as a string via <tt>argument.to_s</tt>:
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ Format +argument+ as a string via <tt>argument.to_s</tt>:
|
|||||||
|
|
||||||
Flag <tt>'#'</tt> does not apply.
|
Flag <tt>'#'</tt> does not apply.
|
||||||
|
|
||||||
==== Specifiers +x+ and +X+
|
=== Specifiers +x+ and +X+
|
||||||
|
|
||||||
Format +argument+ as a hexadecimal integer.
|
Format +argument+ as a hexadecimal integer.
|
||||||
If +argument+ is negative, it will be formatted as a two's complement
|
If +argument+ is negative, it will be formatted as a two's complement
|
||||||
@ -329,7 +329,7 @@ prefixed with +..f+:
|
|||||||
# Alternate format for negative value.
|
# Alternate format for negative value.
|
||||||
sprintf('%#x', -100) # => "0x..f9c"
|
sprintf('%#x', -100) # => "0x..f9c"
|
||||||
|
|
||||||
==== Specifier <tt>%</tt>
|
=== Specifier <tt>%</tt>
|
||||||
|
|
||||||
Format +argument+ (<tt>'%'</tt>) as a single percent character:
|
Format +argument+ (<tt>'%'</tt>) as a single percent character:
|
||||||
|
|
||||||
@ -337,7 +337,7 @@ Format +argument+ (<tt>'%'</tt>) as a single percent character:
|
|||||||
|
|
||||||
Flags do not apply.
|
Flags do not apply.
|
||||||
|
|
||||||
=== Reference by Name
|
== Reference by Name
|
||||||
|
|
||||||
For more complex formatting, Ruby supports a reference by name.
|
For more complex formatting, Ruby supports a reference by name.
|
||||||
%<name>s style uses format style, but %{name} style doesn't.
|
%<name>s style uses format style, but %{name} style doesn't.
|
||||||
|
126
doc/globals.rdoc
126
doc/globals.rdoc
@ -1,4 +1,4 @@
|
|||||||
== Pre-Defined Global Variables
|
= Pre-Defined Global Variables
|
||||||
|
|
||||||
Some of the pre-defined global variables have synonyms
|
Some of the pre-defined global variables have synonyms
|
||||||
that are available via module Engish.
|
that are available via module Engish.
|
||||||
@ -8,9 +8,9 @@ To use the module:
|
|||||||
|
|
||||||
require 'English'
|
require 'English'
|
||||||
|
|
||||||
=== Exceptions
|
== Exceptions
|
||||||
|
|
||||||
==== <tt>$!</tt> (\Exception)
|
=== <tt>$!</tt> (\Exception)
|
||||||
|
|
||||||
Contains the Exception object set by Kernel#raise:
|
Contains the Exception object set by Kernel#raise:
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Output:
|
|||||||
|
|
||||||
English - <tt>$ERROR_INFO</tt>
|
English - <tt>$ERROR_INFO</tt>
|
||||||
|
|
||||||
==== <tt>$@</tt> (Backtrace)
|
=== <tt>$@</tt> (Backtrace)
|
||||||
|
|
||||||
Same as <tt>$!.backtrace</tt>;
|
Same as <tt>$!.backtrace</tt>;
|
||||||
returns an array of backtrace positions:
|
returns an array of backtrace positions:
|
||||||
@ -46,7 +46,7 @@ Output:
|
|||||||
|
|
||||||
English - <tt>$ERROR_POSITION</tt>.
|
English - <tt>$ERROR_POSITION</tt>.
|
||||||
|
|
||||||
=== Pattern Matching
|
== Pattern Matching
|
||||||
|
|
||||||
These global variables store information about the most recent
|
These global variables store information about the most recent
|
||||||
successful match in the current scope.
|
successful match in the current scope.
|
||||||
@ -54,46 +54,46 @@ successful match in the current scope.
|
|||||||
For details and examples,
|
For details and examples,
|
||||||
see {Regexp Global Variables}[rdoc-ref:Regexp@Global+Variables].
|
see {Regexp Global Variables}[rdoc-ref:Regexp@Global+Variables].
|
||||||
|
|
||||||
==== <tt>$~</tt> (\MatchData)
|
=== <tt>$~</tt> (\MatchData)
|
||||||
|
|
||||||
MatchData object created from the match;
|
MatchData object created from the match;
|
||||||
thread-local and frame-local.
|
thread-local and frame-local.
|
||||||
|
|
||||||
English - <tt>$LAST_MATCH_INFO</tt>.
|
English - <tt>$LAST_MATCH_INFO</tt>.
|
||||||
|
|
||||||
==== <tt>$&</tt> (Matched Substring)
|
=== <tt>$&</tt> (Matched Substring)
|
||||||
|
|
||||||
The matched string.
|
The matched string.
|
||||||
|
|
||||||
English - <tt>$MATCH</tt>.
|
English - <tt>$MATCH</tt>.
|
||||||
|
|
||||||
==== <tt>$`</tt> (Pre-Match Substring)
|
=== <tt>$`</tt> (Pre-Match Substring)
|
||||||
|
|
||||||
The string to the left of the match.
|
The string to the left of the match.
|
||||||
|
|
||||||
English - <tt>$PREMATCH</tt>.
|
English - <tt>$PREMATCH</tt>.
|
||||||
|
|
||||||
==== <tt>$'</tt> (Post-Match Substring)
|
=== <tt>$'</tt> (Post-Match Substring)
|
||||||
|
|
||||||
The string to the right of the match.
|
The string to the right of the match.
|
||||||
|
|
||||||
English - <tt>$POSTMATCH</tt>.
|
English - <tt>$POSTMATCH</tt>.
|
||||||
|
|
||||||
==== <tt>$+</tt> (Last Matched Group)
|
=== <tt>$+</tt> (Last Matched Group)
|
||||||
|
|
||||||
The last group matched.
|
The last group matched.
|
||||||
|
|
||||||
English - <tt>$LAST_PAREN_MATCH</tt>.
|
English - <tt>$LAST_PAREN_MATCH</tt>.
|
||||||
|
|
||||||
==== <tt>$1</tt>, <tt>$2</tt>, \Etc. (Matched Group)
|
=== <tt>$1</tt>, <tt>$2</tt>, \Etc. (Matched Group)
|
||||||
|
|
||||||
For <tt>$_n_</tt> the _nth_ group of the match.
|
For <tt>$_n_</tt> the _nth_ group of the match.
|
||||||
|
|
||||||
No \English.
|
No \English.
|
||||||
|
|
||||||
=== Separators
|
== Separators
|
||||||
|
|
||||||
==== <tt>$/</tt> (Input Record Separator)
|
=== <tt>$/</tt> (Input Record Separator)
|
||||||
|
|
||||||
An input record separator, initially newline.
|
An input record separator, initially newline.
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ English - <tt>$INPUT_RECORD_SEPARATOR</tt>, <tt>$RS</tt>.
|
|||||||
|
|
||||||
Aliased as <tt>$-0</tt>.
|
Aliased as <tt>$-0</tt>.
|
||||||
|
|
||||||
==== <tt>$;</tt> (Input Field Separator)
|
=== <tt>$;</tt> (Input Field Separator)
|
||||||
|
|
||||||
An input field separator, initially +nil+.
|
An input field separator, initially +nil+.
|
||||||
|
|
||||||
@ -109,76 +109,76 @@ English - <tt>$FIELD_SEPARATOR</tt>, <tt>$FS</tt>.
|
|||||||
|
|
||||||
Aliased as <tt>$-F</tt>.
|
Aliased as <tt>$-F</tt>.
|
||||||
|
|
||||||
==== <tt>$\\</tt> (Output Record Separator)
|
=== <tt>$\\</tt> (Output Record Separator)
|
||||||
|
|
||||||
An output record separator, initially +nil+.
|
An output record separator, initially +nil+.
|
||||||
|
|
||||||
English - <tt>$OUTPUT_RECORD_SEPARATOR</tt>, <tt>$ORS</tt>.
|
English - <tt>$OUTPUT_RECORD_SEPARATOR</tt>, <tt>$ORS</tt>.
|
||||||
|
|
||||||
=== Streams
|
== Streams
|
||||||
|
|
||||||
==== <tt>$stdin</tt> (Standard Input)
|
=== <tt>$stdin</tt> (Standard Input)
|
||||||
|
|
||||||
The current standard input stream; initially:
|
The current standard input stream; initially:
|
||||||
|
|
||||||
$stdin # => #<IO:<STDIN>>
|
$stdin # => #<IO:<STDIN>>
|
||||||
|
|
||||||
==== <tt>$stdout</tt> (Standard Output)
|
=== <tt>$stdout</tt> (Standard Output)
|
||||||
|
|
||||||
The current standard output stream; initially:
|
The current standard output stream; initially:
|
||||||
|
|
||||||
$stdout # => #<IO:<STDOUT>>
|
$stdout # => #<IO:<STDOUT>>
|
||||||
|
|
||||||
==== <tt>$stderr</tt> (Standard Error)
|
=== <tt>$stderr</tt> (Standard Error)
|
||||||
|
|
||||||
The current standard error stream; initially:
|
The current standard error stream; initially:
|
||||||
|
|
||||||
$stderr # => #<IO:<STDERR>>
|
$stderr # => #<IO:<STDERR>>
|
||||||
|
|
||||||
==== <tt>$<</tt> (\ARGF or $stdin)
|
=== <tt>$<</tt> (\ARGF or $stdin)
|
||||||
|
|
||||||
Points to stream ARGF if not empty, else to stream $stdin; read-only.
|
Points to stream ARGF if not empty, else to stream $stdin; read-only.
|
||||||
|
|
||||||
English - <tt>$DEFAULT_INPUT</tt>.
|
English - <tt>$DEFAULT_INPUT</tt>.
|
||||||
|
|
||||||
==== <tt>$></tt> (Default Standard Output)
|
=== <tt>$></tt> (Default Standard Output)
|
||||||
|
|
||||||
An output stream, initially <tt>$stdout</tt>.
|
An output stream, initially <tt>$stdout</tt>.
|
||||||
|
|
||||||
English - <tt>$DEFAULT_OUTPUT
|
English - <tt>$DEFAULT_OUTPUT
|
||||||
|
|
||||||
==== <tt>$.</tt> (Input Position)
|
=== <tt>$.</tt> (Input Position)
|
||||||
|
|
||||||
The input position (line number) in the most recently read stream.
|
The input position (line number) in the most recently read stream.
|
||||||
|
|
||||||
English - <tt>$INPUT_LINE_NUMBER</tt>, <tt>$NR</tt>
|
English - <tt>$INPUT_LINE_NUMBER</tt>, <tt>$NR</tt>
|
||||||
|
|
||||||
==== <tt>$_</tt> (Last Read Line)
|
=== <tt>$_</tt> (Last Read Line)
|
||||||
|
|
||||||
The line (string) from the most recently read stream.
|
The line (string) from the most recently read stream.
|
||||||
|
|
||||||
English - <tt>$LAST_READ_LINE</tt>.
|
English - <tt>$LAST_READ_LINE</tt>.
|
||||||
|
|
||||||
=== Processes
|
== Processes
|
||||||
|
|
||||||
==== <tt>$0</tt>
|
=== <tt>$0</tt>
|
||||||
|
|
||||||
Initially, contains the name of the script being executed;
|
Initially, contains the name of the script being executed;
|
||||||
may be reassigned.
|
may be reassigned.
|
||||||
|
|
||||||
==== <tt>$*</tt> (\ARGV)
|
=== <tt>$*</tt> (\ARGV)
|
||||||
|
|
||||||
Points to ARGV.
|
Points to ARGV.
|
||||||
|
|
||||||
English - <tt>$ARGV</tt>.
|
English - <tt>$ARGV</tt>.
|
||||||
|
|
||||||
==== <tt>$$</tt> (Process ID)
|
=== <tt>$$</tt> (Process ID)
|
||||||
|
|
||||||
The process ID of the current process. Same as Process.pid.
|
The process ID of the current process. Same as Process.pid.
|
||||||
|
|
||||||
English - <tt>$PROCESS_ID</tt>, <tt>$PID</tt>.
|
English - <tt>$PROCESS_ID</tt>, <tt>$PID</tt>.
|
||||||
|
|
||||||
==== <tt>$?</tt> (Child Status)
|
=== <tt>$?</tt> (Child Status)
|
||||||
|
|
||||||
Initially +nil+, otherwise the Process::Status object
|
Initially +nil+, otherwise the Process::Status object
|
||||||
created for the most-recently exited child process;
|
created for the most-recently exited child process;
|
||||||
@ -186,7 +186,7 @@ thread-local.
|
|||||||
|
|
||||||
English - <tt>$CHILD_STATUS</tt>.
|
English - <tt>$CHILD_STATUS</tt>.
|
||||||
|
|
||||||
==== <tt>$LOAD_PATH</tt> (Load Path)
|
=== <tt>$LOAD_PATH</tt> (Load Path)
|
||||||
|
|
||||||
Contains the array of paths to be searched
|
Contains the array of paths to be searched
|
||||||
by Kernel#load and Kernel#require.
|
by Kernel#load and Kernel#require.
|
||||||
@ -211,7 +211,7 @@ Examples:
|
|||||||
|
|
||||||
Aliased as <tt>$:</tt> and <tt>$-I</tt>.
|
Aliased as <tt>$:</tt> and <tt>$-I</tt>.
|
||||||
|
|
||||||
==== <tt>$LOADED_FEATURES</tt>
|
=== <tt>$LOADED_FEATURES</tt>
|
||||||
|
|
||||||
Contains an array of the paths to the loaded files:
|
Contains an array of the paths to the loaded files:
|
||||||
|
|
||||||
@ -230,13 +230,13 @@ Contains an array of the paths to the loaded files:
|
|||||||
|
|
||||||
Aliased as <tt>$"</tt>.
|
Aliased as <tt>$"</tt>.
|
||||||
|
|
||||||
=== Debugging
|
== Debugging
|
||||||
|
|
||||||
==== <tt>$FILENAME</tt>
|
=== <tt>$FILENAME</tt>
|
||||||
|
|
||||||
The value returned by method ARGF.filename.
|
The value returned by method ARGF.filename.
|
||||||
|
|
||||||
==== <tt>$DEBUG</tt>
|
=== <tt>$DEBUG</tt>
|
||||||
|
|
||||||
Initially +true+ if command-line option <tt>-d</tt> or <tt>--debug</tt> is given,
|
Initially +true+ if command-line option <tt>-d</tt> or <tt>--debug</tt> is given,
|
||||||
otherwise initially +false+;
|
otherwise initially +false+;
|
||||||
@ -246,7 +246,7 @@ When +true+, prints each raised exception to <tt>$stderr</tt>.
|
|||||||
|
|
||||||
Aliased as <tt>$-d</tt>.
|
Aliased as <tt>$-d</tt>.
|
||||||
|
|
||||||
==== <tt>$VERBOSE</tt>
|
=== <tt>$VERBOSE</tt>
|
||||||
|
|
||||||
Initially +true+ if command-line option <tt>-v</tt> or <tt>-w</tt> is given,
|
Initially +true+ if command-line option <tt>-v</tt> or <tt>-w</tt> is given,
|
||||||
otherwise initially +false+;
|
otherwise initially +false+;
|
||||||
@ -258,58 +258,58 @@ When +nil+, disables warnings, including those from Kernel#warn.
|
|||||||
|
|
||||||
Aliased as <tt>$-v</tt> and <tt>$-w</tt>.
|
Aliased as <tt>$-v</tt> and <tt>$-w</tt>.
|
||||||
|
|
||||||
=== Other Variables
|
== Other Variables
|
||||||
|
|
||||||
==== <tt>$-a</tt>
|
=== <tt>$-a</tt>
|
||||||
|
|
||||||
Whether command-line option <tt>-a</tt> was given; read-only.
|
Whether command-line option <tt>-a</tt> was given; read-only.
|
||||||
|
|
||||||
==== <tt>$-i</tt>
|
=== <tt>$-i</tt>
|
||||||
|
|
||||||
Contains the extension given with command-line option <tt>-i</tt>,
|
Contains the extension given with command-line option <tt>-i</tt>,
|
||||||
or +nil+ if none.
|
or +nil+ if none.
|
||||||
|
|
||||||
An alias of ARGF.inplace_mode.
|
An alias of ARGF.inplace_mode.
|
||||||
|
|
||||||
==== <tt>$-l</tt>
|
=== <tt>$-l</tt>
|
||||||
|
|
||||||
Whether command-line option <tt>-l</tt> was set; read-only.
|
Whether command-line option <tt>-l</tt> was set; read-only.
|
||||||
|
|
||||||
==== <tt>$-p</tt>
|
=== <tt>$-p</tt>
|
||||||
|
|
||||||
Whether command-line option <tt>-p</tt> was given; read-only.
|
Whether command-line option <tt>-p</tt> was given; read-only.
|
||||||
|
|
||||||
=== Deprecated
|
== Deprecated
|
||||||
|
|
||||||
==== <tt>$=</tt>
|
=== <tt>$=</tt>
|
||||||
|
|
||||||
==== <tt>$,</tt>
|
=== <tt>$,</tt>
|
||||||
|
|
||||||
== Pre-Defined Global Constants
|
= Pre-Defined Global Constants
|
||||||
|
|
||||||
== Streams
|
= Streams
|
||||||
|
|
||||||
==== <tt>STDIN</tt>
|
=== <tt>STDIN</tt>
|
||||||
|
|
||||||
The standard input stream (the default value for <tt>$stdin</tt>):
|
The standard input stream (the default value for <tt>$stdin</tt>):
|
||||||
|
|
||||||
STDIN # => #<IO:<STDIN>>
|
STDIN # => #<IO:<STDIN>>
|
||||||
|
|
||||||
==== <tt>STDOUT</tt>
|
=== <tt>STDOUT</tt>
|
||||||
|
|
||||||
The standard output stream (the default value for <tt>$stdout</tt>):
|
The standard output stream (the default value for <tt>$stdout</tt>):
|
||||||
|
|
||||||
STDOUT # => #<IO:<STDOUT>>
|
STDOUT # => #<IO:<STDOUT>>
|
||||||
|
|
||||||
==== <tt>STDERR</tt>
|
=== <tt>STDERR</tt>
|
||||||
|
|
||||||
The standard error stream (the default value for <tt>$stderr</tt>):
|
The standard error stream (the default value for <tt>$stderr</tt>):
|
||||||
|
|
||||||
STDERR # => #<IO:<STDERR>>
|
STDERR # => #<IO:<STDERR>>
|
||||||
|
|
||||||
=== Enviroment
|
== Enviroment
|
||||||
|
|
||||||
==== ENV
|
=== ENV
|
||||||
|
|
||||||
A hash of the contains current environment variables names and values:
|
A hash of the contains current environment variables names and values:
|
||||||
|
|
||||||
@ -321,41 +321,41 @@ A hash of the contains current environment variables names and values:
|
|||||||
["DISPLAY", ":0"],
|
["DISPLAY", ":0"],
|
||||||
["GDMSESSION", "ubuntu"]]
|
["GDMSESSION", "ubuntu"]]
|
||||||
|
|
||||||
==== ARGF
|
=== ARGF
|
||||||
|
|
||||||
The virtual concatenation of the files given on the command line, or from
|
The virtual concatenation of the files given on the command line, or from
|
||||||
<tt>$stdin</tt> if no files were given, <tt>"-"</tt> is given, or after
|
<tt>$stdin</tt> if no files were given, <tt>"-"</tt> is given, or after
|
||||||
all files have been read.
|
all files have been read.
|
||||||
|
|
||||||
==== <tt>ARGV</tt>
|
=== <tt>ARGV</tt>
|
||||||
|
|
||||||
An array of the given command-line arguments.
|
An array of the given command-line arguments.
|
||||||
|
|
||||||
==== <tt>TOPLEVEL_BINDING</tt>
|
=== <tt>TOPLEVEL_BINDING</tt>
|
||||||
|
|
||||||
The Binding of the top level scope:
|
The Binding of the top level scope:
|
||||||
|
|
||||||
TOPLEVEL_BINDING # => #<Binding:0x00007f58da0da7c0>
|
TOPLEVEL_BINDING # => #<Binding:0x00007f58da0da7c0>
|
||||||
|
|
||||||
==== <tt>RUBY_VERSION</tt>
|
=== <tt>RUBY_VERSION</tt>
|
||||||
|
|
||||||
The Ruby version:
|
The Ruby version:
|
||||||
|
|
||||||
RUBY_VERSION # => "3.2.2"
|
RUBY_VERSION # => "3.2.2"
|
||||||
|
|
||||||
==== <tt>RUBY_RELEASE_DATE</tt>
|
=== <tt>RUBY_RELEASE_DATE</tt>
|
||||||
|
|
||||||
The release date string:
|
The release date string:
|
||||||
|
|
||||||
RUBY_RELEASE_DATE # => "2023-03-30"
|
RUBY_RELEASE_DATE # => "2023-03-30"
|
||||||
|
|
||||||
==== <tt>RUBY_PLATFORM</tt>
|
=== <tt>RUBY_PLATFORM</tt>
|
||||||
|
|
||||||
The platform identifier:
|
The platform identifier:
|
||||||
|
|
||||||
RUBY_PLATFORM # => "x86_64-linux"
|
RUBY_PLATFORM # => "x86_64-linux"
|
||||||
|
|
||||||
==== <tt>RUBY_PATCHLEVEL</tt>
|
=== <tt>RUBY_PATCHLEVEL</tt>
|
||||||
|
|
||||||
The integer patch level for this Ruby:
|
The integer patch level for this Ruby:
|
||||||
|
|
||||||
@ -363,41 +363,41 @@ The integer patch level for this Ruby:
|
|||||||
|
|
||||||
For a development build the patch level will be -1.
|
For a development build the patch level will be -1.
|
||||||
|
|
||||||
==== <tt>RUBY_REVISION</tt>
|
=== <tt>RUBY_REVISION</tt>
|
||||||
|
|
||||||
The git commit hash for this Ruby:
|
The git commit hash for this Ruby:
|
||||||
|
|
||||||
RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"
|
RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"
|
||||||
|
|
||||||
==== <tt>RUBY_COPYRIGHT</tt>
|
=== <tt>RUBY_COPYRIGHT</tt>
|
||||||
|
|
||||||
The copyright string:
|
The copyright string:
|
||||||
|
|
||||||
RUBY_COPYRIGHT
|
RUBY_COPYRIGHT
|
||||||
# => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"
|
# => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"
|
||||||
|
|
||||||
==== <tt>RUBY_ENGINE</tt>
|
=== <tt>RUBY_ENGINE</tt>
|
||||||
|
|
||||||
The name of the Ruby implementation:
|
The name of the Ruby implementation:
|
||||||
|
|
||||||
RUBY_ENGINE # => "ruby"
|
RUBY_ENGINE # => "ruby"
|
||||||
|
|
||||||
==== <tt>RUBY_ENGINE_VERSION</tt>
|
=== <tt>RUBY_ENGINE_VERSION</tt>
|
||||||
|
|
||||||
The version of the Ruby implementation:
|
The version of the Ruby implementation:
|
||||||
|
|
||||||
RUBY_ENGINE_VERSION # => "3.2.2"
|
RUBY_ENGINE_VERSION # => "3.2.2"
|
||||||
|
|
||||||
==== <tt>RUBY_DESCRIPTION</tt>
|
=== <tt>RUBY_DESCRIPTION</tt>
|
||||||
|
|
||||||
The description of the Ruby implementation:
|
The description of the Ruby implementation:
|
||||||
|
|
||||||
RUBY_DESCRIPTION
|
RUBY_DESCRIPTION
|
||||||
# => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"
|
# => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"
|
||||||
|
|
||||||
=== Embedded \Data
|
== Embedded \Data
|
||||||
|
|
||||||
==== <tt>DATA</tt>
|
=== <tt>DATA</tt>
|
||||||
|
|
||||||
Defined if and only if the program has this line:
|
Defined if and only if the program has this line:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Implicit Conversions
|
= Implicit Conversions
|
||||||
|
|
||||||
Some Ruby methods accept one or more objects
|
Some Ruby methods accept one or more objects
|
||||||
that can be either:
|
that can be either:
|
||||||
@ -15,7 +15,7 @@ a specific conversion method:
|
|||||||
* Integer: +to_int+
|
* Integer: +to_int+
|
||||||
* String: +to_str+
|
* String: +to_str+
|
||||||
|
|
||||||
=== Array-Convertible Objects
|
== Array-Convertible Objects
|
||||||
|
|
||||||
An <i>Array-convertible object</i> is an object that:
|
An <i>Array-convertible object</i> is an object that:
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ This class is not Array-convertible (method +to_ary+ returns non-Array):
|
|||||||
# Raises TypeError (can't convert NotArrayConvertible to Array (NotArrayConvertible#to_ary gives Symbol))
|
# Raises TypeError (can't convert NotArrayConvertible to Array (NotArrayConvertible#to_ary gives Symbol))
|
||||||
a.replace(NotArrayConvertible.new)
|
a.replace(NotArrayConvertible.new)
|
||||||
|
|
||||||
=== Hash-Convertible Objects
|
== Hash-Convertible Objects
|
||||||
|
|
||||||
A <i>Hash-convertible object</i> is an object that:
|
A <i>Hash-convertible object</i> is an object that:
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ This class is not Hash-convertible (method +to_hash+ returns non-Hash):
|
|||||||
# Raises TypeError (can't convert NotHashConvertible to Hash (ToHashReturnsNonHash#to_hash gives Symbol))
|
# Raises TypeError (can't convert NotHashConvertible to Hash (ToHashReturnsNonHash#to_hash gives Symbol))
|
||||||
h.merge(NotHashConvertible.new)
|
h.merge(NotHashConvertible.new)
|
||||||
|
|
||||||
=== Integer-Convertible Objects
|
== Integer-Convertible Objects
|
||||||
|
|
||||||
An <i>Integer-convertible object</i> is an object that:
|
An <i>Integer-convertible object</i> is an object that:
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ This class is not Integer-convertible (method +to_int+ returns non-Integer):
|
|||||||
# Raises TypeError (can't convert NotIntegerConvertible to Integer (NotIntegerConvertible#to_int gives Symbol))
|
# Raises TypeError (can't convert NotIntegerConvertible to Integer (NotIntegerConvertible#to_int gives Symbol))
|
||||||
Array.new(NotIntegerConvertible.new)
|
Array.new(NotIntegerConvertible.new)
|
||||||
|
|
||||||
=== String-Convertible Objects
|
== String-Convertible Objects
|
||||||
|
|
||||||
A <i>String-convertible object</i> is an object that:
|
A <i>String-convertible object</i> is an object that:
|
||||||
* Has instance method +to_str+.
|
* Has instance method +to_str+.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Keywords
|
= Keywords
|
||||||
|
|
||||||
The following keywords are used by Ruby.
|
The following keywords are used by Ruby.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Packed \Data
|
= Packed \Data
|
||||||
|
|
||||||
Certain Ruby core methods deal with packing and unpacking data:
|
Certain Ruby core methods deal with packing and unpacking data:
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ If elements don't fit the provided directive, only least significant bits are en
|
|||||||
|
|
||||||
[257].pack("C").unpack("C") # => [1]
|
[257].pack("C").unpack("C") # => [1]
|
||||||
|
|
||||||
=== Packing \Method
|
== Packing \Method
|
||||||
|
|
||||||
\Method Array#pack accepts optional keyword argument
|
\Method Array#pack accepts optional keyword argument
|
||||||
+buffer+ that specifies the target string (instead of a new string):
|
+buffer+ that specifies the target string (instead of a new string):
|
||||||
@ -76,7 +76,7 @@ The method can accept a block:
|
|||||||
# Packed string is passed to the block.
|
# Packed string is passed to the block.
|
||||||
[65, 66].pack('C*') {|s| p s } # => "AB"
|
[65, 66].pack('C*') {|s| p s } # => "AB"
|
||||||
|
|
||||||
=== Unpacking Methods
|
== Unpacking Methods
|
||||||
|
|
||||||
Methods String#unpack and String#unpack1 each accept
|
Methods String#unpack and String#unpack1 each accept
|
||||||
an optional keyword argument +offset+ that specifies an offset
|
an optional keyword argument +offset+ that specifies an offset
|
||||||
@ -95,12 +95,12 @@ Both methods can accept a block:
|
|||||||
# The single unpacked object is passed to the block.
|
# The single unpacked object is passed to the block.
|
||||||
'AB'.unpack1('C*') {|ele| p ele } # => 65
|
'AB'.unpack1('C*') {|ele| p ele } # => 65
|
||||||
|
|
||||||
=== \Integer Directives
|
== \Integer Directives
|
||||||
|
|
||||||
Each integer directive specifies the packing or unpacking
|
Each integer directive specifies the packing or unpacking
|
||||||
for one element in the input or output array.
|
for one element in the input or output array.
|
||||||
|
|
||||||
==== 8-Bit \Integer Directives
|
=== 8-Bit \Integer Directives
|
||||||
|
|
||||||
- <tt>'c'</tt> - 8-bit signed integer
|
- <tt>'c'</tt> - 8-bit signed integer
|
||||||
(like C <tt>signed char</tt>):
|
(like C <tt>signed char</tt>):
|
||||||
@ -116,7 +116,7 @@ for one element in the input or output array.
|
|||||||
s = [0, 1, -1].pack('C*') # => "\x00\x01\xFF"
|
s = [0, 1, -1].pack('C*') # => "\x00\x01\xFF"
|
||||||
s.unpack('C*') # => [0, 1, 255]
|
s.unpack('C*') # => [0, 1, 255]
|
||||||
|
|
||||||
==== 16-Bit \Integer Directives
|
=== 16-Bit \Integer Directives
|
||||||
|
|
||||||
- <tt>'s'</tt> - 16-bit signed integer, native-endian
|
- <tt>'s'</tt> - 16-bit signed integer, native-endian
|
||||||
(like C <tt>int16_t</tt>):
|
(like C <tt>int16_t</tt>):
|
||||||
@ -146,7 +146,7 @@ for one element in the input or output array.
|
|||||||
s.unpack('v*')
|
s.unpack('v*')
|
||||||
# => [0, 1, 65535, 32767, 32768, 65535]
|
# => [0, 1, 65535, 32767, 32768, 65535]
|
||||||
|
|
||||||
==== 32-Bit \Integer Directives
|
=== 32-Bit \Integer Directives
|
||||||
|
|
||||||
- <tt>'l'</tt> - 32-bit signed integer, native-endian
|
- <tt>'l'</tt> - 32-bit signed integer, native-endian
|
||||||
(like C <tt>int32_t</tt>):
|
(like C <tt>int32_t</tt>):
|
||||||
@ -178,7 +178,7 @@ for one element in the input or output array.
|
|||||||
s.unpack('v*')
|
s.unpack('v*')
|
||||||
# => [0, 0, 1, 0, 65535, 65535]
|
# => [0, 0, 1, 0, 65535, 65535]
|
||||||
|
|
||||||
==== 64-Bit \Integer Directives
|
=== 64-Bit \Integer Directives
|
||||||
|
|
||||||
- <tt>'q'</tt> - 64-bit signed integer, native-endian
|
- <tt>'q'</tt> - 64-bit signed integer, native-endian
|
||||||
(like C <tt>int64_t</tt>):
|
(like C <tt>int64_t</tt>):
|
||||||
@ -196,7 +196,7 @@ for one element in the input or output array.
|
|||||||
s.unpack('Q*')
|
s.unpack('Q*')
|
||||||
# => [578437695752307201, 17940646550795321087]
|
# => [578437695752307201, 17940646550795321087]
|
||||||
|
|
||||||
==== Platform-Dependent \Integer Directives
|
=== Platform-Dependent \Integer Directives
|
||||||
|
|
||||||
- <tt>'i'</tt> - Platform-dependent width signed integer,
|
- <tt>'i'</tt> - Platform-dependent width signed integer,
|
||||||
native-endian (like C <tt>int</tt>):
|
native-endian (like C <tt>int</tt>):
|
||||||
@ -230,7 +230,7 @@ for one element in the input or output array.
|
|||||||
s.unpack('J*')
|
s.unpack('J*')
|
||||||
# => [67305985, 4244504319]
|
# => [67305985, 4244504319]
|
||||||
|
|
||||||
==== Other \Integer Directives
|
=== Other \Integer Directives
|
||||||
|
|
||||||
- <tt>'U'</tt> - UTF-8 character:
|
- <tt>'U'</tt> - UTF-8 character:
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ for one element in the input or output array.
|
|||||||
s.unpack('w*')
|
s.unpack('w*')
|
||||||
# => [1073741823]
|
# => [1073741823]
|
||||||
|
|
||||||
==== Modifiers for \Integer Directives
|
=== Modifiers for \Integer Directives
|
||||||
|
|
||||||
For the following directives, <tt>'!'</tt> or <tt>'_'</tt> modifiers may be
|
For the following directives, <tt>'!'</tt> or <tt>'_'</tt> modifiers may be
|
||||||
suffixed as underlying platform’s native size.
|
suffixed as underlying platform’s native size.
|
||||||
@ -265,12 +265,12 @@ The endian modifiers also may be suffixed in the directives above:
|
|||||||
- <tt>'>'</tt> - Big-endian.
|
- <tt>'>'</tt> - Big-endian.
|
||||||
- <tt>'<'</tt> - Little-endian.
|
- <tt>'<'</tt> - Little-endian.
|
||||||
|
|
||||||
=== \Float Directives
|
== \Float Directives
|
||||||
|
|
||||||
Each float directive specifies the packing or unpacking
|
Each float directive specifies the packing or unpacking
|
||||||
for one element in the input or output array.
|
for one element in the input or output array.
|
||||||
|
|
||||||
==== Single-Precision \Float Directives
|
=== Single-Precision \Float Directives
|
||||||
|
|
||||||
- <tt>'F'</tt> or <tt>'f'</tt> - Native format:
|
- <tt>'F'</tt> or <tt>'f'</tt> - Native format:
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ for one element in the input or output array.
|
|||||||
s = [3.0].pack('g') # => "@@\x00\x00"
|
s = [3.0].pack('g') # => "@@\x00\x00"
|
||||||
s.unpack('g') # => [3.0]
|
s.unpack('g') # => [3.0]
|
||||||
|
|
||||||
==== Double-Precision \Float Directives
|
=== Double-Precision \Float Directives
|
||||||
|
|
||||||
- <tt>'D'</tt> or <tt>'d'</tt> - Native format:
|
- <tt>'D'</tt> or <tt>'d'</tt> - Native format:
|
||||||
|
|
||||||
@ -314,12 +314,12 @@ A float directive may be infinity or not-a-number:
|
|||||||
[nan].pack('f') # => "\x00\x00\xC0\x7F"
|
[nan].pack('f') # => "\x00\x00\xC0\x7F"
|
||||||
"\x00\x00\xC0\x7F".unpack('f') # => [NaN]
|
"\x00\x00\xC0\x7F".unpack('f') # => [NaN]
|
||||||
|
|
||||||
=== \String Directives
|
== \String Directives
|
||||||
|
|
||||||
Each string directive specifies the packing or unpacking
|
Each string directive specifies the packing or unpacking
|
||||||
for one byte in the input or output string.
|
for one byte in the input or output string.
|
||||||
|
|
||||||
==== Binary \String Directives
|
=== Binary \String Directives
|
||||||
|
|
||||||
- <tt>'A'</tt> - Arbitrary binary string (space padded; count is width);
|
- <tt>'A'</tt> - Arbitrary binary string (space padded; count is width);
|
||||||
+nil+ is treated as the empty string:
|
+nil+ is treated as the empty string:
|
||||||
@ -377,7 +377,7 @@ for one byte in the input or output string.
|
|||||||
"foo".unpack('Z*') # => ["foo"]
|
"foo".unpack('Z*') # => ["foo"]
|
||||||
"foo\0bar".unpack('Z*') # => ["foo"] # Does not read past "\0".
|
"foo\0bar".unpack('Z*') # => ["foo"] # Does not read past "\0".
|
||||||
|
|
||||||
==== Bit \String Directives
|
=== Bit \String Directives
|
||||||
|
|
||||||
- <tt>'B'</tt> - Bit string (high byte first):
|
- <tt>'B'</tt> - Bit string (high byte first):
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ for one byte in the input or output string.
|
|||||||
"\x01".unpack("b2") # => ["10"]
|
"\x01".unpack("b2") # => ["10"]
|
||||||
"\x01".unpack("b3") # => ["100"]
|
"\x01".unpack("b3") # => ["100"]
|
||||||
|
|
||||||
==== Hex \String Directives
|
=== Hex \String Directives
|
||||||
|
|
||||||
- <tt>'H'</tt> - Hex string (high nibble first):
|
- <tt>'H'</tt> - Hex string (high nibble first):
|
||||||
|
|
||||||
@ -467,7 +467,7 @@ for one byte in the input or output string.
|
|||||||
"\x01\xfe".unpack('h4') # => ["10ef"]
|
"\x01\xfe".unpack('h4') # => ["10ef"]
|
||||||
"\x01\xfe".unpack('h5') # => ["10ef"]
|
"\x01\xfe".unpack('h5') # => ["10ef"]
|
||||||
|
|
||||||
==== Pointer \String Directives
|
=== Pointer \String Directives
|
||||||
|
|
||||||
- <tt>'P'</tt> - Pointer to a structure (fixed-length string):
|
- <tt>'P'</tt> - Pointer to a structure (fixed-length string):
|
||||||
|
|
||||||
@ -485,7 +485,7 @@ for one byte in the input or output string.
|
|||||||
("\0" * 8).unpack("p") # => [nil]
|
("\0" * 8).unpack("p") # => [nil]
|
||||||
[nil].pack("p") # => "\x00\x00\x00\x00\x00\x00\x00\x00"
|
[nil].pack("p") # => "\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||||
|
|
||||||
==== Other \String Directives
|
=== Other \String Directives
|
||||||
|
|
||||||
- <tt>'M'</tt> - Quoted printable, MIME encoding;
|
- <tt>'M'</tt> - Quoted printable, MIME encoding;
|
||||||
text mode, but input must use LF and output LF;
|
text mode, but input must use LF and output LF;
|
||||||
@ -559,7 +559,7 @@ for one byte in the input or output string.
|
|||||||
[0x40000000].pack("U") # => "\xFD\x80\x80\x80\x80\x80"
|
[0x40000000].pack("U") # => "\xFD\x80\x80\x80\x80\x80"
|
||||||
[0x7fffffff].pack("U") # => "\xFD\xBF\xBF\xBF\xBF\xBF"
|
[0x7fffffff].pack("U") # => "\xFD\xBF\xBF\xBF\xBF\xBF"
|
||||||
|
|
||||||
=== Offset Directives
|
== Offset Directives
|
||||||
|
|
||||||
- <tt>'@'</tt> - Begin packing at the given byte offset;
|
- <tt>'@'</tt> - Begin packing at the given byte offset;
|
||||||
for packing, null fill if necessary:
|
for packing, null fill if necessary:
|
||||||
@ -577,7 +577,7 @@ for one byte in the input or output string.
|
|||||||
[0, 1, 2].pack("CCX2C") # => "\x02"
|
[0, 1, 2].pack("CCX2C") # => "\x02"
|
||||||
"\x00\x02".unpack("CCXC") # => [0, 2, 2]
|
"\x00\x02".unpack("CCXC") # => [0, 2, 2]
|
||||||
|
|
||||||
=== Null Byte Direcive
|
== Null Byte Direcive
|
||||||
|
|
||||||
- <tt>'x'</tt> - Null byte:
|
- <tt>'x'</tt> - Null byte:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
== Formats for Dates and Times
|
= Formats for Dates and Times
|
||||||
|
|
||||||
Several Ruby time-related classes have instance method +strftime+,
|
Several Ruby time-related classes have instance method +strftime+,
|
||||||
which returns a formatted string representing all or part of a date or time:
|
which returns a formatted string representing all or part of a date or time:
|
||||||
@ -32,9 +32,9 @@ It consists of:
|
|||||||
Except for the leading percent character,
|
Except for the leading percent character,
|
||||||
the only required part is the conversion specifier, so we begin with that.
|
the only required part is the conversion specifier, so we begin with that.
|
||||||
|
|
||||||
=== Conversion Specifiers
|
== Conversion Specifiers
|
||||||
|
|
||||||
==== \Date (Year, Month, Day)
|
=== \Date (Year, Month, Day)
|
||||||
|
|
||||||
- <tt>%Y</tt> - Year including century, zero-padded:
|
- <tt>%Y</tt> - Year including century, zero-padded:
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ the only required part is the conversion specifier, so we begin with that.
|
|||||||
Time.new(2002, 1, 1).strftime('%j') # => "001"
|
Time.new(2002, 1, 1).strftime('%j') # => "001"
|
||||||
Time.new(2002, 12, 31).strftime('%j') # => "365"
|
Time.new(2002, 12, 31).strftime('%j') # => "365"
|
||||||
|
|
||||||
==== \Time (Hour, Minute, Second, Subsecond)
|
=== \Time (Hour, Minute, Second, Subsecond)
|
||||||
|
|
||||||
- <tt>%H</tt> - Hour of the day, in range (0..23), zero-padded:
|
- <tt>%H</tt> - Hour of the day, in range (0..23), zero-padded:
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ the only required part is the conversion specifier, so we begin with that.
|
|||||||
|
|
||||||
Time.now.strftime('%s') # => "1656505136"
|
Time.now.strftime('%s') # => "1656505136"
|
||||||
|
|
||||||
==== Timezone
|
=== Timezone
|
||||||
|
|
||||||
- <tt>%z</tt> - Timezone as hour and minute offset from UTC:
|
- <tt>%z</tt> - Timezone as hour and minute offset from UTC:
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ the only required part is the conversion specifier, so we begin with that.
|
|||||||
|
|
||||||
Time.now.strftime('%Z') # => "Central Daylight Time"
|
Time.now.strftime('%Z') # => "Central Daylight Time"
|
||||||
|
|
||||||
==== Weekday
|
=== Weekday
|
||||||
|
|
||||||
- <tt>%A</tt> - Full weekday name:
|
- <tt>%A</tt> - Full weekday name:
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ the only required part is the conversion specifier, so we begin with that.
|
|||||||
t.strftime('%a') # => "Sun"
|
t.strftime('%a') # => "Sun"
|
||||||
t.strftime('%w') # => "0"
|
t.strftime('%w') # => "0"
|
||||||
|
|
||||||
==== Week Number
|
=== Week Number
|
||||||
|
|
||||||
- <tt>%U</tt> - Week number of the year, in range (0..53), zero-padded,
|
- <tt>%U</tt> - Week number of the year, in range (0..53), zero-padded,
|
||||||
where each week begins on a Sunday:
|
where each week begins on a Sunday:
|
||||||
@ -200,7 +200,7 @@ the only required part is the conversion specifier, so we begin with that.
|
|||||||
t.strftime('%a') # => "Sun"
|
t.strftime('%a') # => "Sun"
|
||||||
t.strftime('%W') # => "25"
|
t.strftime('%W') # => "25"
|
||||||
|
|
||||||
==== Week Dates
|
=== Week Dates
|
||||||
|
|
||||||
See {ISO 8601 week dates}[https://en.wikipedia.org/wiki/ISO_8601#Week_dates].
|
See {ISO 8601 week dates}[https://en.wikipedia.org/wiki/ISO_8601#Week_dates].
|
||||||
|
|
||||||
@ -223,7 +223,7 @@ See {ISO 8601 week dates}[https://en.wikipedia.org/wiki/ISO_8601#Week_dates].
|
|||||||
t0.strftime('%V') # => "52"
|
t0.strftime('%V') # => "52"
|
||||||
t1.strftime('%V') # => "01"
|
t1.strftime('%V') # => "01"
|
||||||
|
|
||||||
==== Literals
|
=== Literals
|
||||||
|
|
||||||
- <tt>%n</tt> - Newline character "\n":
|
- <tt>%n</tt> - Newline character "\n":
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ See {ISO 8601 week dates}[https://en.wikipedia.org/wiki/ISO_8601#Week_dates].
|
|||||||
|
|
||||||
Time.now.strftime('%%') # => "%"
|
Time.now.strftime('%%') # => "%"
|
||||||
|
|
||||||
==== Shorthand Conversion Specifiers
|
=== Shorthand Conversion Specifiers
|
||||||
|
|
||||||
Each shorthand specifier here is shown with its corresponding
|
Each shorthand specifier here is shown with its corresponding
|
||||||
longhand specifier.
|
longhand specifier.
|
||||||
@ -294,14 +294,14 @@ longhand specifier.
|
|||||||
DateTime.now.strftime('%a %b %e %H:%M:%S %Z %Y')
|
DateTime.now.strftime('%a %b %e %H:%M:%S %Z %Y')
|
||||||
# => "Wed Jun 29 08:32:18 -05:00 2022"
|
# => "Wed Jun 29 08:32:18 -05:00 2022"
|
||||||
|
|
||||||
=== Flags
|
== Flags
|
||||||
|
|
||||||
Flags may affect certain formatting specifications.
|
Flags may affect certain formatting specifications.
|
||||||
|
|
||||||
Multiple flags may be given with a single conversion specified;
|
Multiple flags may be given with a single conversion specified;
|
||||||
order does not matter.
|
order does not matter.
|
||||||
|
|
||||||
==== Padding Flags
|
=== Padding Flags
|
||||||
|
|
||||||
- <tt>0</tt> - Pad with zeroes:
|
- <tt>0</tt> - Pad with zeroes:
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ order does not matter.
|
|||||||
|
|
||||||
Time.new(10).strftime('%-Y') # => "10"
|
Time.new(10).strftime('%-Y') # => "10"
|
||||||
|
|
||||||
==== Casing Flags
|
=== Casing Flags
|
||||||
|
|
||||||
- <tt>^</tt> - Upcase result:
|
- <tt>^</tt> - Upcase result:
|
||||||
|
|
||||||
@ -328,7 +328,7 @@ order does not matter.
|
|||||||
Time.now.strftime('%^p') # => "AM"
|
Time.now.strftime('%^p') # => "AM"
|
||||||
Time.now.strftime('%#p') # => "am"
|
Time.now.strftime('%#p') # => "am"
|
||||||
|
|
||||||
==== Timezone Flags
|
=== Timezone Flags
|
||||||
|
|
||||||
- <tt>:</tt> - Put timezone as colon-separated hours and minutes:
|
- <tt>:</tt> - Put timezone as colon-separated hours and minutes:
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ order does not matter.
|
|||||||
|
|
||||||
Time.now.strftime('%::z') # => "-05:00:00"
|
Time.now.strftime('%::z') # => "-05:00:00"
|
||||||
|
|
||||||
=== Width Specifiers
|
== Width Specifiers
|
||||||
|
|
||||||
The integer width specifier gives a minimum width for the returned string:
|
The integer width specifier gives a minimum width for the returned string:
|
||||||
|
|
||||||
@ -348,12 +348,12 @@ The integer width specifier gives a minimum width for the returned string:
|
|||||||
Time.new(2002, 12).strftime('%10B') # => " December"
|
Time.new(2002, 12).strftime('%10B') # => " December"
|
||||||
Time.new(2002, 12).strftime('%3B') # => "December" # Ignored if too small.
|
Time.new(2002, 12).strftime('%3B') # => "December" # Ignored if too small.
|
||||||
|
|
||||||
== Specialized Format Strings
|
= Specialized Format Strings
|
||||||
|
|
||||||
Here are a few specialized format strings,
|
Here are a few specialized format strings,
|
||||||
each based on an external standard.
|
each based on an external standard.
|
||||||
|
|
||||||
=== HTTP Format
|
== HTTP Format
|
||||||
|
|
||||||
The HTTP date format is based on
|
The HTTP date format is based on
|
||||||
{RFC 2616}[https://datatracker.ietf.org/doc/html/rfc2616],
|
{RFC 2616}[https://datatracker.ietf.org/doc/html/rfc2616],
|
||||||
@ -368,7 +368,7 @@ and treats dates in the format <tt>'%a, %d %b %Y %T GMT'</tt>:
|
|||||||
Date._httpdate(httpdate)
|
Date._httpdate(httpdate)
|
||||||
# => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"GMT", :offset=>0}
|
# => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"GMT", :offset=>0}
|
||||||
|
|
||||||
=== RFC 3339 Format
|
== RFC 3339 Format
|
||||||
|
|
||||||
The RFC 3339 date format is based on
|
The RFC 3339 date format is based on
|
||||||
{RFC 3339}[https://datatracker.ietf.org/doc/html/rfc3339]:
|
{RFC 3339}[https://datatracker.ietf.org/doc/html/rfc3339]:
|
||||||
@ -382,7 +382,7 @@ The RFC 3339 date format is based on
|
|||||||
Date._rfc3339(rfc3339)
|
Date._rfc3339(rfc3339)
|
||||||
# => {:year=>2001, :mon=>2, :mday=>3, :hour=>0, :min=>0, :sec=>0, :zone=>"+00:00", :offset=>0}
|
# => {:year=>2001, :mon=>2, :mday=>3, :hour=>0, :min=>0, :sec=>0, :zone=>"+00:00", :offset=>0}
|
||||||
|
|
||||||
=== RFC 2822 Format
|
== RFC 2822 Format
|
||||||
|
|
||||||
The RFC 2822 date format is based on
|
The RFC 2822 date format is based on
|
||||||
{RFC 2822}[https://datatracker.ietf.org/doc/html/rfc2822],
|
{RFC 2822}[https://datatracker.ietf.org/doc/html/rfc2822],
|
||||||
@ -397,7 +397,7 @@ and treats dates in the format <tt>'%a, %-d %b %Y %T %z'</tt>]:
|
|||||||
Date._rfc2822(rfc2822)
|
Date._rfc2822(rfc2822)
|
||||||
# => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"+0000", :offset=>0}
|
# => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"+0000", :offset=>0}
|
||||||
|
|
||||||
=== JIS X 0301 Format
|
== JIS X 0301 Format
|
||||||
|
|
||||||
The JIS X 0301 format includes the
|
The JIS X 0301 format includes the
|
||||||
{Japanese era name}[https://en.wikipedia.org/wiki/Japanese_era_name],
|
{Japanese era name}[https://en.wikipedia.org/wiki/Japanese_era_name],
|
||||||
@ -412,7 +412,7 @@ with the first letter of the romanized era name prefixed:
|
|||||||
# Return hash parsed from 0301-formatted string.
|
# Return hash parsed from 0301-formatted string.
|
||||||
Date._jisx0301(jisx0301) # => {:year=>2001, :mon=>2, :mday=>3}
|
Date._jisx0301(jisx0301) # => {:year=>2001, :mon=>2, :mday=>3}
|
||||||
|
|
||||||
=== ISO 8601 Format Specifications
|
== ISO 8601 Format Specifications
|
||||||
|
|
||||||
This section shows format specifications that are compatible with
|
This section shows format specifications that are compatible with
|
||||||
{ISO 8601}[https://en.wikipedia.org/wiki/ISO_8601].
|
{ISO 8601}[https://en.wikipedia.org/wiki/ISO_8601].
|
||||||
@ -422,7 +422,7 @@ Examples in this section assume:
|
|||||||
|
|
||||||
t = Time.now # => 2022-06-29 16:49:25.465246 -0500
|
t = Time.now # => 2022-06-29 16:49:25.465246 -0500
|
||||||
|
|
||||||
==== Dates
|
=== Dates
|
||||||
|
|
||||||
See {ISO 8601 dates}[https://en.wikipedia.org/wiki/ISO_8601#Dates].
|
See {ISO 8601 dates}[https://en.wikipedia.org/wiki/ISO_8601#Dates].
|
||||||
|
|
||||||
@ -473,7 +473,7 @@ See {ISO 8601 dates}[https://en.wikipedia.org/wiki/ISO_8601#Dates].
|
|||||||
|
|
||||||
t.strftime('%Y-%j') # => "2022-180"
|
t.strftime('%Y-%j') # => "2022-180"
|
||||||
|
|
||||||
==== Times
|
=== Times
|
||||||
|
|
||||||
See {ISO 8601 times}[https://en.wikipedia.org/wiki/ISO_8601#Times].
|
See {ISO 8601 times}[https://en.wikipedia.org/wiki/ISO_8601#Times].
|
||||||
|
|
||||||
@ -514,7 +514,7 @@ See {ISO 8601 times}[https://en.wikipedia.org/wiki/ISO_8601#Times].
|
|||||||
- {Coordinated Universal Time (UTC)}[https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)].
|
- {Coordinated Universal Time (UTC)}[https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)].
|
||||||
- {Time offsets from UTC}[https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC].
|
- {Time offsets from UTC}[https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC].
|
||||||
|
|
||||||
==== Combined \Date and \Time
|
=== Combined \Date and \Time
|
||||||
|
|
||||||
See {ISO 8601 Combined date and time representations}[https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations].
|
See {ISO 8601 Combined date and time representations}[https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations].
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
== Timezones
|
= Timezones
|
||||||
|
|
||||||
=== Timezone Specifiers
|
== Timezone Specifiers
|
||||||
|
|
||||||
Certain \Time methods accept arguments that specify timezones:
|
Certain \Time methods accept arguments that specify timezones:
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ The value given with any of these must be one of the following
|
|||||||
- {Integer offset}[rdoc-ref:timezones.rdoc@Integer+Offsets].
|
- {Integer offset}[rdoc-ref:timezones.rdoc@Integer+Offsets].
|
||||||
- {Timezone object}[rdoc-ref:timezones.rdoc@Timezone+Objects].
|
- {Timezone object}[rdoc-ref:timezones.rdoc@Timezone+Objects].
|
||||||
|
|
||||||
==== Hours/Minutes Offsets
|
=== Hours/Minutes Offsets
|
||||||
|
|
||||||
The zone value may be a string offset from UTC
|
The zone value may be a string offset from UTC
|
||||||
in the form <tt>'+HH:MM'</tt> or <tt>'-HH:MM'</tt>,
|
in the form <tt>'+HH:MM'</tt> or <tt>'-HH:MM'</tt>,
|
||||||
@ -33,7 +33,7 @@ Examples:
|
|||||||
Time.at(t, in: '-23:59') # => 1999-12-31 20:16:01 -2359
|
Time.at(t, in: '-23:59') # => 1999-12-31 20:16:01 -2359
|
||||||
Time.at(t, in: '+23:59') # => 2000-01-02 20:14:01 +2359
|
Time.at(t, in: '+23:59') # => 2000-01-02 20:14:01 +2359
|
||||||
|
|
||||||
==== Single-Letter Offsets
|
=== Single-Letter Offsets
|
||||||
|
|
||||||
The zone value may be a letter in the range <tt>'A'..'I'</tt>
|
The zone value may be a letter in the range <tt>'A'..'I'</tt>
|
||||||
or <tt>'K'..'Z'</tt>;
|
or <tt>'K'..'Z'</tt>;
|
||||||
@ -46,7 +46,7 @@ see {List of military time zones}[https://en.wikipedia.org/wiki/List_of_military
|
|||||||
Time.at(t, in: 'Y') # => 2000-01-01 08:15:01 -1200
|
Time.at(t, in: 'Y') # => 2000-01-01 08:15:01 -1200
|
||||||
Time.at(t, in: 'Z') # => 2000-01-01 20:15:01 UTC
|
Time.at(t, in: 'Z') # => 2000-01-01 20:15:01 UTC
|
||||||
|
|
||||||
==== \Integer Offsets
|
=== \Integer Offsets
|
||||||
|
|
||||||
The zone value may be an integer number of seconds
|
The zone value may be an integer number of seconds
|
||||||
in the range <tt>-86399..86399</tt>:
|
in the range <tt>-86399..86399</tt>:
|
||||||
@ -55,7 +55,7 @@ in the range <tt>-86399..86399</tt>:
|
|||||||
Time.at(t, in: -86399) # => 1999-12-31 20:15:02 -235959
|
Time.at(t, in: -86399) # => 1999-12-31 20:15:02 -235959
|
||||||
Time.at(t, in: 86399) # => 2000-01-02 20:15:00 +235959
|
Time.at(t, in: 86399) # => 2000-01-02 20:15:00 +235959
|
||||||
|
|
||||||
==== Timezone Objects
|
=== Timezone Objects
|
||||||
|
|
||||||
The zone value may be an object responding to certain timezone methods.
|
The zone value may be an object responding to certain timezone methods.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user