mangrove 0.18.0 → 0.19.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/lib/mangrove/result.rb +92 -3
  4. data/lib/mangrove/version.rb +1 -1
  5. data/sorbet/rbi/annotations/.gitattributes +1 -0
  6. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1 -5
  7. data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
  8. data/sorbet/rbi/gems/json@2.6.3.rbi +73 -65
  9. data/sorbet/rbi/gems/prism@0.15.1.rbi +23916 -2
  10. data/sorbet/rbi/gems/rake@13.0.6.rbi +1 -141
  11. data/sorbet/rbi/gems/{rbi@0.1.1.rbi → rbi@0.1.3.rbi} +53 -57
  12. data/sorbet/rbi/gems/regexp_parser@2.8.2.rbi +37 -37
  13. data/sorbet/rbi/gems/rexml@3.2.6.rbi +2 -2
  14. data/sorbet/rbi/gems/rspec-core@3.12.2.rbi +8 -39
  15. data/sorbet/rbi/gems/rspec-expectations@3.12.3.rbi +25 -25
  16. data/sorbet/rbi/gems/rspec-mocks@3.12.6.rbi +4 -8
  17. data/sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi +2 -2
  18. data/sorbet/rbi/gems/rspec-support@3.12.1.rbi +2 -2
  19. data/sorbet/rbi/gems/rspec@3.12.0.rbi +1 -1
  20. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +263 -176
  21. data/sorbet/rbi/gems/rubocop@1.57.1.rbi +1019 -719
  22. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +5 -5
  23. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +216 -0
  24. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +2135 -0
  25. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +8 -0
  26. data/sorbet/rbi/gems/spoom@1.2.4.rbi +15 -15
  27. data/sorbet/rbi/gems/{tapioca@0.11.9.rbi → tapioca@0.11.10.rbi} +40 -29
  28. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +1 -1
  29. data/sorbet/rbi/gems/yard@0.9.34.rbi +46 -50
  30. data/sorbet/tapioca/require.rb +6 -1
  31. metadata +9 -34
  32. data/docs/Mangrove/ControlFlow/ControlSignal.html +0 -223
  33. data/docs/Mangrove/ControlFlow/Handler/ClassMethods.html +0 -563
  34. data/docs/Mangrove/ControlFlow/Handler.html +0 -139
  35. data/docs/Mangrove/ControlFlow/Rewriter.html +0 -331
  36. data/docs/Mangrove/ControlFlow.html +0 -115
  37. data/docs/Mangrove/Option/ControlSignal.html +0 -434
  38. data/docs/Mangrove/Option/None.html +0 -1085
  39. data/docs/Mangrove/Option/Some.html +0 -1202
  40. data/docs/Mangrove/Option.html +0 -1145
  41. data/docs/Mangrove/Result/ControlSignal.html +0 -434
  42. data/docs/Mangrove/Result/Err.html +0 -2254
  43. data/docs/Mangrove/Result/Ok.html +0 -2219
  44. data/docs/Mangrove/Result.html +0 -2475
  45. data/docs/Mangrove.html +0 -144
  46. data/docs/_index.html +0 -225
  47. data/docs/class_list.html +0 -51
  48. data/docs/css/common.css +0 -1
  49. data/docs/css/full_list.css +0 -58
  50. data/docs/css/style.css +0 -497
  51. data/docs/file.README.html +0 -245
  52. data/docs/file_list.html +0 -56
  53. data/docs/frames.html +0 -17
  54. data/docs/index.html +0 -245
  55. data/docs/js/app.js +0 -314
  56. data/docs/js/full_list.js +0 -216
  57. data/docs/js/jquery.js +0 -4
  58. data/docs/method_list.html +0 -939
  59. data/docs/top-level-namespace.html +0 -110
  60. data/sorbet/rbi/gems/yarp@0.13.0.rbi +0 -21646
  61. data/sorbet/rbi/shims/mangrove/option.rbi +0 -15
  62. data/sorbet/rbi/shims/mangrove/result.rbi +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1cfc3160fc21f4d4a647ffa2626d32fd547e5dd16e85da36614d2aee7705a2f4
4
- data.tar.gz: 8f51c89c685e1d9bb33c803237af0de5dfc280812d7312d03cd95483219c3a47
3
+ metadata.gz: 01155ce389be568b548bdbf4fa40a029c4ff6575f9dfa41bba52c1f75bb2d6c5
4
+ data.tar.gz: 6af2e06f168ca3406e884e3d751b3c21fecf0fbfc0487bca24fa8e7fca08839d
5
5
  SHA512:
6
- metadata.gz: 77016fe8709eea630aa24af790d175af9105339724c7145c982a47aa4ceb4f7d84a5fe15f39f56c4a23aaf7e93a8e020d4b5843ca844fc5ddfdbe48200604e45
7
- data.tar.gz: 75aae8968e35d34c7c2c69a16d822d0a65b0b79e0587623ad3520188e66c423a0aa7dad24b42060c37901c5b0d1e714806c5b78737249c781e77266f84a1806c
6
+ metadata.gz: 12df1c2a68dd9ffdc95a24a3db8ef1d651da0bdc557ec608ed2240d2f1efd2728f831a31a3843eb2dc34eb25559787e3dc6e09f1aad5c6aecd0a38d26eee7fa2
7
+ data.tar.gz: 29e3d2fe898d9c5a7376001b2b6f7844ad7ecd55a49efd18caed98fc4ddf09cbd05dc274f118486d7fc5ba491944d055c9dc319949ee001e5339c45b8d674639
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
  Mangrove provides type utility to use with Sorbet.
3
3
  use `rubocop-mangrove` to statically check rescuing ControlSignal is done
4
4
 
5
+ - [Documentation](https://kazzix14.github.io/mangrove/docs/)
6
+ - [Coverage](https://kazzix14.github.io/mangrove/coverage/index.html#_AllFiles)
7
+
5
8
  You can do something like this with the gem.
6
9
  ```ruby
7
10
  class TransposeExample
@@ -69,6 +69,18 @@ module Mangrove
69
69
  sig { abstract.type_parameters(:NewOkType).params(_t_new_ok: T::Class[T.type_parameter(:NewOkType)], block: T.proc.params(this: OkType).returns(Result[T.type_parameter(:NewOkType), ErrType])).returns(Result[T.type_parameter(:NewOkType), ErrType]) }
70
70
  def and_then_wt(_t_new_ok, &block); end
71
71
 
72
+ sig {
73
+ abstract
74
+ .params(
75
+ new_err_inner: ErrType,
76
+ condition: T.proc.params(inner: OkType).returns(T::Boolean)
77
+ )
78
+ .returns(
79
+ Result[OkType, ErrType]
80
+ )
81
+ }
82
+ def and_err_if(new_err_inner, &condition); end
83
+
72
84
  sig { abstract.params(other: Result[OkType, ErrType]).returns(Result[OkType, ErrType]) }
73
85
  def or(other); end
74
86
 
@@ -78,6 +90,18 @@ module Mangrove
78
90
  sig { abstract.type_parameters(:NewErrType).params(_t_new_err: T::Class[T.type_parameter(:NewErrType)], block: T.proc.params(this: ErrType).returns(Result[OkType, T.type_parameter(:NewErrType)])).returns(Result[OkType, T.type_parameter(:NewErrType)]) }
79
91
  def or_else_wt(_t_new_err, &block); end
80
92
 
93
+ sig {
94
+ abstract
95
+ .params(
96
+ new_ok_inner: OkType,
97
+ condition: T.proc.params(inner: ErrType).returns(T::Boolean)
98
+ )
99
+ .returns(
100
+ Result[OkType, ErrType]
101
+ )
102
+ }
103
+ def or_ok_if(new_ok_inner, &condition); end
104
+
81
105
  class << self
82
106
  extend T::Sig
83
107
  extend T::Generic
@@ -198,7 +222,7 @@ module Mangrove
198
222
  Result::Ok[T.type_parameter(:NewOkType), ErrType].new(block.call(@inner))
199
223
  end
200
224
 
201
- # Because sorbet deduct types from return values well. This method takes a type of new inner values.
225
+ # Because sorbet does not deduct types from return values well. This method takes a type of new inner values.
202
226
  sig { override.type_parameters(:NewOkType).params(_t_new_ok: T::Class[T.type_parameter(:NewOkType)], block: T.proc.params(this: OkType).returns(T.type_parameter(:NewOkType))).returns(Result[T.type_parameter(:NewOkType), ErrType]) }
203
227
  def map_ok_wt(_t_new_ok, &block)
204
228
  Result::Ok[T.type_parameter(:NewOkType), ErrType].new(block.call(@inner))
@@ -209,7 +233,7 @@ module Mangrove
209
233
  T.cast(self, Result::Ok[OkType, T.type_parameter(:NewErrType)])
210
234
  end
211
235
 
212
- # Because sorbet deduct types from return values well. This method takes a type of new inner values.
236
+ # Because sorbet does not deduct types from return values well. This method takes a type of new inner values.
213
237
  sig { override.type_parameters(:NewErrType).params(_t_new_err: T::Class[T.type_parameter(:NewErrType)], _block: T.proc.params(this: ErrType).returns(T.type_parameter(:NewErrType))).returns(Result[OkType, T.type_parameter(:NewErrType)]) }
214
238
  def map_err_wt(_t_new_err, &_block)
215
239
  T.cast(self, Result::Ok[OkType, T.type_parameter(:NewErrType)])
@@ -230,6 +254,24 @@ module Mangrove
230
254
  block.call(@inner)
231
255
  end
232
256
 
257
+ sig {
258
+ override
259
+ .params(
260
+ new_err_inner: ErrType,
261
+ condition: T.proc.params(inner: OkType).returns(T::Boolean)
262
+ )
263
+ .returns(
264
+ Result[OkType, ErrType]
265
+ )
266
+ }
267
+ def and_err_if(new_err_inner, &condition)
268
+ if condition.call(@inner)
269
+ Result::Err[OkType, ErrType].new(new_err_inner)
270
+ else
271
+ self
272
+ end
273
+ end
274
+
233
275
  sig { override.params(_other: Result[OkType, ErrType]).returns(Result[OkType, ErrType]) }
234
276
  def or(_other)
235
277
  self
@@ -245,6 +287,20 @@ module Mangrove
245
287
  T.cast(self, Result::Ok[OkType, T.type_parameter(:NewErrType)])
246
288
  end
247
289
 
290
+ sig {
291
+ override
292
+ .params(
293
+ _new_ok_inner: OkType,
294
+ _condition: T.proc.params(inner: ErrType).returns(T::Boolean)
295
+ )
296
+ .returns(
297
+ Result::Ok[OkType, ErrType]
298
+ )
299
+ }
300
+ def or_ok_if(_new_ok_inner, &_condition)
301
+ self
302
+ end
303
+
248
304
  sig { returns(String) }
249
305
  def to_s
250
306
  "#{super}: inner=`#{@inner}`"
@@ -330,7 +386,7 @@ module Mangrove
330
386
  T.cast(self, Result::Err[T.type_parameter(:NewOkType), ErrType])
331
387
  end
332
388
 
333
- # Because sorbet deduct types from return values well. This method takes a type of new inner values.
389
+ # Because sorbet does not deduct types from return values well. This method takes a type of new inner values.
334
390
  sig { override.type_parameters(:NewOkType).params(_t_new_ok: T::Class[T.type_parameter(:NewOkType)], _block: T.proc.params(this: OkType).returns(T.type_parameter(:NewOkType))).returns(Result[T.type_parameter(:NewOkType), ErrType]) }
335
391
  def map_ok_wt(_t_new_ok, &_block)
336
392
  T.cast(self, Result::Err[T.type_parameter(:NewOkType), ErrType])
@@ -341,6 +397,7 @@ module Mangrove
341
397
  Result::Err[OkType, T.type_parameter(:NewErrType)].new(block.call(@inner))
342
398
  end
343
399
 
400
+ # Because sorbet does not deduct types from return values well. This method takes a type of new inner values.
344
401
  sig { override.type_parameters(:NewErrType).params(_t_new_err: T::Class[T.type_parameter(:NewErrType)], block: T.proc.params(this: ErrType).returns(T.type_parameter(:NewErrType))).returns(Result[OkType, T.type_parameter(:NewErrType)]) }
345
402
  def map_err_wt(_t_new_err, &block)
346
403
  Result::Err[OkType, T.type_parameter(:NewErrType)].new(block.call(@inner))
@@ -361,6 +418,20 @@ module Mangrove
361
418
  T.cast(self, Result::Err[T.type_parameter(:NewOkType), ErrType])
362
419
  end
363
420
 
421
+ sig {
422
+ override
423
+ .params(
424
+ _new_err_inner: ErrType,
425
+ _condition: T.proc.params(inner: OkType).returns(T::Boolean)
426
+ )
427
+ .returns(
428
+ Result::Err[OkType, ErrType]
429
+ )
430
+ }
431
+ def and_err_if(_new_err_inner, &_condition)
432
+ self
433
+ end
434
+
364
435
  sig { override.params(other: Result[OkType, ErrType]).returns(Result[OkType, ErrType]) }
365
436
  def or(other)
366
437
  other
@@ -376,6 +447,24 @@ module Mangrove
376
447
  block.call(@inner)
377
448
  end
378
449
 
450
+ sig {
451
+ override
452
+ .params(
453
+ new_ok_inner: OkType,
454
+ condition: T.proc.params(inner: ErrType).returns(T::Boolean)
455
+ )
456
+ .returns(
457
+ Result[OkType, ErrType]
458
+ )
459
+ }
460
+ def or_ok_if(new_ok_inner, &condition)
461
+ if condition.call(@inner)
462
+ Result::Ok[OkType, ErrType].new(new_ok_inner)
463
+ else
464
+ self
465
+ end
466
+ end
467
+
379
468
  sig { returns(String) }
380
469
  def to_s
381
470
  "#{super}: inner=`#{@inner}`"
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.18.0"
5
+ VERSION = "0.19.1"
6
6
  end
@@ -0,0 +1 @@
1
+ **/*.rbi linguist-vendored=true
@@ -522,7 +522,7 @@ Diff::LCS::Change::VALID_ACTIONS = T.let(T.unsafe(nil), Array)
522
522
  # elements in the old and the new sequenced enumerables as well as the action
523
523
  # taken.
524
524
  #
525
- # source://diff-lcs//lib/diff/lcs/change.rb#100
525
+ # source://diff-lcs//lib/diff/lcs/change.rb#101
526
526
  class Diff::LCS::ContextChange < ::Diff::LCS::Change
527
527
  # @return [ContextChange] a new instance of ContextChange
528
528
  #
@@ -692,10 +692,6 @@ class Diff::LCS::DefaultCallbacks
692
692
  #
693
693
  # source://diff-lcs//lib/diff/lcs/callbacks.rb#17
694
694
  def match(event); end
695
-
696
- private
697
-
698
- def new(*_arg0); end
699
695
  end
700
696
  end
701
697
 
@@ -0,0 +1,376 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `docile` gem.
5
+ # Please instead update this file by running `bin/tapioca gem docile`.
6
+
7
+ # Docile keeps your Ruby DSLs tame and well-behaved.
8
+ #
9
+ # source://docile//lib/docile/version.rb#3
10
+ module Docile
11
+ extend ::Docile::Execution
12
+
13
+ private
14
+
15
+ # Execute a block in the context of an object whose methods represent the
16
+ # commands in a DSL.
17
+ #
18
+ # Use this method to execute an *imperative* DSL, which means that:
19
+ #
20
+ # 1. Each command mutates the state of the DSL context object
21
+ # 2. The return value of each command is ignored
22
+ # 3. The final return value is the original context object
23
+ #
24
+ # @example Use a String as a DSL
25
+ # Docile.dsl_eval("Hello, world!") do
26
+ # reverse!
27
+ # upcase!
28
+ # end
29
+ # #=> "!DLROW ,OLLEH"
30
+ # @example Use an Array as a DSL
31
+ # Docile.dsl_eval([]) do
32
+ # push 1
33
+ # push 2
34
+ # pop
35
+ # push 3
36
+ # end
37
+ # #=> [1, 3]
38
+ # @note Use with an *imperative* DSL (commands modify the context object)
39
+ # @param dsl [Object] context object whose methods make up the DSL
40
+ # @param args [Array] arguments to be passed to the block
41
+ # @param block [Proc] the block of DSL commands to be executed against the
42
+ # `dsl` context object
43
+ # @return [Object] the `dsl` context object after executing the block
44
+ #
45
+ # source://docile//lib/docile.rb#45
46
+ def dsl_eval(dsl, *args, **_arg2, &block); end
47
+
48
+ # Execute a block in the context of an immutable object whose methods,
49
+ # and the methods of their return values, represent the commands in a DSL.
50
+ #
51
+ # Use this method to execute a *functional* DSL, which means that:
52
+ #
53
+ # 1. The original DSL context object is never mutated
54
+ # 2. Each command returns the next DSL context object
55
+ # 3. The final return value is the value returned by the last command
56
+ #
57
+ # @example Use a frozen String as a DSL
58
+ # Docile.dsl_eval_immutable("I'm immutable!".freeze) do
59
+ # reverse
60
+ # upcase
61
+ # end
62
+ # #=> "!ELBATUMMI M'I"
63
+ # @example Use a Float as a DSL
64
+ # Docile.dsl_eval_immutable(84.5) do
65
+ # fdiv(2)
66
+ # floor
67
+ # end
68
+ # #=> 42
69
+ # @note Use with a *functional* DSL (commands return successor
70
+ # context objects)
71
+ # @param dsl [Object] immutable context object whose methods make up the
72
+ # initial DSL
73
+ # @param args [Array] arguments to be passed to the block
74
+ # @param block [Proc] the block of DSL commands to be executed against the
75
+ # `dsl` context object and successor return values
76
+ # @return [Object] the return value of the final command in the block
77
+ #
78
+ # source://docile//lib/docile.rb#128
79
+ def dsl_eval_immutable(dsl, *args, **_arg2, &block); end
80
+
81
+ # Execute a block in the context of an object whose methods represent the
82
+ # commands in a DSL, and return *the block's return value*.
83
+ #
84
+ # Use this method to execute an *imperative* DSL, which means that:
85
+ #
86
+ # 1. Each command mutates the state of the DSL context object
87
+ # 2. The return value of each command is ignored
88
+ # 3. The final return value is the original context object
89
+ #
90
+ # @example Use a String as a DSL
91
+ # Docile.dsl_eval_with_block_return("Hello, world!") do
92
+ # reverse!
93
+ # upcase!
94
+ # first
95
+ # end
96
+ # #=> "!"
97
+ # @example Use an Array as a DSL
98
+ # Docile.dsl_eval_with_block_return([]) do
99
+ # push "a"
100
+ # push "b"
101
+ # pop
102
+ # push "c"
103
+ # length
104
+ # end
105
+ # #=> 2
106
+ # @note Use with an *imperative* DSL (commands modify the context object)
107
+ # @param dsl [Object] context object whose methods make up the DSL
108
+ # @param args [Array] arguments to be passed to the block
109
+ # @param block [Proc] the block of DSL commands to be executed against the
110
+ # `dsl` context object
111
+ # @return [Object] the return value from executing the block
112
+ #
113
+ # source://docile//lib/docile.rb#87
114
+ def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end
115
+
116
+ class << self
117
+ # Execute a block in the context of an object whose methods represent the
118
+ # commands in a DSL.
119
+ #
120
+ # Use this method to execute an *imperative* DSL, which means that:
121
+ #
122
+ # 1. Each command mutates the state of the DSL context object
123
+ # 2. The return value of each command is ignored
124
+ # 3. The final return value is the original context object
125
+ #
126
+ # @example Use a String as a DSL
127
+ # Docile.dsl_eval("Hello, world!") do
128
+ # reverse!
129
+ # upcase!
130
+ # end
131
+ # #=> "!DLROW ,OLLEH"
132
+ # @example Use an Array as a DSL
133
+ # Docile.dsl_eval([]) do
134
+ # push 1
135
+ # push 2
136
+ # pop
137
+ # push 3
138
+ # end
139
+ # #=> [1, 3]
140
+ # @note Use with an *imperative* DSL (commands modify the context object)
141
+ # @param dsl [Object] context object whose methods make up the DSL
142
+ # @param args [Array] arguments to be passed to the block
143
+ # @param block [Proc] the block of DSL commands to be executed against the
144
+ # `dsl` context object
145
+ # @return [Object] the `dsl` context object after executing the block
146
+ #
147
+ # source://docile//lib/docile.rb#45
148
+ def dsl_eval(dsl, *args, **_arg2, &block); end
149
+
150
+ # Execute a block in the context of an immutable object whose methods,
151
+ # and the methods of their return values, represent the commands in a DSL.
152
+ #
153
+ # Use this method to execute a *functional* DSL, which means that:
154
+ #
155
+ # 1. The original DSL context object is never mutated
156
+ # 2. Each command returns the next DSL context object
157
+ # 3. The final return value is the value returned by the last command
158
+ #
159
+ # @example Use a frozen String as a DSL
160
+ # Docile.dsl_eval_immutable("I'm immutable!".freeze) do
161
+ # reverse
162
+ # upcase
163
+ # end
164
+ # #=> "!ELBATUMMI M'I"
165
+ # @example Use a Float as a DSL
166
+ # Docile.dsl_eval_immutable(84.5) do
167
+ # fdiv(2)
168
+ # floor
169
+ # end
170
+ # #=> 42
171
+ # @note Use with a *functional* DSL (commands return successor
172
+ # context objects)
173
+ # @param dsl [Object] immutable context object whose methods make up the
174
+ # initial DSL
175
+ # @param args [Array] arguments to be passed to the block
176
+ # @param block [Proc] the block of DSL commands to be executed against the
177
+ # `dsl` context object and successor return values
178
+ # @return [Object] the return value of the final command in the block
179
+ #
180
+ # source://docile//lib/docile.rb#128
181
+ def dsl_eval_immutable(dsl, *args, **_arg2, &block); end
182
+
183
+ # Execute a block in the context of an object whose methods represent the
184
+ # commands in a DSL, and return *the block's return value*.
185
+ #
186
+ # Use this method to execute an *imperative* DSL, which means that:
187
+ #
188
+ # 1. Each command mutates the state of the DSL context object
189
+ # 2. The return value of each command is ignored
190
+ # 3. The final return value is the original context object
191
+ #
192
+ # @example Use a String as a DSL
193
+ # Docile.dsl_eval_with_block_return("Hello, world!") do
194
+ # reverse!
195
+ # upcase!
196
+ # first
197
+ # end
198
+ # #=> "!"
199
+ # @example Use an Array as a DSL
200
+ # Docile.dsl_eval_with_block_return([]) do
201
+ # push "a"
202
+ # push "b"
203
+ # pop
204
+ # push "c"
205
+ # length
206
+ # end
207
+ # #=> 2
208
+ # @note Use with an *imperative* DSL (commands modify the context object)
209
+ # @param dsl [Object] context object whose methods make up the DSL
210
+ # @param args [Array] arguments to be passed to the block
211
+ # @param block [Proc] the block of DSL commands to be executed against the
212
+ # `dsl` context object
213
+ # @return [Object] the return value from executing the block
214
+ #
215
+ # source://docile//lib/docile.rb#87
216
+ def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end
217
+ end
218
+ end
219
+
220
+ # This is used to remove entries pointing to Docile's source files
221
+ # from {Exception#backtrace} and {Exception#backtrace_locations}.
222
+ #
223
+ # If {NoMethodError} is caught then the exception object will be extended
224
+ # by this module to add filter functionalities.
225
+ #
226
+ # @api private
227
+ #
228
+ # source://docile//lib/docile/backtrace_filter.rb#11
229
+ module Docile::BacktraceFilter
230
+ # @api private
231
+ #
232
+ # source://docile//lib/docile/backtrace_filter.rb#14
233
+ def backtrace; end
234
+
235
+ # @api private
236
+ #
237
+ # source://docile//lib/docile/backtrace_filter.rb#19
238
+ def backtrace_locations; end
239
+ end
240
+
241
+ # @api private
242
+ #
243
+ # source://docile//lib/docile/backtrace_filter.rb#12
244
+ Docile::BacktraceFilter::FILTER_PATTERN = T.let(T.unsafe(nil), Regexp)
245
+
246
+ # Operates in the same manner as {FallbackContextProxy}, but replacing
247
+ # the primary `receiver` object with the result of each proxied method.
248
+ #
249
+ # This is useful for implementing DSL evaluation for immutable context
250
+ # objects.
251
+ #
252
+ #
253
+ # @api private
254
+ # @see Docile.dsl_eval_immutable
255
+ #
256
+ # source://docile//lib/docile/chaining_fallback_context_proxy.rb#19
257
+ class Docile::ChainingFallbackContextProxy < ::Docile::FallbackContextProxy
258
+ # Proxy methods as in {FallbackContextProxy#method_missing}, replacing
259
+ # `receiver` with the returned value.
260
+ #
261
+ # @api private
262
+ #
263
+ # source://docile//lib/docile/chaining_fallback_context_proxy.rb#20
264
+ def method_missing(method, *args, **_arg2, &block); end
265
+ end
266
+
267
+ # A namespace for functions relating to the execution of a block against a
268
+ # proxy object.
269
+ #
270
+ # @api private
271
+ #
272
+ # source://docile//lib/docile/execution.rb#8
273
+ module Docile::Execution
274
+ private
275
+
276
+ # Execute a block in the context of an object whose methods represent the
277
+ # commands in a DSL, using a specific proxy class.
278
+ #
279
+ # @api private
280
+ # @param dsl [Object] context object whose methods make up the
281
+ # (initial) DSL
282
+ # @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context
283
+ # @param args [Array] arguments to be passed to the block
284
+ # @param block [Proc] the block of DSL commands to be executed
285
+ # @return [Object] the return value of the block
286
+ #
287
+ # source://docile//lib/docile/execution.rb#19
288
+ def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end
289
+
290
+ class << self
291
+ # Execute a block in the context of an object whose methods represent the
292
+ # commands in a DSL, using a specific proxy class.
293
+ #
294
+ # @api private
295
+ # @param dsl [Object] context object whose methods make up the
296
+ # (initial) DSL
297
+ # @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context
298
+ # @param args [Array] arguments to be passed to the block
299
+ # @param block [Proc] the block of DSL commands to be executed
300
+ # @return [Object] the return value of the block
301
+ #
302
+ # source://docile//lib/docile/execution.rb#19
303
+ def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end
304
+ end
305
+ end
306
+
307
+ # A proxy object with a primary receiver as well as a secondary
308
+ # fallback receiver.
309
+ #
310
+ # Will attempt to forward all method calls first to the primary receiver,
311
+ # and then to the fallback receiver if the primary does not handle that
312
+ # method.
313
+ #
314
+ # This is useful for implementing DSL evaluation in the context of an object.
315
+ #
316
+ #
317
+ # @api private
318
+ # @see Docile.dsl_eval
319
+ #
320
+ # source://docile//lib/docile/fallback_context_proxy.rb#20
321
+ class Docile::FallbackContextProxy
322
+ # @api private
323
+ # @param receiver [Object] the primary proxy target to which all methods
324
+ # initially will be forwarded
325
+ # @param fallback [Object] the fallback proxy target to which any methods
326
+ # not handled by `receiver` will be forwarded
327
+ # @return [FallbackContextProxy] a new instance of FallbackContextProxy
328
+ #
329
+ # source://docile//lib/docile/fallback_context_proxy.rb#46
330
+ def initialize(receiver, fallback); end
331
+
332
+ # @api private
333
+ # @return [Array<Symbol>] Instance variable names, excluding
334
+ # {NON_PROXIED_INSTANCE_VARIABLES}
335
+ #
336
+ # source://docile//lib/docile/fallback_context_proxy.rb#85
337
+ def instance_variables; end
338
+
339
+ # Proxy all methods, excluding {NON_PROXIED_METHODS}, first to `receiver`
340
+ # and then to `fallback` if not found.
341
+ #
342
+ # @api private
343
+ #
344
+ # source://docile//lib/docile/fallback_context_proxy.rb#91
345
+ def method_missing(method, *args, **_arg2, &block); end
346
+ end
347
+
348
+ # The set of methods which will **not** fallback from the block's context
349
+ # to the dsl object.
350
+ #
351
+ # @api private
352
+ #
353
+ # source://docile//lib/docile/fallback_context_proxy.rb#30
354
+ Docile::FallbackContextProxy::NON_FALLBACK_METHODS = T.let(T.unsafe(nil), Set)
355
+
356
+ # The set of instance variables which are local to this object and hidden.
357
+ # All other instance variables will be copied in and out of this object
358
+ # from the scope in which this proxy was created.
359
+ #
360
+ # @api private
361
+ #
362
+ # source://docile//lib/docile/fallback_context_proxy.rb#35
363
+ Docile::FallbackContextProxy::NON_PROXIED_INSTANCE_VARIABLES = T.let(T.unsafe(nil), Set)
364
+
365
+ # The set of methods which will **not** be proxied, but instead answered
366
+ # by this object directly.
367
+ #
368
+ # @api private
369
+ #
370
+ # source://docile//lib/docile/fallback_context_proxy.rb#23
371
+ Docile::FallbackContextProxy::NON_PROXIED_METHODS = T.let(T.unsafe(nil), Set)
372
+
373
+ # The current version of this library
374
+ #
375
+ # source://docile//lib/docile/version.rb#5
376
+ Docile::VERSION = T.let(T.unsafe(nil), String)