bcdd-result 0.7.0 → 0.8.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.
data/sig/bcdd/result.rbs CHANGED
@@ -11,6 +11,9 @@ class BCDD::Result
11
11
  attr_reader data: BCDD::Result::Data
12
12
  attr_reader subject: untyped
13
13
 
14
+ def self.config: -> BCDD::Result::Config
15
+ def self.configuration: { (BCDD::Result::Config) -> void } -> BCDD::Result::Config
16
+
14
17
  def initialize: (
15
18
  type: Symbol,
16
19
  value: untyped,
@@ -94,6 +97,10 @@ end
94
97
 
95
98
  class BCDD::Result
96
99
  module Mixin
100
+ module Factory
101
+ def self.module!: -> Module
102
+ end
103
+
97
104
  module Methods
98
105
  def Success: (Symbol type, ?untyped value) -> BCDD::Result::Success
99
106
 
@@ -111,13 +118,15 @@ class BCDD::Result
111
118
 
112
119
  OPTIONS: Hash[Symbol, Module]
113
120
 
114
- def self.options: (Array[Symbol]) -> Array[Module]
121
+ def self.options: (Hash[Symbol, Hash[Symbol, bool]]) -> Array[Module]
115
122
  end
116
-
117
- def self.module!: -> Module
118
123
  end
119
124
 
120
- def self.mixin: (?with: Array[Symbol]) -> Module
125
+ def self.mixin: (?config: Hash[Symbol, Hash[Symbol, bool]]) -> Module
126
+
127
+ def self.mixin_module: -> singleton(BCDD::Result::Mixin)
128
+
129
+ def self.result_factory: -> singleton(BCDD::Result)
121
130
  end
122
131
 
123
132
  class BCDD::Result
@@ -225,16 +234,14 @@ module BCDD::Result::Contract
225
234
  BCDD::Result::Contract::Evaluator
226
235
  ) -> BCDD::Result::Contract::TypeChecker
227
236
 
228
- ToEnsure: ^(Hash[Symbol, untyped] | Array[Symbol])
229
- -> BCDD::Result::Contract::Evaluator
237
+ ToEnsure: ^(Hash[Symbol, untyped] | Array[Symbol], Hash[Symbol, Hash[Symbol, bool]])
238
+ -> BCDD::Result::Contract::Interface
230
239
 
231
240
  def self.new: (
232
241
  success: Hash[Symbol, untyped] | Array[Symbol],
233
- failure: Hash[Symbol, untyped] | Array[Symbol]
242
+ failure: Hash[Symbol, untyped] | Array[Symbol],
243
+ config: Hash[Symbol, Hash[Symbol, bool]]
234
244
  ) -> BCDD::Result::Contract::Evaluator
235
-
236
- def self.nil_as_valid_value_checking!: (?enabled: bool) -> void
237
- def self.nil_as_valid_value_checking?: -> bool
238
245
  end
239
246
 
240
247
  module BCDD::Result::Contract
@@ -309,7 +316,14 @@ module BCDD::Result::Contract
309
316
  class ForTypesAndValues
310
317
  include Interface
311
318
 
312
- def initialize: (Hash[Symbol, untyped]) -> void
319
+ def initialize: (
320
+ Hash[Symbol, untyped],
321
+ Hash[Symbol, Hash[Symbol, bool]]
322
+ ) -> void
323
+
324
+ private
325
+
326
+ def nil_as_valid_value_checking?: -> bool
313
327
  end
314
328
  end
315
329
 
@@ -334,16 +348,35 @@ end
334
348
 
335
349
  class BCDD::Result::Expectations
336
350
  def self.mixin: (
337
- ?with: Symbol,
351
+ ?config: Hash[Symbol, Hash[Symbol, bool]],
338
352
  ?success: Hash[Symbol, untyped] | Array[Symbol],
339
353
  ?failure: Hash[Symbol, untyped] | Array[Symbol]
340
354
  ) -> Module
341
355
 
356
+ def self.mixin!: (
357
+ ?config: Hash[Symbol, Hash[Symbol, bool]],
358
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
359
+ ?failure: Hash[Symbol, untyped] | Array[Symbol]
360
+ ) -> Module
361
+
362
+ def self.mixin_module: -> singleton(BCDD::Result::Expectations::Mixin)
363
+
364
+ def self.result_factory_without_expectations: -> singleton(BCDD::Result)
365
+
366
+ def self.new: (
367
+ ?subject: untyped,
368
+ ?success: Hash[Symbol, untyped] | Array[Symbol],
369
+ ?failure: Hash[Symbol, untyped] | Array[Symbol],
370
+ ?contract: BCDD::Result::Contract::Evaluator,
371
+ ?config: Hash[Symbol, Hash[Symbol, bool]]
372
+ ) -> (BCDD::Result::Expectations | untyped)
373
+
342
374
  def initialize: (
343
375
  ?subject: untyped,
344
376
  ?success: Hash[Symbol, untyped] | Array[Symbol],
345
377
  ?failure: Hash[Symbol, untyped] | Array[Symbol],
346
- ?contract: BCDD::Result::Contract::Evaluator
378
+ ?contract: BCDD::Result::Contract::Evaluator,
379
+ ?config: Hash[Symbol, Hash[Symbol, bool]]
347
380
  ) -> void
348
381
 
349
382
  def Success: (Symbol, ?untyped) -> BCDD::Result::Success
@@ -358,6 +391,10 @@ class BCDD::Result::Expectations
358
391
  end
359
392
 
360
393
  module BCDD::Result::Expectations::Mixin
394
+ module Factory
395
+ def self.module!: -> Module
396
+ end
397
+
361
398
  METHODS: String
362
399
 
363
400
  module Addons
@@ -367,10 +404,8 @@ module BCDD::Result::Expectations::Mixin
367
404
 
368
405
  OPTIONS: Hash[Symbol, Module]
369
406
 
370
- def self.options: (Symbol) -> Array[Module]
407
+ def self.options: (Hash[Symbol, Hash[Symbol, bool]]) -> Array[Module]
371
408
  end
372
-
373
- def self.module!: -> Module
374
409
  end
375
410
 
376
411
  class BCDD::Result::Context < BCDD::Result
@@ -419,6 +454,8 @@ end
419
454
 
420
455
  class BCDD::Result::Context
421
456
  module Mixin
457
+ Factory: singleton(BCDD::Result::Mixin::Factory)
458
+
422
459
  module Methods
423
460
  def Success: (Symbol, **untyped) -> BCDD::Result::Context::Success
424
461
 
@@ -436,40 +473,27 @@ class BCDD::Result::Context
436
473
 
437
474
  OPTIONS: Hash[Symbol, Module]
438
475
 
439
- def self.options: (Array[Symbol]) -> Array[Module]
476
+ def self.options: (Hash[Symbol, Hash[Symbol, bool]]) -> Array[Module]
440
477
  end
441
478
  end
442
479
 
443
- def self.mixin: (?with: Array[Symbol]) -> Module
480
+ def self.mixin_module: -> singleton(BCDD::Result::Context::Mixin)
481
+
482
+ def self.result_factory: -> singleton(BCDD::Result::Context)
444
483
  end
445
484
 
446
- class BCDD::Result::Context::Expectations
447
- def self.mixin: (
448
- ?with: Symbol,
449
- ?success: Hash[Symbol, untyped] | Array[Symbol],
450
- ?failure: Hash[Symbol, untyped] | Array[Symbol]
451
- ) -> Module
485
+ class BCDD::Result::Context::Expectations < BCDD::Result::Expectations
486
+ def self.mixin_module: -> singleton(BCDD::Result::Context::Expectations::Mixin)
452
487
 
453
- def initialize: (
454
- ?subject: untyped,
455
- ?success: Hash[Symbol, untyped] | Array[Symbol],
456
- ?failure: Hash[Symbol, untyped] | Array[Symbol],
457
- ?contract: BCDD::Result::Contract::Evaluator
458
- ) -> void
488
+ def self.result_factory_without_expectations: -> singleton(BCDD::Result)
459
489
 
460
490
  def Success: (Symbol, **untyped) -> BCDD::Result::Context::Success
461
491
  def Failure: (Symbol, **untyped) -> BCDD::Result::Context::Failure
462
-
463
- def with: (subject: untyped) -> BCDD::Result::Context::Expectations
464
-
465
- private
466
-
467
- attr_reader subject: untyped
468
- attr_reader contract: BCDD::Result::Contract::Evaluator
469
492
  end
470
493
 
471
494
  module BCDD::Result::Context::Expectations::Mixin
472
495
  METHODS: String
496
+ Factory: singleton(BCDD::Result::Expectations::Mixin::Factory)
473
497
 
474
498
  module Addons
475
499
  module Continuable
@@ -478,6 +502,90 @@ module BCDD::Result::Context::Expectations::Mixin
478
502
 
479
503
  OPTIONS: Hash[Symbol, Module]
480
504
 
481
- def self.options: (Symbol) -> Array[Module]
505
+ def self.options: (Hash[Symbol, Hash[Symbol, bool]]) -> Array[Module]
482
506
  end
483
507
  end
508
+
509
+ class BCDD::Result::Config
510
+ include Singleton
511
+
512
+ ADDON: Hash[Symbol, Hash[Symbol, untyped]]
513
+ FEATURE: Hash[Symbol, Hash[Symbol, untyped]]
514
+ PATTERN_MATCHING: Hash[Symbol, Hash[Symbol, untyped]]
515
+
516
+ attr_reader addon: BCDD::Result::Config::Switcher
517
+ attr_reader feature: BCDD::Result::Config::Switcher
518
+ attr_reader constant_alias: BCDD::Result::Config::Switcher
519
+ attr_reader pattern_matching: BCDD::Result::Config::Switcher
520
+
521
+ def self.instance: -> BCDD::Result::Config
522
+
523
+ def initialize: -> void
524
+
525
+ def freeze: -> BCDD::Result::Config
526
+ def options: -> Hash[Symbol, BCDD::Result::Config::Switcher]
527
+ def to_h: -> Hash[Symbol, Hash[Symbol | String, bool]]
528
+ end
529
+
530
+ class BCDD::Result::Config::Switcher
531
+ private attr_reader _affects: Hash[Symbol | String, Array[String]]
532
+ private attr_reader _options: Hash[Symbol | String, bool]
533
+ private attr_reader listener: Proc
534
+
535
+ def initialize: (
536
+ options: Hash[Symbol | String, Hash[Symbol, untyped]],
537
+ ?listener: Proc
538
+ ) -> void
539
+
540
+ def freeze: -> BCDD::Result::Config::Switcher
541
+
542
+ def to_h: -> Hash[Symbol | String, bool]
543
+
544
+ def options: -> Hash[Symbol | String, Hash[Symbol, untyped]]
545
+
546
+ def enabled?: (Symbol | String) -> bool
547
+
548
+ def enable!: (*(Symbol | String)) -> Hash[Symbol | String, Hash[Symbol, untyped]]
549
+
550
+ def disable!: (*(Symbol | String)) -> Hash[Symbol | String, Hash[Symbol, untyped]]
551
+
552
+ private
553
+
554
+ def set_many: (Array[Symbol | String], to: bool) -> Hash[Symbol | String, Hash[Symbol, untyped]]
555
+
556
+ def set_one: (Symbol | String, bool) -> void
557
+
558
+ def require_option!: (Array[Symbol | String]) -> void
559
+
560
+ def validate_option!: (Symbol | String) -> void
561
+
562
+ def available_options_message: -> String
563
+ end
564
+
565
+ module BCDD::Result::Config::ConstantAlias
566
+ RESULT: String
567
+
568
+ OPTIONS: Hash[String, Hash[Symbol, untyped]]
569
+ MAPPING: Hash[String, Hash[Symbol, untyped]]
570
+ Listener: Proc
571
+
572
+ def self.switcher: -> BCDD::Result::Config::Switcher
573
+ end
574
+
575
+ module BCDD::Result::Config::Options
576
+ def self.with_defaults: (
577
+ Hash[Symbol, Hash[Symbol, bool]],
578
+ Symbol
579
+ ) -> Hash[Symbol, bool]
580
+
581
+ def self.filter_map: (
582
+ Hash[Symbol, Hash[Symbol, bool]],
583
+ config: Symbol,
584
+ from: Hash[Symbol, untyped]
585
+ ) -> Array[untyped]
586
+
587
+ def self.addon: (
588
+ map: Hash[Symbol, Hash[Symbol, bool]],
589
+ from: Hash[Symbol, Module]
590
+ ) -> Array[Module]
591
+ end
metadata CHANGED
@@ -1,19 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcdd-result
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-27 00:00:00.000000000 Z
11
+ date: 2023-12-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: |-
14
- Empower Ruby apps with a pragmatic use of Railway Oriented Programming.
15
-
16
- It's a general-purpose result monad that allows you to create objects representing a success (BCDD::Result::Success) or failure (BCDD::Result::Failure).
13
+ description: Empower Ruby apps with pragmatic use of Result monad, Railway Oriented
14
+ Programming, and B/CDD.
17
15
  email:
18
16
  - rodrigo.serradura@gmail.com
19
17
  executables: []
@@ -28,7 +26,12 @@ files:
28
26
  - README.md
29
27
  - Rakefile
30
28
  - Steepfile
29
+ - lib/bcdd-result.rb
31
30
  - lib/bcdd/result.rb
31
+ - lib/bcdd/result/config.rb
32
+ - lib/bcdd/result/config/constant_alias.rb
33
+ - lib/bcdd/result/config/options.rb
34
+ - lib/bcdd/result/config/switcher.rb
32
35
  - lib/bcdd/result/context.rb
33
36
  - lib/bcdd/result/context/expectations.rb
34
37
  - lib/bcdd/result/context/expectations/mixin.rb
@@ -55,7 +58,6 @@ files:
55
58
  - lib/bcdd/result/success.rb
56
59
  - lib/bcdd/result/success/methods.rb
57
60
  - lib/bcdd/result/version.rb
58
- - lib/result.rb
59
61
  - sig/bcdd/result.rbs
60
62
  homepage: https://github.com/b-cdd/result
61
63
  licenses:
@@ -84,5 +86,6 @@ requirements: []
84
86
  rubygems_version: 3.4.19
85
87
  signing_key:
86
88
  specification_version: 4
87
- summary: A pragmatic result abstraction (monad based) for Ruby.
89
+ summary: Empower Ruby apps with pragmatic use of Result monad, Railway Oriented Programming,
90
+ and B/CDD.
88
91
  test_files: []
data/lib/result.rb DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'bcdd/result'
4
-
5
- Object.const_set(:Result, BCDD::Result)