bcdd-result 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|