Skip to content

Commit

Permalink
Reorganize top-level doc files for better doc navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
st0012 committed Dec 12, 2024
1 parent 5e8c9b4 commit 6afe893
Show file tree
Hide file tree
Showing 60 changed files with 169 additions and 170 deletions.
28 changes: 14 additions & 14 deletions array.c
Original file line number Diff line number Diff line change
Expand Up @@ -1115,7 +1115,7 @@ rb_ary_s_new(int argc, VALUE *argv, VALUE klass)
* array # => [{a: 1}, {}], as array[0] and array[1] are different objects
*
* Raises TypeError if the first argument is not either an array
* or an {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects]).
* or an {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects]).
* Raises ArgumentError if the first argument is a negative integer.
*
* Related: see {Methods for Creating an Array}[rdoc-ref:Array@Methods+for+Creating+an+Array].
Expand Down Expand Up @@ -1935,7 +1935,7 @@ rb_ary_aref1(VALUE ary, VALUE arg)
* Returns the element of +self+ specified by the given +index+
* or +nil+ if there is no such element;
* +index+ must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects].
*
* For non-negative +index+, returns the element of +self+ at offset +index+:
*
Expand Down Expand Up @@ -2003,7 +2003,7 @@ rb_ary_last(int argc, const VALUE *argv, VALUE ary) // used by parse.y
* fetch(index) {|index| ... } -> element or block_return_value
*
* Returns the element of +self+ at offset +index+ if +index+ is in range; +index+ must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects].
*
* With the single argument +index+ and no block,
* returns the element at offset +index+:
Expand Down Expand Up @@ -3495,7 +3495,7 @@ static VALUE rb_ary_bsearch_index(VALUE ary);
* Returns the element from +self+ found by a binary search,
* or +nil+ if the search found no suitable element.
*
* See {Binary Searching}[rdoc-ref:bsearch.rdoc].
* See {Binary Searching}[rdoc-ref:ruby/bsearch.rdoc].
*
* Related: see {Methods for Fetching}[rdoc-ref:Array@Methods+for+Fetching].
*/
Expand All @@ -3519,7 +3519,7 @@ rb_ary_bsearch(VALUE ary)
* Returns the integer index of the element from +self+ found by a binary search,
* or +nil+ if the search found no suitable element.
*
* See {Binary Searching}[rdoc-ref:bsearch.rdoc].
* See {Binary Searching}[rdoc-ref:ruby/bsearch.rdoc].
*
* Related: see {Methods for Fetching}[rdoc-ref:Array@Methods+for+Fetching].
*/
Expand Down Expand Up @@ -4125,7 +4125,7 @@ rb_ary_delete_at(VALUE ary, long pos)
* delete_at(index) -> removed_object or nil
*
* Removes the element of +self+ at the given +index+, which must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects].
*
* When +index+ is non-negative, deletes the element at offset +index+:
*
Expand Down Expand Up @@ -4661,7 +4661,7 @@ rb_ary_transpose(VALUE ary)
* replace(other_array) -> self
*
* Replaces the elements of +self+ with the elements of +other_array+, which must be an
* {array-convertible object}[rdoc-ref:implicit_conversion.rdoc@Array-Convertible+Objects];
* {array-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Array-Convertible+Objects];
* returns +self+:
*
* a = ['a', 'b', 'c'] # => ["a", "b", "c"]
Expand Down Expand Up @@ -4780,7 +4780,7 @@ rb_ary_clear(VALUE ary)
* When arguments +start+ and +count+ are given,
* they select the elements of +self+ to be replaced;
* each must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects]
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects]
* (or +nil+):
*
* - +start+ specifies the zero-based offset of the first element to be replaced;
Expand Down Expand Up @@ -6586,7 +6586,7 @@ flatten(VALUE ary, int level)
*
* Returns +self+ as a recursively flattening of +self+ to +depth+ levels of recursion;
* +depth+ must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects],
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects],
* or +nil+.
* At each level of recursion:
*
Expand Down Expand Up @@ -6644,7 +6644,7 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
* Returns a new array that is a recursive flattening of +self+
* to +depth+ levels of recursion;
* +depth+ must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects]
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects]
* or +nil+.
* At each level of recursion:
*
Expand Down Expand Up @@ -6895,7 +6895,7 @@ rb_ary_cycle_size(VALUE self, VALUE args, VALUE eobj)
*
* With a block given, may call the block, depending on the value of argument +count+;
* +count+ must be an
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects],
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects],
* or +nil+.
*
* When +count+ is positive,
Expand Down Expand Up @@ -7177,7 +7177,7 @@ rb_ary_combination_size(VALUE ary, VALUE args, VALUE eobj)
* combination(n) -> new_enumerator
*
* When a block and a positive
* {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects]
* {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects]
* argument +n+ (<tt>0 < n <= self.size</tt>)
* are given, calls the block with all +n+-tuple combinations of +self+;
* returns +self+:
Expand Down Expand Up @@ -8017,7 +8017,7 @@ rb_ary_one_p(int argc, VALUE *argv, VALUE ary)
* Finds and returns the object in nested object
* specified by +index+ and +identifiers+;
* the nested objects may be instances of various classes.
* See {Dig Methods}[rdoc-ref:dig_methods.rdoc].
* See {Dig Methods}[rdoc-ref:ruby/dig_methods.rdoc].
*
* Examples:
*
Expand Down Expand Up @@ -8282,7 +8282,7 @@ rb_ary_deconstruct(VALUE ary)
* Although the effective index into an array is always an integer,
* some methods (both within class \Array and elsewhere)
* accept one or more non-integer arguments that are
* {integer-convertible objects}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
* {integer-convertible objects}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects].
*
* == Creating Arrays
*
Expand Down
2 changes: 1 addition & 1 deletion array.rb
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ def last n = unspecified = true
# With no block given, returns a new array containing the elements of +self+
# at the offsets given by +indexes+;
# each of the +indexes+ must be an
# {integer-convertible object}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects]:
# {integer-convertible object}[rdoc-ref:ruby/implicit_conversion.rdoc@Integer-Convertible+Objects]:
#
# a = [:foo, :bar, :baz]
# a.fetch_values(3, 1) # => [:baz, :foo]
Expand Down
6 changes: 3 additions & 3 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -1845,11 +1845,11 @@ $(UNICODE_HDR_DIR)/name2ctype.h:
$(UNICODE_SRC_DATA_DIR) $(UNICODE_SRC_EMOJI_DATA_DIR) > $@.new
$(MV) $@.new $@

srcs-doc: $(srcdir)/doc/regexp/unicode_properties.rdoc
$(srcdir)/doc/regexp/$(ALWAYS_UPDATE_UNICODE:yes=unicode_properties.rdoc): \
srcs-doc: $(srcdir)/doc/ruby/regexp/unicode_properties.rdoc
$(srcdir)/doc/ruby/regexp/$(ALWAYS_UPDATE_UNICODE:yes=unicode_properties.rdoc): \
$(UNICODE_HDR_DIR)/name2ctype.h $(UNICODE_PROPERTY_FILES)

$(srcdir)/doc/regexp/unicode_properties.rdoc:
$(srcdir)/doc/ruby/regexp/unicode_properties.rdoc:
$(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ \
$(srcdir)/template/unicode_properties.rdoc.tmpl \
$(UNICODE_SRC_DATA_DIR) $(UNICODE_HDR_DIR)/name2ctype.h || \
Expand Down
6 changes: 3 additions & 3 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -3455,7 +3455,7 @@ dir_open_dir(int argc, VALUE *argv)
* #<Encoding:UTF-8>
* #<Encoding:US-ASCII>
*
* See {String Encoding}[rdoc-ref:encodings.rdoc@String+Encoding].
* See {String Encoding}[rdoc-ref:ruby/encodings.rdoc@String+Encoding].
*
* Returns an enumerator if no block is given.
*/
Expand Down Expand Up @@ -3491,7 +3491,7 @@ dir_collect(VALUE dir)
* Dir.entries('/example', encoding: 'US-ASCII').first.encoding
* # => #<Encoding:US-ASCII>
*
* See {String Encoding}[rdoc-ref:encodings.rdoc@String+Encoding].
* See {String Encoding}[rdoc-ref:ruby/encodings.rdoc@String+Encoding].
*
* Raises an exception if the directory does not exist.
*/
Expand Down Expand Up @@ -3588,7 +3588,7 @@ dir_collect_children(VALUE dir)
* Dir.children('/example', encoding: 'US-ASCII').first.encoding
* # => #<Encoding:US-ASCII>
*
* See {String Encoding}[rdoc-ref:encodings.rdoc@String+Encoding].
* See {String Encoding}[rdoc-ref:ruby/encodings.rdoc@String+Encoding].
*
* Raises an exception if the directory does not exist.
*/
Expand Down
3 changes: 1 addition & 2 deletions doc/.document
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@ syntax
optparse
rdoc
regexp
rjit
yjit
ruby
jit_compilers
4 changes: 2 additions & 2 deletions doc/NEWS/NEWS-3.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ Outstanding ones only.

* Ractor

* New class added to enable parallel execution. See rdoc-ref:ractor.md for
* New class added to enable parallel execution. See rdoc-ref:ruby/ractor.md for
more details.

* Random
Expand Down Expand Up @@ -361,7 +361,7 @@ Outstanding ones only.

* Introduce Fiber.set_scheduler for intercepting blocking operations and
Fiber.scheduler for accessing the current scheduler. See
rdoc-ref:fiber.md for more details about what operations are supported and
rdoc-ref:ruby/fiber.md for more details about what operations are supported and
how to implement the scheduler hooks. [[Feature #16786]]

* Fiber.blocking? tells whether the current execution context is
Expand Down
4 changes: 2 additions & 2 deletions doc/_regexp.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ A regexp may be used:
most such methods accept an argument that may be either a string
or the (much more powerful) regexp.

See {Regexp Methods}[rdoc-ref:regexp/methods.rdoc].
See {Regexp Methods}[rdoc-ref:ruby/regexp/methods.rdoc].

== \Regexp Objects

Expand Down Expand Up @@ -814,7 +814,7 @@ Or by using <tt>\P</tt> (uppercase +P+):
/\P{Alpha}/.match('1') # => #<MatchData "1">
/\P{Alpha}/.match('a') # => nil

See {Unicode Properties}[rdoc-ref:regexp/unicode_properties.rdoc]
See {Unicode Properties}[rdoc-ref:ruby/regexp/unicode_properties.rdoc]
for regexps based on the numerous properties.

Some commonly-used properties correspond to POSIX bracket expressions:
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions doc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Explore the essential classes and modules:
Deep dive into Ruby's syntax and features:

- [Ruby Syntax](rdoc-ref:syntax.rdoc)
- [Exceptions](rdoc-ref:exceptions.md)
- [Implicit Conversions](rdoc-ref:implicit_conversion.rdoc)
- [Exceptions](rdoc-ref:ruby/exceptions.md)
- [Implicit Conversions](rdoc-ref:ruby/implicit_conversion.rdoc)

## Standard Libraries

Expand All @@ -44,7 +44,7 @@ There are some standard libraries included in Ruby that are also commonly used,

Use the following links to access the comprehensive set of libraries included with Ruby:

- [Standard Library Documentation](rdoc-ref:standard_library.rdoc)
- [Standard Library Documentation](rdoc-ref:ruby/standard_library.rdoc)
- [Maintainers](rdoc-ref:maintainers.md)

## Contribute to Ruby
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions doc/encodings.rdoc → doc/ruby/encodings.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,15 @@ A Ruby String object has an encoding that is an instance of class \Encoding.
The encoding may be retrieved by method String#encoding.

The default encoding for a string literal is the script encoding;
see {Script Encoding}[rdoc-ref:encodings.rdoc@Script+Encoding].
see {Script Encoding}[rdoc-ref:ruby/encodings.rdoc@Script+Encoding].

's'.encoding # => #<Encoding:UTF-8>

The default encoding for a string created with method String.new is:

- For a \String object argument, the encoding of that string.
- For a string literal, the script encoding;
see {Script Encoding}[rdoc-ref:encodings.rdoc@Script+Encoding].
see {Script Encoding}[rdoc-ref:ruby/encodings.rdoc@Script+Encoding].

In either case, any encoding may be specified:

Expand Down Expand Up @@ -192,7 +192,7 @@ The default encoding for these, however, is:

- US-ASCII, if all characters are US-ASCII.
- The script encoding, otherwise;
see (Script Encoding)[rdoc-ref:encodings.rdoc@Script+Encoding].
see (Script Encoding)[rdoc-ref:ruby/encodings.rdoc@Script+Encoding].

== Filesystem \Encoding

Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -45,42 +45,42 @@ The links lead to the details and examples.
=== \Integer Type Specifiers

- +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:ruby/format_specifications.rdoc@Specifiers+b+and+B].
- +d+, +i+, or +u+ (all are identical):
Format +argument+ as a decimal integer.
See {Specifier d}[rdoc-ref:format_specifications.rdoc@Specifier+d].
See {Specifier d}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+d].
- +o+: Format +argument+ as an octal integer.
See {Specifier o}[rdoc-ref:format_specifications.rdoc@Specifier+o].
See {Specifier o}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+o].
- +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:ruby/format_specifications.rdoc@Specifiers+x+and+X].

=== Floating-Point Type Specifiers

- +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:ruby/format_specifications.rdoc@Specifiers+a+and+A].
- +e+ or +E+: Format +argument+ in scientific notation.
See {Specifiers e and E}[rdoc-ref:format_specifications.rdoc@Specifiers+e+and+E].
See {Specifiers e and E}[rdoc-ref:ruby/format_specifications.rdoc@Specifiers+e+and+E].
- +f+: Format +argument+ as a decimal floating-point number.
See {Specifier f}[rdoc-ref:format_specifications.rdoc@Specifier+f].
See {Specifier f}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+f].
- +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:ruby/format_specifications.rdoc@Specifiers+g+and+G].

=== Other Type Specifiers

- +c+: Format +argument+ as a character.
See {Specifier c}[rdoc-ref:format_specifications.rdoc@Specifier+c].
See {Specifier c}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+c].
- +p+: Format +argument+ as a string via <tt>argument.inspect</tt>.
See {Specifier p}[rdoc-ref:format_specifications.rdoc@Specifier+p].
See {Specifier p}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+p].
- +s+: Format +argument+ as a string via <tt>argument.to_s</tt>.
See {Specifier s}[rdoc-ref:format_specifications.rdoc@Specifier+s].
See {Specifier s}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+s].
- <tt>%</tt>: Format +argument+ (<tt>'%'</tt>) as a single percent character.
See {Specifier %}[rdoc-ref:format_specifications.rdoc@Specifier+-25].
See {Specifier %}[rdoc-ref:ruby/format_specifications.rdoc@Specifier+-25].

== Flags

The effect of a flag may vary greatly among type specifiers.
These remarks are general in nature.
See {type-specific details}[rdoc-ref:format_specifications.rdoc@Type+Specifier+Details+and+Examples].
See {type-specific details}[rdoc-ref:ruby/format_specifications.rdoc@Type+Specifier+Details+and+Examples].

Multiple flags may be given with single type specifier;
order does not matter.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions doc/ruby/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ Option `--encoding` is an alias for
Option `--external-encoding`
sets the default external encoding for the invoked Ruby program;
for values of +encoding+,
see {Encoding: Names and Aliases}[rdoc-ref:encodings.rdoc@Names+and+Aliases].
see {Encoding: Names and Aliases}[rdoc-ref:ruby/encodings.rdoc@Names+and+Aliases].

```sh
$ ruby -e 'puts Encoding::default_external'
Expand All @@ -662,7 +662,7 @@ For a shorter help message, use option `-h`.
Option `--internal-encoding`
sets the default internal encoding for the invoked Ruby program;
for values of +encoding+,
see {Encoding: Names and Aliases}[rdoc-ref:encodings.rdoc@Names+and+Aliases].
see {Encoding: Names and Aliases}[rdoc-ref:ruby/encodings.rdoc@Names+and+Aliases].

```sh
$ ruby -e 'puts Encoding::default_internal.nil?'
Expand Down
2 changes: 1 addition & 1 deletion doc/packed_data.rdoc → doc/ruby/packed_data.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Any directive may be followed by either of these modifiers:
'AB'.unpack('C3') # => [65, 66, nil]

Note: Directives in <tt>%w[A a Z m]</tt> use +count+ differently;
see {String Directives}[rdoc-ref:packed_data.rdoc@String+Directives].
see {String Directives}[rdoc-ref:ruby/packed_data.rdoc@String+Directives].

If elements don't fit the provided directive, only least significant bits are encoded:

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ the only required part is the conversion specifier, so we begin with that.
t = Time.now # => 2022-06-29 07:10:20.3230914 -0500
t.strftime('%N') # => "323091400" # Default.

Use {width specifiers}[rdoc-ref:strftime_formatting.rdoc@Width+Specifiers]
Use {width specifiers}[rdoc-ref:ruby/strftime_formatting.rdoc@Width+Specifiers]
to adjust units:

t.strftime('%3N') # => "323" # Milliseconds.
Expand Down Expand Up @@ -523,5 +523,5 @@ ISO 8601 date and any ISO 8601 time,
separated by the letter +T+.

For the relevant +strftime+ formats, see
{Dates}[rdoc-ref:strftime_formatting.rdoc@Dates]
and {Times}[rdoc-ref:strftime_formatting.rdoc@Times] above.
{Dates}[rdoc-ref:ruby/strftime_formatting.rdoc@Dates]
and {Times}[rdoc-ref:ruby/strftime_formatting.rdoc@Times] above.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion doc/string/encode.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ interprets +self+ using +src_encoding+, encodes the new string using +dst_encodi
t.encoding # => #<Encoding:UTF-8>

Optional keyword arguments +enc_opts+ specify encoding options;
see {Encoding Options}[rdoc-ref:encodings.rdoc@Encoding+Options].
see {Encoding Options}[rdoc-ref:ruby/encodings.rdoc@Encoding+Options].

Please note that, unless <code>invalid: :replace</code> option is
given, conversion from an encoding +enc+ to the same encoding +enc+
Expand Down
2 changes: 1 addition & 1 deletion doc/string/new.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ returns a copy of +string+ with the same encoding:
(Unlike \String.new,
a {string literal}[rdoc-ref:syntax/literals.rdoc@String+Literals] like <tt>''</tt> or a
{here document literal}[rdoc-ref:syntax/literals.rdoc@Here+Document+Literals]
always has {script encoding}[rdoc-ref:encodings.rdoc@Script+Encoding].)
always has {script encoding}[rdoc-ref:ruby/encodings.rdoc@Script+Encoding].)

With optional keyword argument +encoding+, returns a copy of +string+
with the specified encoding;
Expand Down
2 changes: 1 addition & 1 deletion doc/syntax/assignment.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ An uninitialized global variable has a value of +nil+.

Ruby has some special globals that behave differently depending on context
such as the regular expression match variables or that have a side-effect when
assigned to. See the {global variables documentation}[rdoc-ref:globals.rdoc]
assigned to. See the {global variables documentation}[rdoc-ref:ruby/globals.rdoc]
for details.

== Assignment Methods
Expand Down
Loading

0 comments on commit 6afe893

Please sign in to comment.