rbs 2.6.0 → 2.7.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +5 -0
  4. data/CHANGELOG.md +48 -1
  5. data/Gemfile.lock +10 -9
  6. data/Rakefile +0 -5
  7. data/Steepfile +1 -0
  8. data/core/basic_object.rbs +2 -2
  9. data/core/fiber.rbs +304 -14
  10. data/core/float.rbs +2 -0
  11. data/core/io.rbs +95 -1
  12. data/core/kernel.rbs +1 -1
  13. data/core/module.rbs +1 -1
  14. data/core/regexp.rbs +1 -1
  15. data/core/string_io.rbs +1 -1
  16. data/core/warning.rbs +1 -1
  17. data/ext/rbs_extension/parser.c +36 -10
  18. data/ext/rbs_extension/ruby_objs.c +4 -2
  19. data/ext/rbs_extension/ruby_objs.h +2 -2
  20. data/lib/rbs/ancestor_graph.rb +2 -0
  21. data/lib/rbs/annotate/annotations.rb +2 -0
  22. data/lib/rbs/annotate/formatter.rb +4 -2
  23. data/lib/rbs/annotate/rdoc_annotator.rb +2 -0
  24. data/lib/rbs/annotate/rdoc_source.rb +2 -0
  25. data/lib/rbs/annotate.rb +2 -0
  26. data/lib/rbs/ast/annotation.rb +2 -0
  27. data/lib/rbs/ast/comment.rb +2 -0
  28. data/lib/rbs/ast/declarations.rb +2 -0
  29. data/lib/rbs/ast/members.rb +2 -0
  30. data/lib/rbs/ast/type_param.rb +3 -1
  31. data/lib/rbs/buffer.rb +2 -0
  32. data/lib/rbs/builtin_names.rb +2 -0
  33. data/lib/rbs/cli.rb +39 -2
  34. data/lib/rbs/collection/cleaner.rb +2 -0
  35. data/lib/rbs/collection/config/lockfile_generator.rb +8 -3
  36. data/lib/rbs/collection/config.rb +2 -0
  37. data/lib/rbs/collection/installer.rb +2 -0
  38. data/lib/rbs/collection/sources/base.rb +14 -0
  39. data/lib/rbs/collection/sources/git.rb +3 -0
  40. data/lib/rbs/collection/sources/rubygems.rb +3 -0
  41. data/lib/rbs/collection/sources/stdlib.rb +12 -7
  42. data/lib/rbs/collection/sources.rb +3 -0
  43. data/lib/rbs/collection.rb +2 -0
  44. data/lib/rbs/constant.rb +2 -0
  45. data/lib/rbs/constant_table.rb +5 -3
  46. data/lib/rbs/definition.rb +13 -1
  47. data/lib/rbs/definition_builder/ancestor_builder.rb +2 -0
  48. data/lib/rbs/definition_builder/method_builder.rb +2 -0
  49. data/lib/rbs/definition_builder.rb +75 -13
  50. data/lib/rbs/environment.rb +2 -0
  51. data/lib/rbs/environment_loader.rb +25 -5
  52. data/lib/rbs/environment_walker.rb +2 -0
  53. data/lib/rbs/errors.rb +3 -1
  54. data/lib/rbs/factory.rb +2 -0
  55. data/lib/rbs/location_aux.rb +3 -1
  56. data/lib/rbs/locator.rb +2 -0
  57. data/lib/rbs/method_type.rb +7 -5
  58. data/lib/rbs/namespace.rb +9 -5
  59. data/lib/rbs/parser_aux.rb +2 -0
  60. data/lib/rbs/parser_compat/lexer_error.rb +2 -0
  61. data/lib/rbs/parser_compat/located_value.rb +2 -0
  62. data/lib/rbs/parser_compat/semantics_error.rb +2 -0
  63. data/lib/rbs/parser_compat/syntax_error.rb +2 -0
  64. data/lib/rbs/prototype/helpers.rb +13 -8
  65. data/lib/rbs/prototype/rb.rb +2 -0
  66. data/lib/rbs/prototype/rbi.rb +11 -6
  67. data/lib/rbs/prototype/runtime.rb +13 -4
  68. data/lib/rbs/repository.rb +4 -4
  69. data/lib/rbs/resolver/constant_resolver.rb +2 -0
  70. data/lib/rbs/resolver/type_name_resolver.rb +2 -0
  71. data/lib/rbs/sorter.rb +168 -0
  72. data/lib/rbs/substitution.rb +2 -0
  73. data/lib/rbs/test/errors.rb +2 -0
  74. data/lib/rbs/test/hook.rb +2 -0
  75. data/lib/rbs/test/observer.rb +2 -0
  76. data/lib/rbs/test/setup.rb +2 -0
  77. data/lib/rbs/test/setup_helper.rb +2 -0
  78. data/lib/rbs/test/spy.rb +2 -0
  79. data/lib/rbs/test/tester.rb +2 -0
  80. data/lib/rbs/test/type_check.rb +2 -0
  81. data/lib/rbs/test.rb +2 -0
  82. data/lib/rbs/type_alias_dependency.rb +2 -0
  83. data/lib/rbs/type_alias_regularity.rb +2 -0
  84. data/lib/rbs/type_name.rb +2 -0
  85. data/lib/rbs/type_name_resolver.rb +4 -2
  86. data/lib/rbs/types.rb +68 -18
  87. data/lib/rbs/validator.rb +2 -0
  88. data/lib/rbs/variance_calculator.rb +2 -0
  89. data/lib/rbs/vendorer.rb +2 -0
  90. data/lib/rbs/version.rb +3 -1
  91. data/lib/rbs/writer.rb +3 -1
  92. data/lib/rbs.rb +4 -2
  93. data/lib/rdoc/discover.rb +20 -0
  94. data/lib/rdoc_plugin/parser.rb +163 -0
  95. data/schema/methodType.json +7 -1
  96. data/schema/types.json +13 -1
  97. data/sig/ancestor_builder.rbs +66 -7
  98. data/sig/annotation.rbs +7 -6
  99. data/sig/builtin_names.rbs +2 -0
  100. data/sig/cli.rbs +8 -0
  101. data/sig/collection/config.rbs +13 -4
  102. data/sig/collection/installer.rbs +2 -0
  103. data/sig/collection/sources.rbs +23 -4
  104. data/sig/definition.rbs +8 -0
  105. data/sig/definition_builder.rbs +64 -7
  106. data/sig/environment.rbs +4 -0
  107. data/sig/environment_loader.rbs +4 -2
  108. data/sig/location.rbs +8 -4
  109. data/sig/manifest.yaml +1 -0
  110. data/sig/members.rbs +1 -1
  111. data/sig/method_builder.rbs +10 -0
  112. data/sig/namespace.rbs +54 -31
  113. data/sig/prototype/rb.rbs +4 -0
  114. data/sig/rbs.rbs +8 -6
  115. data/sig/rdoc/rbs.rbs +63 -0
  116. data/sig/{polyfill.rbs → shims.rbs} +1 -31
  117. data/sig/sorter.rbs +23 -0
  118. data/sig/types.rbs +14 -2
  119. data/sig/vendorer.rbs +32 -25
  120. data/stdlib/bigdecimal/0/big_decimal.rbs +250 -0
  121. data/stdlib/erb/0/erb.rbs +107 -0
  122. data/stdlib/logger/0/logger.rbs +2 -2
  123. data/stdlib/rdoc/0/rdoc.rbs +758 -0
  124. data/steep/Gemfile.lock +8 -8
  125. metadata +12 -6
  126. data/stdlib/fiber/0/fiber.rbs +0 -99
data/sig/location.rbs CHANGED
@@ -4,10 +4,6 @@ module RBS
4
4
  #
5
5
  # A location can have _child_ locations.
6
6
  #
7
- # ```
8
- #
9
- # ```
10
- #
11
7
  class Location[in RequiredChildKeys, in OptionalChildKeys]
12
8
  # The buffer this location points on.
13
9
  attr_reader buffer (): Buffer
@@ -42,13 +38,21 @@ module RBS
42
38
 
43
39
  attr_reader start_loc (): Buffer::loc
44
40
 
41
+ @start_loc: Buffer::loc?
42
+
45
43
  attr_reader end_loc (): Buffer::loc
46
44
 
45
+ @end_loc: Buffer::loc?
46
+
47
47
  attr_reader range (): Range[Integer]
48
48
 
49
+ @range: Range[Integer]?
50
+
49
51
  # A substring of buffer associated to the location.
50
52
  def source: () -> String
51
53
 
54
+ @source: String?
55
+
52
56
  def to_s: () -> String
53
57
 
54
58
  # Returns a string representation suitable for terminal output.
data/sig/manifest.yaml CHANGED
@@ -6,3 +6,4 @@ dependencies:
6
6
  - name: optparse
7
7
  - name: rubygems
8
8
  - name: tsort
9
+ - name: rdoc
data/sig/members.rbs CHANGED
@@ -161,7 +161,7 @@ module RBS
161
161
 
162
162
  include _HashEqual
163
163
 
164
- def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?visibility: visibility) -> instance
164
+ def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?visibility: visibility?) -> instance
165
165
  end
166
166
 
167
167
  class AttrReader < Base
@@ -1,9 +1,19 @@
1
1
  module RBS
2
2
  class DefinitionBuilder
3
+ # MethodBuilder calculates the sequence of methods available on given type
4
+ #
5
+ # The sequence are sorted topologically.
6
+ #
3
7
  class MethodBuilder
8
+ # Set of methods defined in a type.
9
+ #
4
10
  class Methods
5
11
  type instance_type = Types::ClassInstance | Types::ClassSingleton | Types::Interface
6
12
 
13
+ # Definition of a method in the type
14
+ #
15
+ # The Definition object allows invalid method definition so that more than one _original_ definitions may exist.
16
+ #
7
17
  class Definition
8
18
  type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
9
19
 
data/sig/namespace.rbs CHANGED
@@ -1,35 +1,49 @@
1
1
  module RBS
2
2
  # Namespace instance represents a _prefix of module names_.
3
3
  #
4
- # vvvvvvvvvvvvvv TypeName
5
- # RBS::Namespace
6
- # ^^^^^ Namespace
4
+ # ```
5
+ # vvvvvvvvvvvvvv TypeName
6
+ # RBS::Namespace
7
+ # ^^^^^ Namespace
7
8
  #
8
- # vvvvvvvvvv TypeName
9
- # RBS::Types
10
- # ^^^^^ Namespace
9
+ # vvvvvvvvvv TypeName
10
+ # RBS::Types
11
+ # ^^^^^ Namespace
11
12
  #
12
- # vvvvvvvvvvvvvvvvv TypeName
13
- # RBS::Types::Union
14
- # ^^^^^^^^^^^^ Namespace
13
+ # vvvvvvvvvvvvvvvvv TypeName
14
+ # RBS::Types::Union
15
+ # ^^^^^^^^^^^^ Namespace
16
+ # ```
15
17
  #
16
18
  # Note that `Namespace` is an RBS specific concept and there is no corresponding concept in Ruby.
17
19
  #
18
20
  # There are _absolute_ and _relative_ namespaces.
19
21
  #
20
- # Namespace(::RBS::) # Absolute namespace
21
- # Namespace( RBS::) # Relative namespace
22
+ # ```
23
+ # Namespace(::RBS::) # Absolute namespace
24
+ # Namespace( RBS::) # Relative namespace
25
+ # ```
22
26
  #
23
27
  # It also defines two special namespaces.
24
28
  #
25
- # :: # _Root_ namespace
26
- # # _Empty_ namespace
29
+ # ```
30
+ # :: # _Root_ namespace
31
+ # # _Empty_ namespace
32
+ # ```
27
33
  #
28
34
  class Namespace
29
35
  attr_reader path: Array[Symbol]
30
36
 
31
37
  def initialize: (path: Array[Symbol], absolute: boolish) -> void
32
38
 
39
+ @absolute: bool
40
+
41
+ @parent: Namespace?
42
+
43
+ self.@root: Namespace?
44
+
45
+ self.@empty: Namespace?
46
+
33
47
  # Returns new _empty_ namespace.
34
48
  def self.empty: () -> Namespace
35
49
 
@@ -38,26 +52,33 @@ module RBS
38
52
 
39
53
  # Concat two namespaces.
40
54
  #
41
- # Namespace("Foo::") + Namespace("Bar::") # => Foo::Bar::
42
- # Namespace("::Foo::") + Namespace("Bar::") # => ::Foo::Bar::
55
+ # ```rb
56
+ # Namespace("Foo::") + Namespace("Bar::") # => Foo::Bar::
57
+ # Namespace("::Foo::") + Namespace("Bar::") # => ::Foo::Bar::
58
+ # ```
43
59
  #
44
60
  # If `other` is an absolute namespace, it returns `other`.
45
61
  #
46
- # Namespace("Foo::") + Namespace("::Bar::") # => ::Bar::
47
- #
62
+ # ```rb
63
+ # Namespace("Foo::") + Namespace("::Bar::") # => ::Bar::
64
+ # ```
48
65
  def +: (Namespace other) -> Namespace
49
66
 
50
67
  # Add one path component to self.
51
68
  #
52
- # Namespace("Foo::").append(:Bar) # => Namespace("Foo::Bar::")
69
+ # ```rb
70
+ # Namespace("Foo::").append(:Bar) # => Namespace("Foo::Bar::")
71
+ # ```
53
72
  def append: (Symbol component) -> Namespace
54
73
 
55
74
  # Returns parent namespace.
56
75
  # Raises error there is no parent namespace.
57
76
  #
58
- # Namespace("::A").parent # => Namespace("::")
59
- # Namespace("::").parent # raises error
60
- # Namespace("A::B").parent # => Namespace("A")
77
+ # ```rb
78
+ # Namespace("::A").parent # => Namespace("::")
79
+ # Namespace("::").parent # raises error
80
+ # Namespace("A::B").parent # => Namespace("A")
81
+ # ```
61
82
  def parent: () -> Namespace
62
83
 
63
84
  # Returns true if self is absolute namespace.
@@ -68,9 +89,10 @@ module RBS
68
89
 
69
90
  # Returns absolute namespace.
70
91
  #
71
- # Namespace("A").absolute! # => Namespace("::A")
72
- # Namespace("::A").absolute! # => Namespace("::A")
73
- #
92
+ # ```rb
93
+ # Namespace("A").absolute! # => Namespace("::A")
94
+ # Namespace("::A").absolute! # => Namespace("::A")
95
+ # ```
74
96
  def absolute!: () -> Namespace
75
97
 
76
98
  # Returns _relative_ namespace.
@@ -91,8 +113,9 @@ module RBS
91
113
 
92
114
  # Returns a pair of parent namespace and a symbol of last component.
93
115
  #
94
- # Namespace("::A::B::C").split # => [Namespace("::A::B::"), :C]
95
- #
116
+ # ```rb
117
+ # Namespace("::A::B::C").split # => [Namespace("::A::B::"), :C]
118
+ # ```
96
119
  def split: () -> [Namespace, Symbol]?
97
120
 
98
121
  def to_s: () -> String
@@ -105,12 +128,12 @@ module RBS
105
128
 
106
129
  # Iterate over Namespace for each element in ascending order.
107
130
  #
108
- # ```
131
+ # ```rb
109
132
  # Namespace.parse("::A::B::C").ascend {|ns| p ns }
110
- # => ::A::B::C
111
- # => ::A::B
112
- # => ::A
113
- # => ::(root)
133
+ # # => ::A::B::C
134
+ # # => ::A::B
135
+ # # => ::A
136
+ # # => ::(root)
114
137
  # ```
115
138
  def ascend: () { (Namespace) -> void } -> void
116
139
  | () -> Enumerator[Namespace, void]
data/sig/prototype/rb.rbs CHANGED
@@ -70,8 +70,12 @@ module RBS
70
70
 
71
71
  def private: () -> AST::Members::Private
72
72
 
73
+ @private: AST::Members::Private?
74
+
73
75
  def public: () -> AST::Members::Public
74
76
 
77
+ @public: AST::Members::Public?
78
+
75
79
  def current_accessibility: (Array[decl] decls, ?Integer index) -> (AST::Members::Private | AST::Members::Public)
76
80
 
77
81
  def remove_unnecessary_accessibility_methods!: (Array[decl]) -> void
data/sig/rbs.rbs CHANGED
@@ -1,9 +1,9 @@
1
1
  module RBS
2
2
  def self.logger: () -> Logger
3
3
 
4
- def self.logger_level: () -> untyped
4
+ def self.logger_level: () -> Integer?
5
5
 
6
- def self.logger_level=: (untyped) -> untyped
6
+ def self.logger_level=: (Integer?) -> Integer?
7
7
 
8
8
  def self.logger_output: () -> IO
9
9
 
@@ -11,9 +11,11 @@ module RBS
11
11
 
12
12
  def self.print_warning: () { () -> String } -> void
13
13
 
14
- self.@warnings: Set[String]
15
- end
14
+ self.@logger: Logger?
15
+
16
+ self.@logger_output: IO?
16
17
 
17
- module Ruby
18
- Signature: singleton(RBS)
18
+ self.@logger_level: Integer?
19
+
20
+ self.@warnings: Set[String]
19
21
  end
data/sig/rdoc/rbs.rbs ADDED
@@ -0,0 +1,63 @@
1
+ module RDoc
2
+ class Parser
3
+ class RBS < Parser
4
+ end
5
+ end
6
+ end
7
+
8
+ module RBS
9
+ module RDocPlugin
10
+ class Parser
11
+ type allowed_decls = RBS::AST::Declarations::Class
12
+ | RBS::AST::Declarations::Module
13
+ | RBS::AST::Declarations::Constant
14
+
15
+ def initialize: (RDoc::TopLevel top_level, String content) -> void
16
+
17
+ def scan: () -> RDoc::TopLevel
18
+
19
+ def parse_member: (decl: RBS::AST::Declarations::t | RBS::AST::Members::t, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
20
+
21
+ def parse_class_decl: (decl: RBS::AST::Declarations::Class, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
22
+
23
+ def parse_module_decl: (decl: RBS::AST::Declarations::Module | RBS::AST::Declarations::Interface, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
24
+
25
+ def parse_constant_decl: (decl: RBS::AST::Declarations::Constant, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
26
+
27
+ def parse_method_decl: (decl: RBS::AST::Members::MethodDefinition, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
28
+
29
+ def parse_method_alias_decl: (decl: RBS::AST::Members::Alias, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
30
+
31
+ def parse_attr_decl: (decl: RBS::AST::Members::AttrReader | RBS::AST::Members::AttrAccessor | RBS::AST::Members::AttrWriter, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
32
+
33
+ def parse_include_decl: (decl: RBS::AST::Members::Include, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
34
+
35
+ def parse_extend_decl: (decl: RBS::AST::Members::Extend, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
36
+
37
+ private
38
+
39
+ def construct_comment: (context: RDoc::Context, comment: String) -> RDoc::Comment
40
+
41
+ # _DeclWithComment is a utility interface that has `#comment`
42
+ #
43
+ interface _DeclWithComment
44
+ def comment: () -> ::RBS::AST::Comment?
45
+ end
46
+
47
+ # Extract comment string from a declaration with comment
48
+ #
49
+ # * If `#comment" returns a Comment object, it returns its `#string` value
50
+ # * If `#comment` returns `nil`, it raises an error
51
+ #
52
+ # Note that you have to confirm if the `#comment` of given declartion exists.
53
+ #
54
+ # ```ruby
55
+ # comment = construct_comment(context: context, comment: comment_string(decl)) if decl.comment
56
+ # ```
57
+ #
58
+ def comment_string: (_DeclWithComment) -> String
59
+
60
+ def fully_qualified_name: (outer_name: RBS::TypeName?, decl: allowed_decls) -> RBS::TypeName
61
+ end
62
+ end
63
+ end
@@ -4,7 +4,7 @@ module Gem
4
4
 
5
5
  attr_reader gem_dir (): String
6
6
 
7
- def self.find_by_name: (String name, ?String? version) -> instance
7
+ def self.find_by_name: (String name, *String requirements) -> instance
8
8
  end
9
9
  end
10
10
 
@@ -39,10 +39,6 @@ module RDoc
39
39
  end
40
40
  end
41
41
 
42
- class CodeObject
43
- def comment: () -> RDoc::Markup::Document
44
- end
45
-
46
42
  class Context < CodeObject
47
43
 
48
44
  end
@@ -55,32 +51,6 @@ module RDoc
55
51
  def attributes: () -> Array[Attr]
56
52
  end
57
53
 
58
- class Constant < CodeObject
59
- def name: () -> String
60
- end
61
-
62
- class AnyMethod < MethodAttr
63
- def arglists: () -> String?
64
-
65
- def callseq: () -> String?
66
- end
67
-
68
- class MethodAttr < CodeObject
69
- attr_reader name: String
70
-
71
- attr_reader singleton: bool
72
-
73
- attr_reader is_alias_for: MethodAttr?
74
-
75
- attr_reader call_seq: String
76
-
77
- attr_reader arglists: String
78
- end
79
-
80
- class Attr < MethodAttr
81
- attr_accessor rw: "RW" | "R" | "W"
82
- end
83
-
84
54
  module Markup
85
55
  class Document
86
56
  include Enumerable[Document]
data/sig/sorter.rbs ADDED
@@ -0,0 +1,23 @@
1
+ module RBS
2
+ class Sorter
3
+ include RBS::AST
4
+
5
+ type member = AST::Declarations::Class::member
6
+ | AST::Declarations::Module::member
7
+ | AST::Declarations::Interface::member
8
+
9
+ attr_reader path: Pathname
10
+
11
+ attr_reader stdout: IO
12
+
13
+ def initialize: (Pathname path, ?stdout: IO) -> void
14
+
15
+ def run: () -> void
16
+
17
+ def group: (member member) -> Numeric
18
+
19
+ def key: (member member) -> String
20
+
21
+ def sort_decl!: (AST::Declarations::t decl) -> void
22
+ end
23
+ end
data/sig/types.rbs CHANGED
@@ -404,13 +404,19 @@ module RBS
404
404
  def drop_tail: () -> [Param, Function]
405
405
 
406
406
  def has_keyword?: () -> bool
407
+
408
+ def amap: [A, B] (Array[A]) { (A) -> B } -> Array[B]
409
+
410
+ def hmapv: [X, Y, Z] (Hash[X, Y]) { (Y) -> Z } -> Hash[X, Z]
407
411
  end
408
412
 
409
413
  class Block
410
414
  attr_reader type: Types::Function
411
415
  attr_reader required: bool
412
416
 
413
- def initialize: (type: Types::Function, required: boolish) -> void
417
+ attr_reader self_type: t?
418
+
419
+ def initialize: (type: Types::Function, ?self_type: t?, required: boolish) -> void
414
420
 
415
421
  def ==: (untyped other) -> bool
416
422
 
@@ -421,13 +427,19 @@ module RBS
421
427
  def map_type: () { (t) -> t } -> Block
422
428
  end
423
429
 
430
+ module SelfTypeBindingHelper
431
+ def self?.self_type_binding_to_s: (t?) -> String
432
+ end
433
+
424
434
  class Proc
425
435
  attr_reader type: Function
426
436
  attr_reader block: Block?
427
437
 
438
+ attr_reader self_type: t?
439
+
428
440
  type loc = Location[bot, bot]
429
441
 
430
- def initialize: (location: loc?, type: Function, block: Block?) -> void
442
+ def initialize: (location: loc?, type: Function, ?self_type: t?, block: Block?) -> void
431
443
 
432
444
  include _TypeBase
433
445
 
data/sig/vendorer.rbs CHANGED
@@ -1,44 +1,51 @@
1
1
  module RBS
2
2
  # Copies RBS files loaded through `loader` under `vendor_dir`.
3
- #
3
+ #
4
4
  # Core libraries and library RBS files will be copied.
5
- #
6
- # loader = RBS::EnvironmentLoader.new()
7
- #
8
- # loader.add(library: set) # Libraries will be copied.
9
- # loader.add(library: "minitest", version: "1.2.3")
10
- #
11
- # loader.add(path: Pathname("sig")) # Dirs will be ignored.
12
- #
13
- # vendorer = RBS::Vendorer.new(vendor_dir: Pathname("vendor/rbs"), loader: loader)
14
- # vendorer.clearn!
15
- # vendorer.copy!
16
- #
5
+ #
6
+ # ```rb
7
+ # loader = RBS::EnvironmentLoader.new()
8
+ #
9
+ # loader.add(library: set) # Libraries will be copied.
10
+ # loader.add(library: "minitest", version: "1.2.3")
11
+ #
12
+ # loader.add(path: Pathname("sig")) # Dirs will be ignored.
13
+ #
14
+ # vendorer = RBS::Vendorer.new(vendor_dir: Pathname("vendor/rbs"), loader: loader)
15
+ # vendorer.clearn!
16
+ # vendorer.copy!
17
+ # ```
18
+ #
17
19
  # The result will be:
18
- # vendor/rbs/core => Will include core RBSs
19
- # vendor/rbs/set-0 => Will include `set` library RBSs.
20
- # vendor/rbs/minitest-1.2.3 => Will include `minitest` library RBSs.
21
- #
20
+ #
21
+ # ```
22
+ # vendor/rbs/core => Will include core RBSs
23
+ # vendor/rbs/set-0 => Will include `set` library RBSs.
24
+ # vendor/rbs/minitest-1.2.3 => Will include `minitest` library RBSs.
25
+ # ```
26
+ #
22
27
  # The vendorerd RBSs will be loaded through :dir source.
23
- #
24
- # loader = RBS::EnvironmentLoader.new(core_root: nil, repository: RBS::Repository.new(no_stdlib: true))
25
- # loader.add(path: Pathname("vendor/rbs"))
26
- # loader.add(path: Pathname("sig"))
27
- #
28
+ #
29
+ # ```rb
30
+ # loader = RBS::EnvironmentLoader.new(core_root: nil, repository: RBS::Repository.new(no_stdlib: true))
31
+ # loader.add(path: Pathname("vendor/rbs"))
32
+ # loader.add(path: Pathname("sig"))
33
+ # ```
34
+ #
28
35
  class Vendorer
29
36
  attr_reader vendor_dir: Pathname
30
37
  attr_reader loader: EnvironmentLoader
31
38
 
32
39
  def initialize: (vendor_dir: Pathname, loader: EnvironmentLoader) -> void
33
-
40
+
34
41
  # Copy RBS files into `vendor_dir`.
35
42
  # Ensures the `vendor_dir` exists.
36
43
  def copy!: () -> void
37
44
 
38
45
  # Deletes `vendor_dir` and its content if exists.
39
- #
46
+ #
40
47
  def clean!: () -> void
41
-
48
+
42
49
  def ensure_dir: [A] () { () -> A } -> A
43
50
  end
44
51
  end