rbs 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +2 -5
- data/.github/workflows/ruby.yml +7 -8
- data/.github/workflows/typecheck.yml +37 -0
- data/CHANGELOG.md +65 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -11
- data/README.md +1 -0
- data/Rakefile +2 -2
- data/Steepfile +2 -2
- data/core/array.rbs +19 -49
- data/core/basic_object.rbs +2 -2
- data/core/comparable.rbs +17 -8
- data/core/complex.rbs +82 -43
- data/core/data.rbs +2 -4
- data/core/dir.rbs +635 -295
- data/core/enumerable.rbs +11 -18
- data/core/enumerator.rbs +37 -31
- data/core/errors.rbs +4 -0
- data/core/false_class.rbs +34 -15
- data/core/fiber.rbs +23 -0
- data/core/file.rbs +329 -120
- data/core/float.rbs +17 -32
- data/core/gc.rbs +17 -11
- data/core/hash.rbs +22 -44
- data/core/integer.rbs +82 -113
- data/core/io/buffer.rbs +90 -47
- data/core/io.rbs +54 -121
- data/core/kernel.rbs +442 -489
- data/core/match_data.rbs +55 -56
- data/core/module.rbs +45 -1
- data/core/nil_class.rbs +98 -35
- data/core/numeric.rbs +22 -32
- data/core/object_space/weak_key_map.rbs +102 -0
- data/core/process.rbs +1242 -655
- data/core/ractor.rbs +139 -120
- data/core/range.rbs +100 -4
- data/core/rational.rbs +0 -4
- data/core/rbs/unnamed/argf.rbs +16 -8
- data/core/rbs/unnamed/env_class.rbs +0 -24
- data/core/refinement.rbs +8 -0
- data/core/regexp.rbs +1149 -598
- data/core/ruby_vm.rbs +126 -12
- data/core/rubygems/platform.rbs +9 -0
- data/core/rubygems/rubygems.rbs +1 -1
- data/core/rubygems/version.rbs +5 -1
- data/core/set.rbs +20 -22
- data/core/signal.rbs +4 -4
- data/core/string.rbs +283 -230
- data/core/string_io.rbs +2 -14
- data/core/struct.rbs +404 -24
- data/core/symbol.rbs +1 -19
- data/core/thread.rbs +29 -12
- data/core/time.rbs +227 -104
- data/core/trace_point.rbs +2 -5
- data/core/true_class.rbs +54 -21
- data/core/warning.rbs +14 -11
- data/docs/data_and_struct.md +29 -0
- data/docs/gem.md +58 -0
- data/docs/syntax.md +3 -5
- data/docs/tools.md +1 -0
- data/ext/rbs_extension/lexer.c +643 -559
- data/ext/rbs_extension/lexer.re +5 -1
- data/ext/rbs_extension/parser.c +12 -3
- data/ext/rbs_extension/unescape.c +7 -47
- data/lib/rbs/cli/diff.rb +4 -1
- data/lib/rbs/cli/validate.rb +280 -0
- data/lib/rbs/cli.rb +2 -194
- data/lib/rbs/collection/config.rb +5 -6
- data/lib/rbs/collection/sources/git.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/diff.rb +7 -4
- data/lib/rbs/errors.rb +11 -0
- data/lib/rbs/test/errors.rb +10 -2
- data/lib/rbs/test/guaranteed.rb +2 -3
- data/lib/rbs/test/type_check.rb +15 -10
- data/lib/rbs/test.rb +3 -3
- data/lib/rbs/types.rb +29 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +136 -0
- data/lib/rbs/unit_test/type_assertions.rb +341 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/version.rb +1 -1
- data/sig/cli/validate.rbs +43 -0
- data/sig/diff.rbs +3 -1
- data/sig/errors.rbs +8 -0
- data/sig/rbs.rbs +1 -1
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/types.rbs +6 -1
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +28 -0
- data/sig/unit_test/type_assertions.rbs +194 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/stdlib/base64/0/base64.rbs +307 -45
- data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
- data/stdlib/coverage/0/coverage.rbs +2 -2
- data/stdlib/csv/0/csv.rbs +25 -55
- data/stdlib/date/0/date.rbs +1 -43
- data/stdlib/date/0/date_time.rbs +1 -13
- data/stdlib/delegate/0/delegator.rbs +186 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +98 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
- data/stdlib/erb/0/erb.rbs +2 -2
- data/stdlib/fileutils/0/fileutils.rbs +0 -19
- data/stdlib/io-console/0/io-console.rbs +12 -1
- data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
- data/stdlib/json/0/json.rbs +320 -81
- data/stdlib/logger/0/logger.rbs +9 -5
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +6 -6
- data/stdlib/monitor/0/monitor.rbs +78 -0
- data/stdlib/net-http/0/net-http.rbs +1880 -543
- data/stdlib/objspace/0/objspace.rbs +19 -13
- data/stdlib/openssl/0/openssl.rbs +508 -127
- data/stdlib/optparse/0/optparse.rbs +25 -11
- data/stdlib/pathname/0/pathname.rbs +1 -1
- data/stdlib/pp/0/pp.rbs +2 -5
- data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
- data/stdlib/pstore/0/pstore.rbs +2 -4
- data/stdlib/rdoc/0/comment.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +4 -2
- data/stdlib/socket/0/socket.rbs +2 -2
- data/stdlib/socket/0/unix_socket.rbs +2 -2
- data/stdlib/strscan/0/string_scanner.rbs +3 -2
- data/stdlib/tempfile/0/tempfile.rbs +1 -1
- data/stdlib/uri/0/common.rbs +245 -123
- metadata +24 -4
- data/lib/rbs/test/spy.rb +0 -6
data/core/file.rbs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Class File extends module FileTest, supporting such singleton methods as
|
|
5
5
|
# `File.exist?`.
|
|
6
6
|
#
|
|
7
|
-
#
|
|
7
|
+
# ## About the Examples
|
|
8
8
|
#
|
|
9
9
|
# Many examples here use these variables:
|
|
10
10
|
#
|
|
@@ -643,7 +643,7 @@
|
|
|
643
643
|
# of an actual file in the underlying platform.
|
|
644
644
|
#
|
|
645
645
|
# Note that file permissions are quite different from the *mode* of a file
|
|
646
|
-
# stream (File object).
|
|
646
|
+
# stream (File object).
|
|
647
647
|
#
|
|
648
648
|
# In a File object, the permissions are available thus, where method `mode`,
|
|
649
649
|
# despite its name, returns permissions:
|
|
@@ -697,8 +697,7 @@
|
|
|
697
697
|
#
|
|
698
698
|
# * Inherits from [class IO](rdoc-ref:IO@What-27s+Here), in particular,
|
|
699
699
|
# methods for creating, reading, and writing files
|
|
700
|
-
# * Includes
|
|
701
|
-
# provides dozens of additional methods.
|
|
700
|
+
# * Includes module FileTest, which provides dozens of additional methods.
|
|
702
701
|
#
|
|
703
702
|
#
|
|
704
703
|
# Here, class File provides methods that are useful for:
|
|
@@ -932,8 +931,15 @@ class File < IO
|
|
|
932
931
|
|
|
933
932
|
# <!--
|
|
934
933
|
# rdoc-file=file.c
|
|
935
|
-
# - birthtime(
|
|
934
|
+
# - File.birthtime(file_name) -> time
|
|
936
935
|
# -->
|
|
936
|
+
# Returns the birth time for the named file.
|
|
937
|
+
#
|
|
938
|
+
# *file_name* can be an IO object.
|
|
939
|
+
#
|
|
940
|
+
# File.birthtime("testfile") #=> Wed Apr 09 08:53:13 CDT 2003
|
|
941
|
+
#
|
|
942
|
+
# If the platform doesn't have birthtime, raises NotImplementedError.
|
|
937
943
|
#
|
|
938
944
|
def self.birthtime: (string | _ToPath | IO file_name) -> Time
|
|
939
945
|
|
|
@@ -1441,7 +1447,7 @@ class File < IO
|
|
|
1441
1447
|
# -->
|
|
1442
1448
|
# Returns the string representation of the path
|
|
1443
1449
|
#
|
|
1444
|
-
# File.path(
|
|
1450
|
+
# File.path(File::NULL) #=> "/dev/null"
|
|
1445
1451
|
# File.path(Pathname.new("/tmp")) #=> "/tmp"
|
|
1446
1452
|
#
|
|
1447
1453
|
def self.path: (string | _ToPath path) -> String
|
|
@@ -1915,8 +1921,11 @@ class File < IO
|
|
|
1915
1921
|
|
|
1916
1922
|
# <!--
|
|
1917
1923
|
# rdoc-file=file.c
|
|
1918
|
-
# - size
|
|
1924
|
+
# - file.size -> integer
|
|
1919
1925
|
# -->
|
|
1926
|
+
# Returns the size of *file* in bytes.
|
|
1927
|
+
#
|
|
1928
|
+
# File.new("testfile").size #=> 66
|
|
1920
1929
|
#
|
|
1921
1930
|
def size: () -> Integer
|
|
1922
1931
|
|
|
@@ -1972,170 +1981,375 @@ File::SEPARATOR: String
|
|
|
1972
1981
|
File::Separator: String
|
|
1973
1982
|
|
|
1974
1983
|
# <!-- rdoc-file=file.c -->
|
|
1975
|
-
# File::Constants
|
|
1976
|
-
#
|
|
1977
|
-
#
|
|
1984
|
+
# Module `File::Constants` defines file-related constants.
|
|
1985
|
+
#
|
|
1986
|
+
# There are two families of constants here:
|
|
1987
|
+
#
|
|
1988
|
+
# * Those having to do with [file
|
|
1989
|
+
# access](rdoc-ref:File::Constants@File+Access).
|
|
1990
|
+
# * Those having to do with [filename
|
|
1991
|
+
# globbing](rdoc-ref:File::Constants@Filename+Globbing+Constants+-28File-3A-
|
|
1992
|
+
# 3AFNM_-2A-29).
|
|
1993
|
+
#
|
|
1994
|
+
#
|
|
1995
|
+
# File constants defined for the local process may be retrieved with method
|
|
1996
|
+
# File::Constants.constants:
|
|
1997
|
+
#
|
|
1998
|
+
# File::Constants.constants.take(5)
|
|
1999
|
+
# # => [:RDONLY, :WRONLY, :RDWR, :APPEND, :CREAT]
|
|
2000
|
+
#
|
|
2001
|
+
# ## File Access
|
|
2002
|
+
#
|
|
2003
|
+
# File-access constants may be used with optional argument `mode` in calls to
|
|
2004
|
+
# the following methods:
|
|
2005
|
+
#
|
|
2006
|
+
# * File.new.
|
|
2007
|
+
# * File.open.
|
|
2008
|
+
# * IO.for_fd.
|
|
2009
|
+
# * IO.new.
|
|
2010
|
+
# * IO.open.
|
|
2011
|
+
# * IO.popen.
|
|
2012
|
+
# * IO.reopen.
|
|
2013
|
+
# * IO.sysopen.
|
|
2014
|
+
# * StringIO.new.
|
|
2015
|
+
# * StringIO.open.
|
|
2016
|
+
# * StringIO#reopen.
|
|
2017
|
+
#
|
|
2018
|
+
#
|
|
2019
|
+
# ### Read/Write Access
|
|
2020
|
+
#
|
|
2021
|
+
# Read-write access for a stream may be specified by a file-access constant.
|
|
2022
|
+
#
|
|
2023
|
+
# The constant may be specified as part of a bitwise OR of other such constants.
|
|
2024
|
+
#
|
|
2025
|
+
# Any combination of the constants in this section may be specified.
|
|
2026
|
+
#
|
|
2027
|
+
# #### File::RDONLY
|
|
2028
|
+
#
|
|
2029
|
+
# Flag File::RDONLY specifies the the stream should be opened for reading only:
|
|
2030
|
+
#
|
|
2031
|
+
# filepath = '/tmp/t.tmp'
|
|
2032
|
+
# f = File.new(filepath, File::RDONLY)
|
|
2033
|
+
# f.write('Foo') # Raises IOError (not opened for writing).
|
|
2034
|
+
#
|
|
2035
|
+
# #### File::WRONLY
|
|
2036
|
+
#
|
|
2037
|
+
# Flag File::WRONLY specifies that the stream should be opened for writing only:
|
|
2038
|
+
#
|
|
2039
|
+
# f = File.new(filepath, File::WRONLY)
|
|
2040
|
+
# f.read # Raises IOError (not opened for reading).
|
|
2041
|
+
#
|
|
2042
|
+
# #### File::RDWR
|
|
2043
|
+
#
|
|
2044
|
+
# Flag File::RDWR specifies that the stream should be opened for both reading
|
|
2045
|
+
# and writing:
|
|
2046
|
+
#
|
|
2047
|
+
# f = File.new(filepath, File::RDWR)
|
|
2048
|
+
# f.write('Foo') # => 3
|
|
2049
|
+
# f.rewind # => 0
|
|
2050
|
+
# f.read # => "Foo"
|
|
2051
|
+
#
|
|
2052
|
+
# ### File Positioning
|
|
2053
|
+
#
|
|
2054
|
+
# #### File::APPEND
|
|
2055
|
+
#
|
|
2056
|
+
# Flag File::APPEND specifies that the stream should be opened in append mode.
|
|
2057
|
+
#
|
|
2058
|
+
# Before each write operation, the position is set to end-of-stream. The
|
|
2059
|
+
# modification of the position and the following write operation are performed
|
|
2060
|
+
# as a single atomic step.
|
|
2061
|
+
#
|
|
2062
|
+
# #### File::TRUNC
|
|
2063
|
+
#
|
|
2064
|
+
# Flag File::TRUNC specifies that the stream should be truncated at its
|
|
2065
|
+
# beginning. If the file exists and is successfully opened for writing, it is to
|
|
2066
|
+
# be truncated to position zero; its ctime and mtime are updated.
|
|
2067
|
+
#
|
|
2068
|
+
# There is no effect on a FIFO special file or a terminal device. The effect on
|
|
2069
|
+
# other file types is implementation-defined. The result of using File::TRUNC
|
|
2070
|
+
# with File::RDONLY is undefined.
|
|
2071
|
+
#
|
|
2072
|
+
# ### Creating and Preserving
|
|
2073
|
+
#
|
|
2074
|
+
# #### File::CREAT
|
|
2075
|
+
#
|
|
2076
|
+
# Flag File::CREAT specifies that the stream should be created if it does not
|
|
2077
|
+
# already exist.
|
|
2078
|
+
#
|
|
2079
|
+
# If the file exists:
|
|
2080
|
+
#
|
|
2081
|
+
# - Raise an exception if File::EXCL is also specified.
|
|
2082
|
+
# - Otherwise, do nothing.
|
|
2083
|
+
#
|
|
2084
|
+
# If the file does not exist, then it is created. Upon successful completion,
|
|
2085
|
+
# the atime, ctime, and mtime of the file are updated, and the ctime and mtime
|
|
2086
|
+
# of the parent directory are updated.
|
|
2087
|
+
#
|
|
2088
|
+
# #### File::EXCL
|
|
2089
|
+
#
|
|
2090
|
+
# Flag File::EXCL specifies that the stream should not already exist; If flags
|
|
2091
|
+
# File::CREAT and File::EXCL are both specified and the stream already exists,
|
|
2092
|
+
# an exception is raised.
|
|
2093
|
+
#
|
|
2094
|
+
# The check for the existence and creation of the file is performed as an atomic
|
|
2095
|
+
# operation.
|
|
2096
|
+
#
|
|
2097
|
+
# If both File::EXCL and File::CREAT are specified and the path names a symbolic
|
|
2098
|
+
# link, an exception is raised regardless of the contents of the symbolic link.
|
|
2099
|
+
#
|
|
2100
|
+
# If File::EXCL is specified and File::CREAT is not specified, the result is
|
|
2101
|
+
# undefined.
|
|
2102
|
+
#
|
|
2103
|
+
# ### POSIX File Constants
|
|
2104
|
+
#
|
|
2105
|
+
# Some file-access constants are defined only on POSIX-compliant systems; those
|
|
2106
|
+
# are:
|
|
2107
|
+
#
|
|
2108
|
+
# * File::SYNC.
|
|
2109
|
+
# * File::DSYNC.
|
|
2110
|
+
# * File::RSYNC.
|
|
2111
|
+
# * File::DIRECT.
|
|
2112
|
+
# * File::NOATIME.
|
|
2113
|
+
# * File::NOCTTY.
|
|
2114
|
+
# * File::NOFOLLOW.
|
|
2115
|
+
# * File::TMPFILE.
|
|
2116
|
+
#
|
|
2117
|
+
#
|
|
2118
|
+
# #### File::SYNC, File::RSYNC, and File::DSYNC
|
|
2119
|
+
#
|
|
2120
|
+
# Flag File::SYNC, File::RSYNC, or File::DSYNC specifies synchronization of I/O
|
|
2121
|
+
# operations with the underlying file system.
|
|
2122
|
+
#
|
|
2123
|
+
# These flags are valid only for POSIX-compliant systems.
|
|
2124
|
+
#
|
|
2125
|
+
# * File::SYNC specifies that all write operations (both data and metadata)
|
|
2126
|
+
# are immediately to be flushed to the underlying storage device. This means
|
|
2127
|
+
# that the data is written to the storage device, and the file's metadata
|
|
2128
|
+
# (e.g., file size, timestamps, permissions) are also synchronized. This
|
|
2129
|
+
# guarantees that data is safely stored on the storage medium before
|
|
2130
|
+
# returning control to the calling program. This flag can have a significant
|
|
2131
|
+
# impact on performance since it requires synchronous writes, which can be
|
|
2132
|
+
# slower compared to asynchronous writes.
|
|
2133
|
+
#
|
|
2134
|
+
# * File::RSYNC specifies that any read operations on the file will not return
|
|
2135
|
+
# until all outstanding write operations (those that have been issued but
|
|
2136
|
+
# not completed) are also synchronized. This is useful when you want to read
|
|
2137
|
+
# the most up-to-date data, which may still be in the process of being
|
|
2138
|
+
# written.
|
|
2139
|
+
#
|
|
2140
|
+
# * File::DSYNC specifies that all *data* write operations are immediately to
|
|
2141
|
+
# be flushed to the underlying storage device; this differs from File::SYNC,
|
|
2142
|
+
# which requires that *metadata* also be synchronized.
|
|
2143
|
+
#
|
|
2144
|
+
#
|
|
2145
|
+
# Note that the behavior of these flags may vary slightly depending on the
|
|
2146
|
+
# operating system and filesystem being used. Additionally, using these flags
|
|
2147
|
+
# can have an impact on performance due to the synchronous nature of the I/O
|
|
2148
|
+
# operations, so they should be used judiciously, especially in
|
|
2149
|
+
# performance-critical applications.
|
|
2150
|
+
#
|
|
2151
|
+
# #### File::NOCTTY
|
|
2152
|
+
#
|
|
2153
|
+
# Flag File::NOCTTY specifies that if the stream is a terminal device, that
|
|
2154
|
+
# device does not become the controlling terminal for the process.
|
|
2155
|
+
#
|
|
2156
|
+
# Defined only for POSIX-compliant systems.
|
|
2157
|
+
#
|
|
2158
|
+
# #### File::DIRECT
|
|
2159
|
+
#
|
|
2160
|
+
# Flag File::DIRECT requests that cache effects of the I/O to and from the
|
|
2161
|
+
# stream be minimized.
|
|
2162
|
+
#
|
|
2163
|
+
# Defined only for POSIX-compliant systems.
|
|
2164
|
+
#
|
|
2165
|
+
# #### File::NOATIME
|
|
2166
|
+
#
|
|
2167
|
+
# Flag File::NOATIME specifies that act of opening the stream should not modify
|
|
2168
|
+
# its access time (atime).
|
|
2169
|
+
#
|
|
2170
|
+
# Defined only for POSIX-compliant systems.
|
|
2171
|
+
#
|
|
2172
|
+
# #### File::NOFOLLOW
|
|
2173
|
+
#
|
|
2174
|
+
# Flag File::NOFOLLOW specifies that if path is a symbolic link, it should not
|
|
2175
|
+
# be followed.
|
|
2176
|
+
#
|
|
2177
|
+
# Defined only for POSIX-compliant systems.
|
|
2178
|
+
#
|
|
2179
|
+
# #### File::TMPFILE
|
|
2180
|
+
#
|
|
2181
|
+
# Flag File::TMPFILE specifies that the opened stream should be a new temporary
|
|
2182
|
+
# file.
|
|
2183
|
+
#
|
|
2184
|
+
# Defined only for POSIX-compliant systems.
|
|
2185
|
+
#
|
|
2186
|
+
# ### Other File-Access Constants
|
|
2187
|
+
#
|
|
2188
|
+
# #### File::NONBLOCK
|
|
2189
|
+
#
|
|
2190
|
+
# When possible, the file is opened in nonblocking mode. Neither the open
|
|
2191
|
+
# operation nor any subsequent I/O operations on the file will cause the calling
|
|
2192
|
+
# process to wait.
|
|
2193
|
+
#
|
|
2194
|
+
# #### File::BINARY
|
|
2195
|
+
#
|
|
2196
|
+
# Flag File::BINARY specifies that the stream is to be accessed in binary mode.
|
|
2197
|
+
#
|
|
2198
|
+
# #### File::SHARE_DELETE (Windows Only)
|
|
2199
|
+
#
|
|
2200
|
+
# Flag File::SHARE_DELETE enables other processes to open the stream with delete
|
|
2201
|
+
# access.
|
|
2202
|
+
#
|
|
2203
|
+
# If the stream is opened for (local) delete access without File::SHARE_DELETE,
|
|
2204
|
+
# and another process attempts to open it with delete access, the attempt fails
|
|
2205
|
+
# and the stream is not opened for that process.
|
|
2206
|
+
#
|
|
2207
|
+
# ## Locking
|
|
2208
|
+
#
|
|
2209
|
+
# Four file constants relate to stream locking; see File#flock:
|
|
2210
|
+
#
|
|
2211
|
+
# #### File::LOCK_EX
|
|
2212
|
+
#
|
|
2213
|
+
# Flag File::LOCK_EX specifies an exclusive lock; only one process a a time may
|
|
2214
|
+
# lock the stream.
|
|
2215
|
+
#
|
|
2216
|
+
# #### File::LOCK_NB
|
|
2217
|
+
#
|
|
2218
|
+
# Flag File::LOCK_NB specifies non-blocking locking for the stream; may be
|
|
2219
|
+
# combined with File::LOCK_EX or File::LOCK_SH.
|
|
2220
|
+
#
|
|
2221
|
+
# #### File::LOCK_SH
|
|
2222
|
+
#
|
|
2223
|
+
# Flag File::LOCK_SH specifies that multiple processes may lock the stream at
|
|
2224
|
+
# the same time.
|
|
1978
2225
|
#
|
|
1979
|
-
#
|
|
1980
|
-
# constant is not defined.
|
|
2226
|
+
# #### File::LOCK_UN
|
|
1981
2227
|
#
|
|
1982
|
-
#
|
|
1983
|
-
#
|
|
2228
|
+
# Flag File::LOCK_UN specifies that the stream is not to be locked.
|
|
2229
|
+
#
|
|
2230
|
+
# ## Filename Globbing Constants (File::FNM_*)
|
|
2231
|
+
#
|
|
2232
|
+
# Filename-globbing constants may be used with optional argument `flags` in
|
|
2233
|
+
# calls to the following methods:
|
|
2234
|
+
#
|
|
2235
|
+
# * Dir.glob.
|
|
2236
|
+
# * File.fnmatch.
|
|
2237
|
+
# * Pathname#fnmatch.
|
|
2238
|
+
# * Pathname.glob.
|
|
2239
|
+
# * Pathname#glob.
|
|
2240
|
+
#
|
|
2241
|
+
#
|
|
2242
|
+
# The constants are:
|
|
2243
|
+
#
|
|
2244
|
+
# #### File::FNM_CASEFOLD
|
|
2245
|
+
#
|
|
2246
|
+
# Flag File::FNM_CASEFOLD makes patterns case insensitive for File.fnmatch (but
|
|
2247
|
+
# not Dir.glob).
|
|
2248
|
+
#
|
|
2249
|
+
# #### File::FNM_DOTMATCH
|
|
2250
|
+
#
|
|
2251
|
+
# Flag File::FNM_DOTMATCH makes the `'*'` pattern match a filename starting with
|
|
2252
|
+
# `'.'`.
|
|
2253
|
+
#
|
|
2254
|
+
# #### File::FNM_EXTGLOB
|
|
2255
|
+
#
|
|
2256
|
+
# Flag File::FNM_EXTGLOB enables pattern `'{*a*,*b*}'`, which matches pattern
|
|
2257
|
+
# '*a*' and pattern '*b*'; behaves like a [regexp union](rdoc-ref:Regexp.union)
|
|
2258
|
+
# (e.g., `'(?:*a*|*b*)'`):
|
|
2259
|
+
#
|
|
2260
|
+
# pattern = '{LEGAL,BSDL}'
|
|
2261
|
+
# Dir.glob(pattern) # => ["LEGAL", "BSDL"]
|
|
2262
|
+
# Pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]
|
|
2263
|
+
# pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]
|
|
2264
|
+
#
|
|
2265
|
+
# #### File::FNM_NOESCAPE
|
|
2266
|
+
#
|
|
2267
|
+
# Flag File::FNM_NOESCAPE disables `'\'` escaping.
|
|
2268
|
+
#
|
|
2269
|
+
# #### File::FNM_PATHNAME
|
|
2270
|
+
#
|
|
2271
|
+
# Flag File::FNM_PATHNAME specifies that patterns `'*'` and `'?'` do not match
|
|
2272
|
+
# the directory separator (the value of constant File::SEPARATOR).
|
|
2273
|
+
#
|
|
2274
|
+
# #### File::FNM_SHORTNAME (Windows Only)
|
|
2275
|
+
#
|
|
2276
|
+
# Flag File::FNM_SHORTNAME Allows patterns to match short names if they exist.
|
|
2277
|
+
#
|
|
2278
|
+
# #### File::FNM_SYSCASE
|
|
2279
|
+
#
|
|
2280
|
+
# Flag File::FNM_SYSCASE specifies that case sensitivity is the same as in the
|
|
2281
|
+
# underlying operating system; effective for File.fnmatch, but not Dir.glob.
|
|
2282
|
+
#
|
|
2283
|
+
# ## Other Constants
|
|
2284
|
+
#
|
|
2285
|
+
# #### File::NULL
|
|
2286
|
+
#
|
|
2287
|
+
# Flag File::NULL contains the string value of the null device:
|
|
2288
|
+
#
|
|
2289
|
+
# * On a Unix-like OS, `'/dev/null'`.
|
|
2290
|
+
# * On Windows, `'NUL'`.
|
|
1984
2291
|
#
|
|
1985
2292
|
module File::Constants
|
|
1986
2293
|
end
|
|
1987
2294
|
|
|
1988
|
-
# <!-- rdoc-file=file.c -->
|
|
1989
|
-
# append on each write
|
|
1990
|
-
#
|
|
1991
2295
|
File::Constants::APPEND: Integer
|
|
1992
2296
|
|
|
1993
|
-
# <!-- rdoc-file=file.c -->
|
|
1994
|
-
# disable line code conversion
|
|
1995
|
-
#
|
|
1996
2297
|
File::Constants::BINARY: Integer
|
|
1997
2298
|
|
|
1998
|
-
# <!-- rdoc-file=file.c -->
|
|
1999
|
-
# create file if it does not exist
|
|
2000
|
-
#
|
|
2001
2299
|
File::Constants::CREAT: Integer
|
|
2002
2300
|
|
|
2003
|
-
# <!-- rdoc-file=file.c -->
|
|
2004
|
-
# Try to minimize cache effects of the I/O to and from this file.
|
|
2005
|
-
#
|
|
2006
2301
|
File::Constants::DIRECT: Integer
|
|
2007
2302
|
|
|
2008
|
-
# <!-- rdoc-file=file.c -->
|
|
2009
|
-
# any write operation perform synchronously except some meta data
|
|
2010
|
-
#
|
|
2011
2303
|
File::Constants::DSYNC: Integer
|
|
2012
2304
|
|
|
2013
|
-
# <!-- rdoc-file=file.c -->
|
|
2014
|
-
# error if CREAT and the file exists
|
|
2015
|
-
#
|
|
2016
2305
|
File::Constants::EXCL: Integer
|
|
2017
2306
|
|
|
2018
|
-
# <!-- rdoc-file=dir.c -->
|
|
2019
|
-
# Makes File.fnmatch patterns case insensitive (but not Dir.glob patterns).
|
|
2020
|
-
#
|
|
2021
2307
|
File::Constants::FNM_CASEFOLD: Integer
|
|
2022
2308
|
|
|
2023
|
-
# <!-- rdoc-file=dir.c -->
|
|
2024
|
-
# The '*' wildcard matches filenames starting with "." in File.fnmatch and
|
|
2025
|
-
# Dir.glob patterns
|
|
2026
|
-
#
|
|
2027
2309
|
File::Constants::FNM_DOTMATCH: Integer
|
|
2028
2310
|
|
|
2029
|
-
# <!-- rdoc-file=dir.c -->
|
|
2030
|
-
# Allows file globbing through "{a,b}" in File.fnmatch patterns.
|
|
2031
|
-
#
|
|
2032
2311
|
File::Constants::FNM_EXTGLOB: Integer
|
|
2033
2312
|
|
|
2034
|
-
# <!-- rdoc-file=dir.c -->
|
|
2035
|
-
# Disables escapes in File.fnmatch and Dir.glob patterns
|
|
2036
|
-
#
|
|
2037
2313
|
File::Constants::FNM_NOESCAPE: Integer
|
|
2038
2314
|
|
|
2039
|
-
# <!-- rdoc-file=dir.c -->
|
|
2040
|
-
# Wildcards in File.fnmatch and Dir.glob patterns do not match directory
|
|
2041
|
-
# separators
|
|
2042
|
-
#
|
|
2043
2315
|
File::Constants::FNM_PATHNAME: Integer
|
|
2044
2316
|
|
|
2045
|
-
# <!-- rdoc-file=dir.c -->
|
|
2046
|
-
# Makes patterns to match short names if existing. Valid only on Microsoft
|
|
2047
|
-
# Windows.
|
|
2048
|
-
#
|
|
2049
2317
|
File::Constants::FNM_SHORTNAME: Integer
|
|
2050
2318
|
|
|
2051
|
-
# <!-- rdoc-file=dir.c -->
|
|
2052
|
-
# System default case insensitiveness, equals to FNM_CASEFOLD or 0.
|
|
2053
|
-
#
|
|
2054
2319
|
File::Constants::FNM_SYSCASE: Integer
|
|
2055
2320
|
|
|
2056
|
-
# <!-- rdoc-file=file.c -->
|
|
2057
|
-
# exclusive lock. see File#flock
|
|
2058
|
-
#
|
|
2059
2321
|
File::Constants::LOCK_EX: Integer
|
|
2060
2322
|
|
|
2061
|
-
# <!-- rdoc-file=file.c -->
|
|
2062
|
-
# non-blocking lock. used with LOCK_SH or LOCK_EX. see File#flock
|
|
2063
|
-
#
|
|
2064
2323
|
File::Constants::LOCK_NB: Integer
|
|
2065
2324
|
|
|
2066
|
-
# <!-- rdoc-file=file.c -->
|
|
2067
|
-
# shared lock. see File#flock
|
|
2068
|
-
#
|
|
2069
2325
|
File::Constants::LOCK_SH: Integer
|
|
2070
2326
|
|
|
2071
|
-
# <!-- rdoc-file=file.c -->
|
|
2072
|
-
# unlock. see File#flock
|
|
2073
|
-
#
|
|
2074
2327
|
File::Constants::LOCK_UN: Integer
|
|
2075
2328
|
|
|
2076
|
-
# <!-- rdoc-file=file.c -->
|
|
2077
|
-
# do not change atime
|
|
2078
|
-
#
|
|
2079
2329
|
File::Constants::NOATIME: Integer
|
|
2080
2330
|
|
|
2081
|
-
# <!-- rdoc-file=file.c -->
|
|
2082
|
-
# not to make opened IO the controlling terminal device
|
|
2083
|
-
#
|
|
2084
2331
|
File::Constants::NOCTTY: Integer
|
|
2085
2332
|
|
|
2086
|
-
# <!-- rdoc-file=file.c -->
|
|
2087
|
-
# do not follow symlinks
|
|
2088
|
-
#
|
|
2089
2333
|
File::Constants::NOFOLLOW: Integer
|
|
2090
2334
|
|
|
2091
|
-
# <!-- rdoc-file=file.c -->
|
|
2092
|
-
# do not block on open or for data to become available
|
|
2093
|
-
#
|
|
2094
2335
|
File::Constants::NONBLOCK: Integer
|
|
2095
2336
|
|
|
2096
|
-
# <!-- rdoc-file=file.c -->
|
|
2097
|
-
# Name of the null device
|
|
2098
|
-
#
|
|
2099
2337
|
File::Constants::NULL: String
|
|
2100
2338
|
|
|
2101
|
-
# <!-- rdoc-file=file.c -->
|
|
2102
|
-
# open for reading only
|
|
2103
|
-
#
|
|
2104
2339
|
File::Constants::RDONLY: Integer
|
|
2105
2340
|
|
|
2106
|
-
# <!-- rdoc-file=file.c -->
|
|
2107
|
-
# open for reading and writing
|
|
2108
|
-
#
|
|
2109
2341
|
File::Constants::RDWR: Integer
|
|
2110
2342
|
|
|
2111
|
-
# <!-- rdoc-file=file.c -->
|
|
2112
|
-
# any read operation perform synchronously. used with SYNC or DSYNC.
|
|
2113
|
-
#
|
|
2114
2343
|
File::Constants::RSYNC: Integer
|
|
2115
2344
|
|
|
2116
|
-
# <!-- rdoc-file=file.c -->
|
|
2117
|
-
# can delete opened file
|
|
2118
|
-
#
|
|
2119
2345
|
File::Constants::SHARE_DELETE: Integer
|
|
2120
2346
|
|
|
2121
|
-
# <!-- rdoc-file=file.c -->
|
|
2122
|
-
# any write operation perform synchronously
|
|
2123
|
-
#
|
|
2124
2347
|
File::Constants::SYNC: Integer
|
|
2125
2348
|
|
|
2126
|
-
# <!-- rdoc-file=file.c -->
|
|
2127
|
-
# Create an unnamed temporary file
|
|
2128
|
-
#
|
|
2129
2349
|
File::Constants::TMPFILE: Integer
|
|
2130
2350
|
|
|
2131
|
-
# <!-- rdoc-file=file.c -->
|
|
2132
|
-
# truncate size to 0
|
|
2133
|
-
#
|
|
2134
2351
|
File::Constants::TRUNC: Integer
|
|
2135
2352
|
|
|
2136
|
-
# <!-- rdoc-file=file.c -->
|
|
2137
|
-
# open for writing only
|
|
2138
|
-
#
|
|
2139
2353
|
File::Constants::WRONLY: Integer
|
|
2140
2354
|
|
|
2141
2355
|
# <!-- rdoc-file=file.c -->
|
|
@@ -2151,8 +2365,10 @@ class File::Stat < Object
|
|
|
2151
2365
|
|
|
2152
2366
|
# <!--
|
|
2153
2367
|
# rdoc-file=file.c
|
|
2154
|
-
# -
|
|
2368
|
+
# - new(p1)
|
|
2155
2369
|
# -->
|
|
2370
|
+
# File::Stat.new(file_name) -> stat
|
|
2371
|
+
#
|
|
2156
2372
|
# Create a File::Stat object for the given file name (raising an exception if
|
|
2157
2373
|
# the file doesn't exist).
|
|
2158
2374
|
#
|
|
@@ -2298,19 +2514,12 @@ class File::Stat < Object
|
|
|
2298
2514
|
|
|
2299
2515
|
# <!--
|
|
2300
2516
|
# rdoc-file=file.c
|
|
2301
|
-
# -
|
|
2517
|
+
# - stat.directory? -> true or false
|
|
2302
2518
|
# -->
|
|
2303
|
-
#
|
|
2304
|
-
# to a directory, or to a symbolic link to a directory; `false` otherwise:
|
|
2519
|
+
# Returns `true` if *stat* is a directory, `false` otherwise.
|
|
2305
2520
|
#
|
|
2306
|
-
# File.directory?
|
|
2307
|
-
# File.directory?
|
|
2308
|
-
# File.symlink('.', 'dirlink') # => 0
|
|
2309
|
-
# File.directory?('dirlink') # => true
|
|
2310
|
-
# File.symlink('t,txt', 'filelink') # => 0
|
|
2311
|
-
# File.directory?('filelink') # => false
|
|
2312
|
-
#
|
|
2313
|
-
# Argument `path` can be an IO object.
|
|
2521
|
+
# File.stat("testfile").directory? #=> false
|
|
2522
|
+
# File.stat(".").directory? #=> true
|
|
2314
2523
|
#
|
|
2315
2524
|
def directory?: () -> bool
|
|
2316
2525
|
|
|
@@ -2554,7 +2763,7 @@ class File::Stat < Object
|
|
|
2554
2763
|
# Returns `nil` if *stat* is a zero-length file, the size of the file otherwise.
|
|
2555
2764
|
#
|
|
2556
2765
|
# File.stat("testfile").size? #=> 66
|
|
2557
|
-
# File.stat(
|
|
2766
|
+
# File.stat(File::NULL).size? #=> nil
|
|
2558
2767
|
#
|
|
2559
2768
|
def size?: () -> Integer?
|
|
2560
2769
|
|