bcdd-result 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -0
- data/CHANGELOG.md +34 -11
- data/README.md +170 -5
- data/Steepfile +2 -2
- data/lib/bcdd/result/config/switchers/addons.rb +20 -0
- data/lib/bcdd/result/config/{constant_alias.rb → switchers/constant_aliases.rb} +4 -4
- data/lib/bcdd/result/config/switchers/features.rb +28 -0
- data/lib/bcdd/result/config/switchers/pattern_matching.rb +20 -0
- data/lib/bcdd/result/config.rb +8 -28
- data/lib/bcdd/result/context/failure.rb +1 -1
- data/lib/bcdd/result/context/success.rb +2 -2
- data/lib/bcdd/result/context.rb +12 -11
- data/lib/bcdd/result/transitions/tracking/disabled.rb +17 -0
- data/lib/bcdd/result/transitions/tracking/enabled.rb +80 -0
- data/lib/bcdd/result/transitions/tracking.rb +20 -0
- data/lib/bcdd/result/transitions/tree.rb +95 -0
- data/lib/bcdd/result/transitions.rb +30 -0
- data/lib/bcdd/result/version.rb +1 -1
- data/lib/bcdd/result.rb +35 -18
- data/sig/bcdd/result/config.rbs +100 -0
- data/sig/bcdd/result/context.rbs +102 -0
- data/sig/bcdd/result/contract.rbs +119 -0
- data/sig/bcdd/result/data.rbs +16 -0
- data/sig/bcdd/result/error.rbs +31 -0
- data/sig/bcdd/result/expectations.rbs +67 -0
- data/sig/bcdd/result/handler.rbs +47 -0
- data/sig/bcdd/result/mixin.rbs +37 -0
- data/sig/bcdd/result/transitions.rbs +89 -0
- data/sig/bcdd/result/version.rbs +5 -0
- data/sig/bcdd/result.rbs +6 -516
- metadata +22 -4
@@ -0,0 +1,47 @@
|
|
1
|
+
class BCDD::Result
|
2
|
+
class Handler
|
3
|
+
UNDEFINED: Object
|
4
|
+
|
5
|
+
def initialize: (
|
6
|
+
BCDD::Result,
|
7
|
+
type_checker: BCDD::Result::Contract::TypeChecker
|
8
|
+
) -> void
|
9
|
+
|
10
|
+
def []: (*Symbol) { (untyped, Symbol) -> void } -> untyped
|
11
|
+
def failure: (*Symbol) { (untyped, Symbol) -> void } -> untyped
|
12
|
+
def success: (*Symbol) { (untyped, Symbol) -> void } -> untyped
|
13
|
+
def unknown: () { (untyped, Symbol) -> void } -> untyped
|
14
|
+
|
15
|
+
alias type []
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader result: BCDD::Result
|
20
|
+
attr_reader allowed_types: BCDD::Result::Handler::AllowedTypes
|
21
|
+
|
22
|
+
def outcome?: -> bool
|
23
|
+
def outcome=: (Proc) -> void
|
24
|
+
def outcome: -> untyped
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class BCDD::Result::Handler
|
29
|
+
class AllowedTypes
|
30
|
+
attr_reader unchecked: Set[Symbol]
|
31
|
+
attr_reader type_checker: BCDD::Result::Contract::TypeChecker
|
32
|
+
|
33
|
+
def initialize: (
|
34
|
+
BCDD::Result::Contract::TypeChecker
|
35
|
+
) -> void
|
36
|
+
|
37
|
+
def allow?: (Array[Symbol]) -> bool
|
38
|
+
def allow_success?: (Array[Symbol]) -> bool
|
39
|
+
def allow_failure?: (Array[Symbol]) -> bool
|
40
|
+
|
41
|
+
def all_checked?: -> bool
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def check!: (Array[Symbol], bool) -> bool
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class BCDD::Result
|
2
|
+
module Mixin
|
3
|
+
module Factory
|
4
|
+
def self.module!: -> Module
|
5
|
+
end
|
6
|
+
|
7
|
+
module Methods
|
8
|
+
def Success: (Symbol type, ?untyped value) -> BCDD::Result::Success
|
9
|
+
|
10
|
+
def Failure: (Symbol type, ?untyped value) -> BCDD::Result::Failure
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def _ResultAs: (singleton(BCDD::Result), Symbol, untyped, ?halted: bool) -> untyped
|
15
|
+
end
|
16
|
+
|
17
|
+
module Addons
|
18
|
+
module Continuable
|
19
|
+
include BCDD::Result::Mixin::Methods
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def Continue: (untyped) -> BCDD::Result::Success
|
24
|
+
end
|
25
|
+
|
26
|
+
OPTIONS: Hash[Symbol, Module]
|
27
|
+
|
28
|
+
def self.options: (Hash[Symbol, Hash[Symbol, bool]]) -> Hash[Symbol, Module]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.mixin: (?config: Hash[Symbol, Hash[Symbol, bool]]) -> Module
|
33
|
+
|
34
|
+
def self.mixin_module: -> singleton(BCDD::Result::Mixin)
|
35
|
+
|
36
|
+
def self.result_factory: -> singleton(BCDD::Result)
|
37
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
class BCDD::Result
|
2
|
+
module Transitions
|
3
|
+
class Tree
|
4
|
+
class Node
|
5
|
+
attr_reader id: Integer
|
6
|
+
attr_reader value: untyped
|
7
|
+
attr_reader parent: (Node | nil)
|
8
|
+
attr_reader normalizer: ^(Integer, Array[untyped]) -> untyped
|
9
|
+
attr_reader children: Array[Node]
|
10
|
+
|
11
|
+
def initialize: (
|
12
|
+
untyped value,
|
13
|
+
parent: (Node | nil),
|
14
|
+
id: Integer,
|
15
|
+
normalizer: ^(Integer, Array[untyped]) -> untyped
|
16
|
+
) -> void
|
17
|
+
|
18
|
+
def insert: (untyped, id: Integer) -> Node
|
19
|
+
|
20
|
+
def root?: () -> bool
|
21
|
+
def leaf?: () -> bool
|
22
|
+
def node?: () -> bool
|
23
|
+
def inspect: () -> String
|
24
|
+
end
|
25
|
+
|
26
|
+
attr_reader size: Integer
|
27
|
+
attr_reader root: Node
|
28
|
+
attr_reader current: Node
|
29
|
+
|
30
|
+
def initialize: (untyped, ?normalizer: ^(Integer, Array[untyped]) -> untyped) -> void
|
31
|
+
def root_value: () -> untyped
|
32
|
+
def parent_value: () -> untyped
|
33
|
+
def current_value: () -> untyped
|
34
|
+
def insert: (untyped) -> Node
|
35
|
+
def insert!: (untyped) -> Node
|
36
|
+
def move_up!: (?Integer level) -> Tree
|
37
|
+
def move_down!: (?Integer level) -> Tree
|
38
|
+
def move_to_root!: () -> Tree
|
39
|
+
|
40
|
+
NestedIds: ^(Node) -> Array[untyped]
|
41
|
+
|
42
|
+
def nested_ids: () -> Array[untyped]
|
43
|
+
end
|
44
|
+
|
45
|
+
module Tracking
|
46
|
+
EMPTY_ARRAY: Array[untyped]
|
47
|
+
EMPTY_HASH: Hash[untyped, untyped]
|
48
|
+
EMPTY_TREE: Transitions::Tree
|
49
|
+
VERSION: Integer
|
50
|
+
EMPTY: Hash[Symbol, untyped]
|
51
|
+
|
52
|
+
class Enabled
|
53
|
+
private attr_accessor tree: Transitions::Tree
|
54
|
+
private attr_accessor records: Array[Hash[Symbol, untyped]]
|
55
|
+
private attr_accessor root_started_at: Integer
|
56
|
+
|
57
|
+
def start: (name: String, desc: String) -> void
|
58
|
+
def finish: (result: BCDD::Result) -> void
|
59
|
+
def reset!: () -> void
|
60
|
+
def record: (BCDD::Result) -> void
|
61
|
+
def record_and_then: ((untyped), untyped, untyped) { () -> BCDD::Result } -> BCDD::Result
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
TreeNodeValueNormalizer: ^(Integer, Array[untyped]) -> untyped
|
66
|
+
|
67
|
+
def root_start: (Array[untyped]) -> void
|
68
|
+
|
69
|
+
def track: (BCDD::Result, time: Time) -> void
|
70
|
+
|
71
|
+
def now_in_milliseconds: () -> Integer
|
72
|
+
end
|
73
|
+
|
74
|
+
module Disabled
|
75
|
+
def self.start: (name: String, desc: String) -> void
|
76
|
+
def self.finish: (result: BCDD::Result) -> void
|
77
|
+
def self.reset!: () -> void
|
78
|
+
def self.record: (BCDD::Result) -> void
|
79
|
+
def self.record_and_then: ((untyped), untyped, untyped) { () -> BCDD::Result } -> BCDD::Result
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.instance: () -> (Enabled | singleton(Disabled))
|
83
|
+
end
|
84
|
+
|
85
|
+
THREAD_VAR_NAME: Symbol
|
86
|
+
|
87
|
+
def self.tracking: () -> (Tracking::Enabled | singleton(Tracking::Disabled))
|
88
|
+
end
|
89
|
+
end
|