rbs 4.0.0.dev.5 → 4.0.1.dev.1
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/.clang-format +1 -0
- data/.github/workflows/c-check.yml +8 -4
- data/.github/workflows/comments.yml +3 -1
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +10 -0
- data/.github/workflows/rust.yml +95 -0
- data/CHANGELOG.md +323 -0
- data/Rakefile +12 -29
- data/Steepfile +1 -0
- data/config.yml +393 -37
- data/core/array.rbs +218 -188
- data/core/basic_object.rbs +9 -8
- data/core/class.rbs +6 -5
- data/core/comparable.rbs +45 -31
- data/core/complex.rbs +52 -40
- data/core/dir.rbs +57 -45
- data/core/encoding.rbs +5 -5
- data/core/enumerable.rbs +96 -91
- data/core/enumerator.rbs +4 -3
- data/core/errno.rbs +3 -2
- data/core/errors.rbs +31 -29
- data/core/exception.rbs +12 -12
- data/core/fiber.rbs +36 -36
- data/core/file.rbs +186 -113
- data/core/file_test.rbs +2 -2
- data/core/float.rbs +41 -32
- data/core/gc.rbs +78 -70
- data/core/hash.rbs +70 -60
- data/core/integer.rbs +32 -28
- data/core/io/buffer.rbs +36 -36
- data/core/io/wait.rbs +7 -7
- data/core/io.rbs +120 -135
- data/core/kernel.rbs +189 -139
- data/core/marshal.rbs +3 -3
- data/core/match_data.rbs +14 -12
- data/core/math.rbs +69 -67
- data/core/method.rbs +6 -6
- data/core/module.rbs +146 -85
- data/core/nil_class.rbs +4 -3
- data/core/numeric.rbs +35 -32
- data/core/object.rbs +6 -8
- data/core/object_space.rbs +11 -10
- data/core/pathname.rbs +131 -81
- data/core/proc.rbs +65 -33
- data/core/process.rbs +219 -201
- data/core/ractor.rbs +15 -11
- data/core/random.rbs +4 -3
- data/core/range.rbs +52 -47
- data/core/rational.rbs +5 -5
- data/core/rbs/unnamed/argf.rbs +58 -51
- data/core/rbs/unnamed/env_class.rbs +18 -13
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +7 -5
- data/core/regexp.rbs +236 -197
- data/core/ruby.rbs +1 -1
- data/core/ruby_vm.rbs +32 -30
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +1 -1
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +5 -3
- data/core/set.rbs +17 -16
- data/core/signal.rbs +2 -2
- data/core/string.rbs +311 -292
- data/core/struct.rbs +26 -25
- data/core/symbol.rbs +25 -24
- data/core/thread.rbs +40 -34
- data/core/time.rbs +47 -42
- data/core/trace_point.rbs +34 -31
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +10 -10
- data/core/warning.rbs +7 -7
- data/docs/collection.md +1 -1
- data/docs/config.md +171 -0
- data/docs/inline.md +110 -4
- data/docs/syntax.md +13 -12
- data/ext/rbs_extension/ast_translation.c +489 -135
- data/ext/rbs_extension/class_constants.c +8 -0
- data/ext/rbs_extension/class_constants.h +4 -0
- data/ext/rbs_extension/legacy_location.c +28 -51
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +12 -20
- data/include/rbs/ast.h +423 -195
- data/include/rbs/lexer.h +2 -2
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +2 -2
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs.h +8 -0
- data/lib/rbs/ast/ruby/annotations.rb +157 -4
- data/lib/rbs/ast/ruby/members.rb +374 -22
- data/lib/rbs/cli/validate.rb +5 -60
- data/lib/rbs/collection/config/lockfile_generator.rb +6 -2
- data/lib/rbs/definition_builder.rb +60 -27
- data/lib/rbs/errors.rb +0 -11
- data/lib/rbs/inline_parser.rb +1 -1
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +1 -26
- data/lib/rbs/prototype/rbi.rb +1 -20
- data/lib/rbs/test/type_check.rb +3 -0
- data/lib/rbs/types.rb +62 -52
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +0 -1
- data/rbs.gemspec +1 -1
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/sig/ast/ruby/annotations.rbs +191 -4
- data/sig/ast/ruby/members.rbs +21 -1
- data/sig/cli/validate.rbs +1 -6
- data/sig/definition_builder.rbs +2 -0
- data/sig/errors.rbs +0 -8
- data/sig/method_types.rbs +1 -1
- data/sig/parser.rbs +17 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/types.rbs +10 -11
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +339 -161
- data/src/lexstate.c +1 -1
- data/src/location.c +7 -47
- data/src/parser.c +674 -480
- data/src/util/rbs_constant_pool.c +0 -4
- data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
- data/stdlib/cgi-escape/0/escape.rbs +4 -4
- data/stdlib/coverage/0/coverage.rbs +4 -3
- data/stdlib/date/0/date.rbs +33 -28
- data/stdlib/date/0/date_time.rbs +24 -23
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/erb/0/erb.rbs +64 -53
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +138 -125
- data/stdlib/forwardable/0/forwardable.rbs +10 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +135 -108
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +159 -134
- data/stdlib/objspace/0/objspace.rbs +8 -7
- data/stdlib/open-uri/0/open-uri.rbs +8 -8
- data/stdlib/open3/0/open3.rbs +36 -35
- data/stdlib/openssl/0/openssl.rbs +144 -129
- data/stdlib/optparse/0/optparse.rbs +18 -14
- data/stdlib/pathname/0/pathname.rbs +2 -2
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +61 -8
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +2 -2
- data/stdlib/ripper/0/ripper.rbs +20 -17
- data/stdlib/securerandom/0/securerandom.rbs +1 -1
- data/stdlib/shellwords/0/shellwords.rbs +2 -2
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +10 -9
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +1 -1
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +55 -54
- data/stdlib/strscan/0/string_scanner.rbs +46 -44
- data/stdlib/tempfile/0/tempfile.rbs +24 -20
- data/stdlib/time/0/time.rbs +7 -5
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +26 -18
- data/stdlib/uri/0/file.rbs +2 -2
- data/stdlib/uri/0/generic.rbs +2 -2
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +4 -4
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- metadata +23 -5
- data/.github/workflows/valgrind.yml +0 -42
data/stdlib/erb/0/erb.rbs
CHANGED
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
# * You can call instance method ERB#result to get the *result*.
|
|
16
16
|
# ERB supports tags of three kinds:
|
|
17
17
|
# * [Expression tags](rdoc-ref:ERB@Expression+Tags):
|
|
18
|
-
# each begins with
|
|
18
|
+
# each begins with <code>'<%='</code>, ends with <code>'%>'</code>;
|
|
19
|
+
# contains a Ruby expression;
|
|
19
20
|
# in the result, the value of the expression replaces the entire tag:
|
|
20
21
|
# template = 'The magic word is <%= magic_word %>.'
|
|
21
22
|
# erb = ERB.new(template)
|
|
@@ -24,20 +25,21 @@
|
|
|
24
25
|
#
|
|
25
26
|
# The above call to #result passes argument `binding`,
|
|
26
27
|
# which contains the binding of variable `magic_word` to its string value
|
|
27
|
-
#
|
|
28
|
+
# <code>'xyzzy'</code>.
|
|
28
29
|
# The below call to #result need not pass a binding,
|
|
29
|
-
# because its expression
|
|
30
|
+
# because its expression <code>Date::DAYNAMES</code> is globally defined.
|
|
30
31
|
# ERB.new('Today is <%= Date::DAYNAMES[Date.today.wday] %>.').result # => "Today is Monday."
|
|
31
32
|
#
|
|
32
33
|
# * [Execution tags](rdoc-ref:ERB@Execution+Tags):
|
|
33
|
-
# each begins with
|
|
34
|
-
# executed:
|
|
34
|
+
# each begins with <code>'<%'</code>, ends with <code>'%>'</code>; contains
|
|
35
|
+
# Ruby code to be executed:
|
|
35
36
|
# template = '<% File.write("t.txt", "Some stuff.") %>'
|
|
36
37
|
# ERB.new(template).result
|
|
37
38
|
# File.read('t.txt') # => "Some stuff."
|
|
38
39
|
#
|
|
39
40
|
# * [Comment tags](rdoc-ref:ERB@Comment+Tags):
|
|
40
|
-
# each begins with
|
|
41
|
+
# each begins with <code>'<%#'</code>, ends with <code>'%>'</code>;
|
|
42
|
+
# contains comment text;
|
|
41
43
|
# in the result, the entire tag is omitted.
|
|
42
44
|
# template = 'Some stuff;<%# Note to self: figure out what the stuff is. %> more stuff.'
|
|
43
45
|
# ERB.new(template).result # => "Some stuff; more stuff."
|
|
@@ -51,11 +53,11 @@
|
|
|
51
53
|
#
|
|
52
54
|
# Details:
|
|
53
55
|
# 1. A plain-text string is assigned to variable `template`.
|
|
54
|
-
# Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags)
|
|
55
|
-
# Time.now %>'
|
|
56
|
+
# Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) <code>'<%=
|
|
57
|
+
# Time.now %>'</code> includes a Ruby expression, <code>Time.now</code>.
|
|
56
58
|
# 2. The string is put into a new ERB object, and stored in variable `erb`.
|
|
57
|
-
# 3. Method call
|
|
58
|
-
# value of
|
|
59
|
+
# 3. Method call <code>erb.result</code> generates a string that contains the
|
|
60
|
+
# run-time value of <code>Time.now</code>,
|
|
59
61
|
# as computed at the time of the call.
|
|
60
62
|
# The
|
|
61
63
|
# ERB object may be re-used:
|
|
@@ -71,13 +73,14 @@
|
|
|
71
73
|
#
|
|
72
74
|
# Details:
|
|
73
75
|
# 1. As before, a plain-text string is assigned to variable `template`.
|
|
74
|
-
# Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags)
|
|
75
|
-
# magic_word %>'
|
|
76
|
+
# Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) <code>'<%=
|
|
77
|
+
# magic_word %>'</code> has a variable *name*, `magic_word`.
|
|
76
78
|
# 2. The string is put into a new ERB object, and stored in variable `erb`;
|
|
77
79
|
# note that `magic_word` need not be defined before the ERB object is
|
|
78
80
|
# created.
|
|
79
|
-
# 3.
|
|
80
|
-
#
|
|
81
|
+
# 3. <code>magic_word = 'abracadabra'</code> assigns a value to variable
|
|
82
|
+
# `magic_word`.
|
|
83
|
+
# 4. Method call <code>erb.result(binding)</code> generates a string
|
|
81
84
|
# that contains the *value* of `magic_word`.
|
|
82
85
|
# As before, the ERB object may be re-used:
|
|
83
86
|
# magic_word = 'xyzzy'
|
|
@@ -102,7 +105,7 @@
|
|
|
102
105
|
# That binding is sufficient for an expression tag that refers only to Ruby's
|
|
103
106
|
# constants and variables;
|
|
104
107
|
# these expression tags refer only to Ruby's global constant `RUBY_COPYRIGHT`
|
|
105
|
-
# and global variable
|
|
108
|
+
# and global variable <code>$0</code>:
|
|
106
109
|
# template = <<TEMPLATE
|
|
107
110
|
# The Ruby copyright is <%= RUBY_COPYRIGHT.inspect %>.
|
|
108
111
|
# The current process is <%= $0 %>.
|
|
@@ -181,7 +184,7 @@
|
|
|
181
184
|
# in the result, the entire tag is to be omitted.
|
|
182
185
|
# ### Expression Tags
|
|
183
186
|
# You can embed a Ruby expression in a template using an *expression tag*.
|
|
184
|
-
# Its syntax is
|
|
187
|
+
# Its syntax is <code><%= _expression_ %></code>,
|
|
185
188
|
# where *expression* is any valid Ruby expression.
|
|
186
189
|
# When you call method #result,
|
|
187
190
|
# the method evaluates the expression and replaces the entire expression tag
|
|
@@ -203,7 +206,7 @@
|
|
|
203
206
|
#
|
|
204
207
|
# ### Execution Tags
|
|
205
208
|
# You can embed Ruby executable code in template using an *execution tag*.
|
|
206
|
-
# Its syntax is
|
|
209
|
+
# Its syntax is <code><% _code_ %></code>,
|
|
207
210
|
# where *code* is any valid Ruby code.
|
|
208
211
|
# When you call method #result,
|
|
209
212
|
# the method executes the code and removes the entire execution tag
|
|
@@ -268,9 +271,10 @@
|
|
|
268
271
|
# # => "\n* 0,0\n\n* 0,1\n\n* 0,2\n\n* 1,0\n\n* 1,1\n\n* 1,2\n\n* 2,0\n\n* 2,1\n\n* 2,2\n\n"
|
|
269
272
|
#
|
|
270
273
|
# #### Shorthand Format for Execution Tags
|
|
271
|
-
# You can use keyword argument
|
|
272
|
-
# execution tags;
|
|
273
|
-
# this example uses the shorthand format
|
|
274
|
+
# You can use keyword argument <code>trim_mode: '%'</code> to enable a shorthand
|
|
275
|
+
# format for execution tags;
|
|
276
|
+
# this example uses the shorthand format <code>% _code_</code> instead of
|
|
277
|
+
# <code><% _code_ %></code>:
|
|
274
278
|
# template = <<TEMPLATE
|
|
275
279
|
# % priorities.each do |priority|
|
|
276
280
|
# * <%= priority %>
|
|
@@ -285,8 +289,8 @@
|
|
|
285
289
|
# * Document Modules
|
|
286
290
|
# * Answer Questions on Ruby Talk
|
|
287
291
|
#
|
|
288
|
-
# Note that in the shorthand format, the character
|
|
289
|
-
# character in the code line
|
|
292
|
+
# Note that in the shorthand format, the character <code>'%'</code> must be the
|
|
293
|
+
# first character in the code line
|
|
290
294
|
# (no leading whitespace).
|
|
291
295
|
# #### Suppressing Unwanted Blank Lines
|
|
292
296
|
# With keyword argument `trim_mode` not given,
|
|
@@ -301,8 +305,8 @@
|
|
|
301
305
|
# "3.4.5\n"
|
|
302
306
|
# "\n"
|
|
303
307
|
#
|
|
304
|
-
# You can give
|
|
305
|
-
# whose source line ends with
|
|
308
|
+
# You can give <code>trim_mode: '-'</code>, you can suppress each blank line
|
|
309
|
+
# whose source line ends with <code>-%></code> (instead of <code>%></code>):
|
|
306
310
|
# template = <<TEMPLATE
|
|
307
311
|
# <% if true -%>
|
|
308
312
|
# <%= RUBY_VERSION %>
|
|
@@ -311,7 +315,8 @@
|
|
|
311
315
|
# ERB.new(template, trim_mode: '-').result.lines.each {|line| puts line.inspect }
|
|
312
316
|
# "3.4.5\n"
|
|
313
317
|
#
|
|
314
|
-
# It is an error to use the trailing
|
|
318
|
+
# It is an error to use the trailing <code>'-%>'</code> notation without
|
|
319
|
+
# <code>trim_mode: '-'</code>:
|
|
315
320
|
# ERB.new(template).result.lines.each {|line| puts line.inspect } # Raises SyntaxError.
|
|
316
321
|
#
|
|
317
322
|
# #### Suppressing Unwanted Newlines
|
|
@@ -330,27 +335,29 @@
|
|
|
330
335
|
# "foo \n"
|
|
331
336
|
# "foo 3.4.5\n"
|
|
332
337
|
#
|
|
333
|
-
# You can give
|
|
334
|
-
# for each line that ends with
|
|
338
|
+
# You can give <code>trim_mode: '>'</code> to suppress the trailing newline
|
|
339
|
+
# for each line that ends with <code>'%>'</code> (regardless of its beginning):
|
|
335
340
|
# ERB.new(template, trim_mode: '>').result.lines.each {|line| puts line.inspect }
|
|
336
341
|
# "3.4.5foo foo 3.4.5"
|
|
337
342
|
#
|
|
338
|
-
# You can give
|
|
339
|
-
# for each line that both begins with
|
|
343
|
+
# You can give <code>trim_mode: '<>'</code> to suppress the trailing newline
|
|
344
|
+
# for each line that both begins with <code>'<%'</code> and ends with
|
|
345
|
+
# <code>'%>'</code>:
|
|
340
346
|
# ERB.new(template, trim_mode: '<>').result.lines.each {|line| puts line.inspect }
|
|
341
347
|
# "3.4.5foo \n"
|
|
342
348
|
# "foo 3.4.5\n"
|
|
343
349
|
#
|
|
344
350
|
# #### Combining Trim Modes
|
|
345
351
|
# You can combine certain trim modes:
|
|
346
|
-
# *
|
|
347
|
-
#
|
|
348
|
-
#
|
|
349
|
-
#
|
|
350
|
-
#
|
|
352
|
+
# * <code>'%-'</code>: Enable shorthand and omit each blank line ending with
|
|
353
|
+
# <code>'-%>'</code>.
|
|
354
|
+
# * <code>'%>'</code>: Enable shorthand and omit newline for each line ending
|
|
355
|
+
# with <code>'%>'</code>.
|
|
356
|
+
# * <code>'%<>'</code>: Enable shorthand and omit newline for each line
|
|
357
|
+
# starting with <code>'<%'</code> and ending with <code>'%>'</code>.
|
|
351
358
|
# ### Comment Tags
|
|
352
359
|
# You can embed a comment in a template using a *comment tag*;
|
|
353
|
-
# its syntax is
|
|
360
|
+
# its syntax is <code><%# _text_ %></code>,
|
|
354
361
|
# where *text* is the text of the comment.
|
|
355
362
|
# When you call method #result,
|
|
356
363
|
# it removes the entire comment tag
|
|
@@ -360,9 +367,10 @@
|
|
|
360
367
|
# ERB.new(template).result # => "Some stuff; more stuff."
|
|
361
368
|
#
|
|
362
369
|
# A comment tag may appear anywhere in the template.
|
|
363
|
-
# Note that the beginning of the tag must be
|
|
364
|
-
#
|
|
365
|
-
#
|
|
370
|
+
# Note that the beginning of the tag must be <code>'<%#'</code>, not <code>'<%
|
|
371
|
+
# #'</code>.
|
|
372
|
+
# In this example, the tag begins with <code>'<% #'</code>, and so is an
|
|
373
|
+
# execution tag, not a comment tag;
|
|
366
374
|
# the cited code consists entirely of a Ruby-style comment (which is of course
|
|
367
375
|
# ignored):
|
|
368
376
|
# ERB.new('Some stuff;<% # Note to self: figure out what the stuff is. %> more stuff.').result
|
|
@@ -404,7 +412,8 @@
|
|
|
404
412
|
# the file name comes from method #filename, the line number from method
|
|
405
413
|
# #lineno.
|
|
406
414
|
# Initially, those values are `nil` and `0`, respectively;
|
|
407
|
-
# these initial values are reported as
|
|
415
|
+
# these initial values are reported as <code>'(erb)'</code> and `1`,
|
|
416
|
+
# respectively:
|
|
408
417
|
# erb.filename # => nil
|
|
409
418
|
# erb.lineno # => 0
|
|
410
419
|
# erb.result
|
|
@@ -424,7 +433,7 @@
|
|
|
424
433
|
#
|
|
425
434
|
# ## Plain Text with Embedded Ruby
|
|
426
435
|
# Here's a plain-text template;
|
|
427
|
-
# it uses the literal notation
|
|
436
|
+
# it uses the literal notation <code>'%q{ ... }'</code> to define the template
|
|
428
437
|
# (see [%q
|
|
429
438
|
# literals](https://docs.ruby-lang.org/en/master/syntax/literals_rdoc.html#label
|
|
430
439
|
# -25q-3A+Non-Interpolable+String+Literals));
|
|
@@ -582,23 +591,24 @@ class ERB
|
|
|
582
591
|
# rdoc-file=lib/erb.rb
|
|
583
592
|
# - ERB.new(template, trim_mode: nil, eoutvar: '_erbout')
|
|
584
593
|
# -->
|
|
585
|
-
# Returns a new ERB object containing the given string
|
|
594
|
+
# Returns a new ERB object containing the given string +template+.
|
|
586
595
|
# For details about `template`, its embedded tags, and generated results, see
|
|
587
596
|
# ERB.
|
|
588
|
-
#
|
|
589
|
-
# You can use keyword argument
|
|
597
|
+
# <strong>Keyword Argument `trim_mode`</strong>
|
|
598
|
+
# You can use keyword argument <code>trim_mode: '%'</code>
|
|
590
599
|
# to enable the [shorthand
|
|
591
600
|
# format](rdoc-ref:ERB@Shorthand+Format+for+Execution+Tags) for execution tags.
|
|
592
601
|
# This value allows [blank line
|
|
593
602
|
# control](rdoc-ref:ERB@Suppressing+Unwanted+Blank+Lines):
|
|
594
|
-
# *
|
|
603
|
+
# * <code>'-'</code>: Omit each blank line ending with <code>'%>'</code>.
|
|
595
604
|
# Other values allow [newline
|
|
596
605
|
# control](rdoc-ref:ERB@Suppressing+Unwanted+Newlines):
|
|
597
|
-
# *
|
|
598
|
-
#
|
|
599
|
-
#
|
|
606
|
+
# * <code>'>'</code>: Omit newline for each line ending with
|
|
607
|
+
# <code>'%>'</code>.
|
|
608
|
+
# * <code>'<>'</code>: Omit newline for each line starting with
|
|
609
|
+
# <code>'<%'</code> and ending with <code>'%>'</code>.
|
|
600
610
|
# You can also [combine trim modes](rdoc-ref:ERB@Combining+Trim+Modes).
|
|
601
|
-
#
|
|
611
|
+
# <strong>Keyword Argument `eoutvar`</strong>
|
|
602
612
|
# The string value of keyword argument `eoutvar` specifies the name of the
|
|
603
613
|
# variable
|
|
604
614
|
# that method #result uses to construct its result string;
|
|
@@ -607,7 +617,7 @@ class ERB
|
|
|
607
617
|
# binding
|
|
608
618
|
# and/or when you want to control where output ends up.
|
|
609
619
|
# It's good practice to choose a variable name that begins with an underscore:
|
|
610
|
-
#
|
|
620
|
+
# <code>'_'</code>.
|
|
611
621
|
#
|
|
612
622
|
def initialize: (String, ?eoutvar: String, ?trim_mode: Integer | String | NilClass) -> untyped
|
|
613
623
|
|
|
@@ -760,8 +770,8 @@ class ERB
|
|
|
760
770
|
# -->
|
|
761
771
|
# Returns a new nameless class whose superclass is `super_class`,
|
|
762
772
|
# and which has instance method `method_name`.
|
|
763
|
-
# Create a template from HTML that has embedded expression tags that use
|
|
764
|
-
# and
|
|
773
|
+
# Create a template from HTML that has embedded expression tags that use
|
|
774
|
+
# <code>@arg1</code> and <code>@arg2</code>:
|
|
765
775
|
# html = <<TEMPLATE
|
|
766
776
|
# <html>
|
|
767
777
|
# <body>
|
|
@@ -772,7 +782,7 @@ class ERB
|
|
|
772
782
|
# TEMPLATE
|
|
773
783
|
# template = ERB.new(html)
|
|
774
784
|
#
|
|
775
|
-
# Create a base class that has
|
|
785
|
+
# Create a base class that has <code>@arg1</code> and <code>@arg2</code>:
|
|
776
786
|
# class MyBaseClass
|
|
777
787
|
# def initialize(arg1, arg2)
|
|
778
788
|
# @arg1 = arg1
|
|
@@ -780,7 +790,8 @@ class ERB
|
|
|
780
790
|
# end
|
|
781
791
|
# end
|
|
782
792
|
#
|
|
783
|
-
# Use method #def_class to create a subclass that has method
|
|
793
|
+
# Use method #def_class to create a subclass that has method
|
|
794
|
+
# <code>:render</code>:
|
|
784
795
|
# MySubClass = template.def_class(MyBaseClass, :render)
|
|
785
796
|
#
|
|
786
797
|
# Generate the result:
|
data/stdlib/etc/0/etc.rbs
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# <!-- rdoc-file=ext/etc/etc.c -->
|
|
2
2
|
# The Etc module provides access to information typically stored in files in the
|
|
3
|
-
#
|
|
3
|
+
# <code>/etc</code> directory on Unix systems.
|
|
4
4
|
#
|
|
5
5
|
# The information accessible consists of the information found in the
|
|
6
|
-
#
|
|
7
|
-
# temporary directory (
|
|
6
|
+
# <code>/etc/passwd</code> and <code>/etc/group</code> files, plus information
|
|
7
|
+
# about the system's temporary directory (<code>/tmp</code>) and configuration
|
|
8
|
+
# directory (<code>/etc</code>).
|
|
8
9
|
#
|
|
9
10
|
# The Etc module provides a more reliable way to access information about the
|
|
10
11
|
# logged in user than environment variables such as +$USER+.
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
+
# <strong>Example:</strong>
|
|
13
14
|
#
|
|
14
15
|
# require 'etc'
|
|
15
16
|
#
|
|
@@ -48,7 +49,7 @@ module Etc
|
|
|
48
49
|
# rdoc-file=ext/etc/etc.c
|
|
49
50
|
# - endgrent
|
|
50
51
|
# -->
|
|
51
|
-
# Ends the process of scanning through the
|
|
52
|
+
# Ends the process of scanning through the <code>/etc/group</code> file begun by
|
|
52
53
|
# ::getgrent, and closes the file.
|
|
53
54
|
#
|
|
54
55
|
def self?.endgrent: () -> void
|
|
@@ -57,8 +58,8 @@ module Etc
|
|
|
57
58
|
# rdoc-file=ext/etc/etc.c
|
|
58
59
|
# - endpwent
|
|
59
60
|
# -->
|
|
60
|
-
# Ends the process of scanning through the
|
|
61
|
-
# ::getpwent, and closes the file.
|
|
61
|
+
# Ends the process of scanning through the <code>/etc/passwd</code> file begun
|
|
62
|
+
# with ::getpwent, and closes the file.
|
|
62
63
|
#
|
|
63
64
|
def self?.endpwent: () -> void
|
|
64
65
|
|
|
@@ -66,7 +67,7 @@ module Etc
|
|
|
66
67
|
# rdoc-file=ext/etc/etc.c
|
|
67
68
|
# - getgrent -> Etc::Group
|
|
68
69
|
# -->
|
|
69
|
-
# Returns an entry from the
|
|
70
|
+
# Returns an entry from the <code>/etc/group</code> file.
|
|
70
71
|
#
|
|
71
72
|
# The first time it is called it opens the file and returns the first entry;
|
|
72
73
|
# each successive call returns the next entry, or `nil` if the end of the file
|
|
@@ -83,13 +84,13 @@ module Etc
|
|
|
83
84
|
# - getgrgid(group_id) -> Etc::Group
|
|
84
85
|
# -->
|
|
85
86
|
# Returns information about the group with specified integer `group_id`, as
|
|
86
|
-
# found in
|
|
87
|
+
# found in <code>/etc/group</code>.
|
|
87
88
|
#
|
|
88
89
|
# The information is returned as a Group struct.
|
|
89
90
|
#
|
|
90
|
-
# See the unix manpage for
|
|
91
|
+
# See the unix manpage for <code>getgrgid(3)</code> for more detail.
|
|
91
92
|
#
|
|
92
|
-
#
|
|
93
|
+
# <strong>Example:</strong>
|
|
93
94
|
#
|
|
94
95
|
# Etc.getgrgid(100)
|
|
95
96
|
# #=> #<struct Etc::Group name="users", passwd="x", gid=100, mem=["meta", "root"]>
|
|
@@ -101,13 +102,13 @@ module Etc
|
|
|
101
102
|
# - getgrnam(name) -> Etc::Group
|
|
102
103
|
# -->
|
|
103
104
|
# Returns information about the group with specified `name`, as found in
|
|
104
|
-
#
|
|
105
|
+
# <code>/etc/group</code>.
|
|
105
106
|
#
|
|
106
107
|
# The information is returned as a Group struct.
|
|
107
108
|
#
|
|
108
|
-
# See the unix manpage for
|
|
109
|
+
# See the unix manpage for <code>getgrnam(3)</code> for more detail.
|
|
109
110
|
#
|
|
110
|
-
#
|
|
111
|
+
# <strong>Example:</strong>
|
|
111
112
|
#
|
|
112
113
|
# Etc.getgrnam('users')
|
|
113
114
|
# #=> #<struct Etc::Group name="users", passwd="x", gid=100, mem=["meta", "root"]>
|
|
@@ -125,7 +126,7 @@ module Etc
|
|
|
125
126
|
#
|
|
126
127
|
# If ::getlogin fails, try ::getpwuid.
|
|
127
128
|
#
|
|
128
|
-
# See the unix manpage for
|
|
129
|
+
# See the unix manpage for <code>getpwuid(3)</code> for more detail.
|
|
129
130
|
#
|
|
130
131
|
# e.g.
|
|
131
132
|
# Etc.getlogin -> 'guest'
|
|
@@ -136,7 +137,7 @@ module Etc
|
|
|
136
137
|
# rdoc-file=ext/etc/etc.c
|
|
137
138
|
# - getpwent -> Etc::Passwd
|
|
138
139
|
# -->
|
|
139
|
-
# Returns an entry from the
|
|
140
|
+
# Returns an entry from the <code>/etc/passwd</code> file.
|
|
140
141
|
#
|
|
141
142
|
# The first time it is called it opens the file and returns the first entry;
|
|
142
143
|
# each successive call returns the next entry, or `nil` if the end of the file
|
|
@@ -152,14 +153,14 @@ module Etc
|
|
|
152
153
|
# rdoc-file=ext/etc/etc.c
|
|
153
154
|
# - getpwnam(name) -> Etc::Passwd
|
|
154
155
|
# -->
|
|
155
|
-
# Returns the
|
|
156
|
-
# `name`.
|
|
156
|
+
# Returns the <code>/etc/passwd</code> information for the user with specified
|
|
157
|
+
# login `name`.
|
|
157
158
|
#
|
|
158
159
|
# The information is returned as a Passwd struct.
|
|
159
160
|
#
|
|
160
|
-
# See the unix manpage for
|
|
161
|
+
# See the unix manpage for <code>getpwnam(3)</code> for more detail.
|
|
161
162
|
#
|
|
162
|
-
#
|
|
163
|
+
# <strong>Example:</strong>
|
|
163
164
|
#
|
|
164
165
|
# Etc.getpwnam('root')
|
|
165
166
|
# #=> #<struct Etc::Passwd name="root", passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
|
|
@@ -170,16 +171,17 @@ module Etc
|
|
|
170
171
|
# rdoc-file=ext/etc/etc.c
|
|
171
172
|
# - getpwuid(uid) -> Etc::Passwd
|
|
172
173
|
# -->
|
|
173
|
-
# Returns the
|
|
174
|
-
# `uid`.
|
|
174
|
+
# Returns the <code>/etc/passwd</code> information for the user with the given
|
|
175
|
+
# integer `uid`.
|
|
175
176
|
#
|
|
176
177
|
# The information is returned as a Passwd struct.
|
|
177
178
|
#
|
|
178
|
-
# If `uid` is omitted, the value from
|
|
179
|
+
# If `uid` is omitted, the value from <code>Passwd[:uid]</code> is returned
|
|
180
|
+
# instead.
|
|
179
181
|
#
|
|
180
|
-
# See the unix manpage for
|
|
182
|
+
# See the unix manpage for <code>getpwuid(3)</code> for more detail.
|
|
181
183
|
#
|
|
182
|
-
#
|
|
184
|
+
# <strong>Example:</strong>
|
|
183
185
|
#
|
|
184
186
|
# Etc.getpwuid(0)
|
|
185
187
|
# #=> #<struct Etc::Passwd name="root", passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
|
|
@@ -192,13 +194,13 @@ module Etc
|
|
|
192
194
|
# - group -> Etc::Group
|
|
193
195
|
# -->
|
|
194
196
|
# Provides a convenient Ruby iterator which executes a block for each entry in
|
|
195
|
-
# the
|
|
197
|
+
# the <code>/etc/group</code> file.
|
|
196
198
|
#
|
|
197
199
|
# The code block is passed an Group struct.
|
|
198
200
|
#
|
|
199
201
|
# See ::getgrent above for details.
|
|
200
202
|
#
|
|
201
|
-
#
|
|
203
|
+
# <strong>Example:</strong>
|
|
202
204
|
#
|
|
203
205
|
# require 'etc'
|
|
204
206
|
#
|
|
@@ -223,7 +225,7 @@ module Etc
|
|
|
223
225
|
# * sysconf(_SC_NPROCESSORS_ONLN): GNU/Linux, NetBSD, FreeBSD, OpenBSD,
|
|
224
226
|
# DragonFly BSD, OpenIndiana, Mac OS X, AIX
|
|
225
227
|
#
|
|
226
|
-
#
|
|
228
|
+
# <strong>Example:</strong>
|
|
227
229
|
#
|
|
228
230
|
# require 'etc'
|
|
229
231
|
# p Etc.nprocessors #=> 4
|
|
@@ -232,7 +234,7 @@ module Etc
|
|
|
232
234
|
# process is bound to specific cpus. This is intended for getting better
|
|
233
235
|
# parallel processing.
|
|
234
236
|
#
|
|
235
|
-
#
|
|
237
|
+
# <strong>Example:</strong> (Linux)
|
|
236
238
|
#
|
|
237
239
|
# linux$ taskset 0x3 ./ruby -retc -e "p Etc.nprocessors" #=> 2
|
|
238
240
|
#
|
|
@@ -244,13 +246,13 @@ module Etc
|
|
|
244
246
|
# - passwd -> Etc::Passwd
|
|
245
247
|
# -->
|
|
246
248
|
# Provides a convenient Ruby iterator which executes a block for each entry in
|
|
247
|
-
# the
|
|
249
|
+
# the <code>/etc/passwd</code> file.
|
|
248
250
|
#
|
|
249
251
|
# The code block is passed an Passwd struct.
|
|
250
252
|
#
|
|
251
253
|
# See ::getpwent above for details.
|
|
252
254
|
#
|
|
253
|
-
#
|
|
255
|
+
# <strong>Example:</strong>
|
|
254
256
|
#
|
|
255
257
|
# require 'etc'
|
|
256
258
|
#
|
|
@@ -265,8 +267,8 @@ module Etc
|
|
|
265
267
|
# rdoc-file=ext/etc/etc.c
|
|
266
268
|
# - setgrent
|
|
267
269
|
# -->
|
|
268
|
-
# Resets the process of reading the
|
|
269
|
-
# ::getgrent will return the first entry again.
|
|
270
|
+
# Resets the process of reading the <code>/etc/group</code> file, so that the
|
|
271
|
+
# next call to ::getgrent will return the first entry again.
|
|
270
272
|
#
|
|
271
273
|
def self?.setgrent: () -> void
|
|
272
274
|
|
|
@@ -274,8 +276,8 @@ module Etc
|
|
|
274
276
|
# rdoc-file=ext/etc/etc.c
|
|
275
277
|
# - setpwent
|
|
276
278
|
# -->
|
|
277
|
-
# Resets the process of reading the
|
|
278
|
-
# ::getpwent will return the first entry again.
|
|
279
|
+
# Resets the process of reading the <code>/etc/passwd</code> file, so that the
|
|
280
|
+
# next call to ::getpwent will return the first entry again.
|
|
279
281
|
#
|
|
280
282
|
def self?.setpwent: () -> void
|
|
281
283
|
|
|
@@ -301,9 +303,10 @@ module Etc
|
|
|
301
303
|
# -->
|
|
302
304
|
# Returns system configuration directory.
|
|
303
305
|
#
|
|
304
|
-
# This is typically
|
|
305
|
-
# compiled. For example, if Ruby is built and installed in
|
|
306
|
-
#
|
|
306
|
+
# This is typically <code>"/etc"</code>, but is modified by the prefix used when
|
|
307
|
+
# Ruby was compiled. For example, if Ruby is built and installed in
|
|
308
|
+
# <code>/usr/local</code>, returns <code>"/usr/local/etc"</code> on other
|
|
309
|
+
# platforms than Windows.
|
|
307
310
|
#
|
|
308
311
|
# On Windows, this always returns the directory provided by the system.
|
|
309
312
|
#
|
|
@@ -326,7 +329,7 @@ module Etc
|
|
|
326
329
|
# The return value is a hash which has 5 keys at least:
|
|
327
330
|
# :sysname, :nodename, :release, :version, :machine
|
|
328
331
|
#
|
|
329
|
-
#
|
|
332
|
+
# <strong>Example:</strong>
|
|
330
333
|
#
|
|
331
334
|
# require 'etc'
|
|
332
335
|
# require 'pp'
|
|
@@ -666,10 +669,10 @@ module Etc
|
|
|
666
669
|
# : contains the name of the group as a String.
|
|
667
670
|
#
|
|
668
671
|
# passwd
|
|
669
|
-
# : contains the encrypted password as a String. An
|
|
670
|
-
# password access to the group is not available; an empty string
|
|
671
|
-
# if no password is needed to obtain membership of the group.
|
|
672
|
-
# system-dependent.
|
|
672
|
+
# : contains the encrypted password as a String. An <code>'x'</code> is
|
|
673
|
+
# returned if password access to the group is not available; an empty string
|
|
674
|
+
# is returned if no password is needed to obtain membership of the group.
|
|
675
|
+
# This is system-dependent.
|
|
673
676
|
#
|
|
674
677
|
# gid
|
|
675
678
|
# : contains the group's numeric ID as an integer.
|
|
@@ -688,13 +691,14 @@ module Etc
|
|
|
688
691
|
# - Etc::Group.each { |group| block } -> Etc::Group
|
|
689
692
|
# - Etc::Group.each -> Enumerator
|
|
690
693
|
# -->
|
|
691
|
-
# Iterates for each entry in the
|
|
694
|
+
# Iterates for each entry in the <code>/etc/group</code> file if a block is
|
|
695
|
+
# given.
|
|
692
696
|
#
|
|
693
697
|
# If no block is given, returns the Enumerator.
|
|
694
698
|
#
|
|
695
699
|
# The code block is passed a Group struct.
|
|
696
700
|
#
|
|
697
|
-
#
|
|
701
|
+
# <strong>Example:</strong>
|
|
698
702
|
#
|
|
699
703
|
# require 'etc'
|
|
700
704
|
#
|
|
@@ -741,9 +745,9 @@ module Etc
|
|
|
741
745
|
# : contains the short login name of the user as a String.
|
|
742
746
|
#
|
|
743
747
|
# passwd
|
|
744
|
-
# : contains the encrypted password of the user as a String. an
|
|
745
|
-
# returned if shadow passwords are in use. An
|
|
746
|
-
# cannot log in using a password.
|
|
748
|
+
# : contains the encrypted password of the user as a String. an
|
|
749
|
+
# <code>'x'</code> is returned if shadow passwords are in use. An
|
|
750
|
+
# <code>'*'</code> is returned if the user cannot log in using a password.
|
|
747
751
|
#
|
|
748
752
|
# uid
|
|
749
753
|
# : contains the integer user ID (uid) of the user.
|
|
@@ -793,7 +797,8 @@ module Etc
|
|
|
793
797
|
# - Etc::Passwd.each { |struct| block } -> Etc::Passwd
|
|
794
798
|
# - Etc::Passwd.each -> Enumerator
|
|
795
799
|
# -->
|
|
796
|
-
# Iterates for each entry in the
|
|
800
|
+
# Iterates for each entry in the <code>/etc/passwd</code> file if a block is
|
|
801
|
+
# given.
|
|
797
802
|
#
|
|
798
803
|
# If no block is given, returns the Enumerator.
|
|
799
804
|
#
|
|
@@ -801,7 +806,7 @@ module Etc
|
|
|
801
806
|
#
|
|
802
807
|
# See Etc.getpwent above for details.
|
|
803
808
|
#
|
|
804
|
-
#
|
|
809
|
+
# <strong>Example:</strong>
|
|
805
810
|
#
|
|
806
811
|
# require 'etc'
|
|
807
812
|
#
|