foobara 0.7.2 → 0.7.3
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/CHANGELOG.md +5 -0
- data/projects/command/src/command_pattern_implementation/concerns/namespace.rb +5 -1
- data/projects/model_plumbing/lib/foobara/model_plumbing.rb +9 -3
- data/projects/typesystem/projects/builtin_types/lib/foobara/builtin_types.rb +15 -5
- data/projects/typesystem/projects/model/src/model.rb +8 -0
- data/projects/typesystem/projects/project/src/foobara.rb +1 -0
- data/projects/typesystem/projects/project/src/project.rb +5 -0
- data/projects/typesystem/projects/types/src/type.rb +33 -0
- data/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b47232296ad209190a7a4779c9f09c98471259c1382c3df4d6000c746b574ded
|
|
4
|
+
data.tar.gz: a8fecebb652f59b571c2e4192e7c8162d92378425a879cbe1b52af9a4f147978
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6e0cebe29b65d89204e8f7a28ce18131d0b8c5d57f7c49c4e455d377da92c56ff2d18830f5ce560f2e8e63ca1f6ca384e601890b9a6b0eb042b5a252dedaf2b2
|
|
7
|
+
data.tar.gz: f742b953f4a6aa14224a2615370009b8e6fb10cb927e8beabad882a8060a70701c18e52dae30311c694ff713e950219c90d2edcf26fe1476cf1fa3b914712a03
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
# [0.7.3] - 2026-10-10
|
|
2
|
+
|
|
3
|
+
- More aggressively hunt down and fix types with unregistered base types
|
|
4
|
+
- Add a Project#reset_completed to take action after a .reset_alls in test suites
|
|
5
|
+
|
|
1
6
|
# [0.7.2] - 2026-10-10
|
|
2
7
|
|
|
3
8
|
- Add `Foobara.start!` to allow post-install commands to survive reset
|
|
@@ -49,12 +49,16 @@ module Foobara
|
|
|
49
49
|
@full_command_symbol ||= Util.underscore_sym(full_command_name)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
def handle_reregistered_types!
|
|
52
|
+
def handle_reregistered_types!(seen)
|
|
53
|
+
seen << self
|
|
54
|
+
|
|
53
55
|
if inputs_type
|
|
56
|
+
inputs_type.handle_reregistered_types!(seen) unless seen.include?(inputs_type)
|
|
54
57
|
inputs inputs_type.reference_or_declaration_data
|
|
55
58
|
end
|
|
56
59
|
|
|
57
60
|
if result_type
|
|
61
|
+
result_type.handle_reregistered_types!(seen) unless seen.include?(result_type)
|
|
58
62
|
result result_type.reference_or_declaration_data
|
|
59
63
|
end
|
|
60
64
|
|
|
@@ -3,11 +3,17 @@ module Foobara
|
|
|
3
3
|
class << self
|
|
4
4
|
def install!
|
|
5
5
|
Model.on_reregister do
|
|
6
|
-
|
|
6
|
+
seen = Set.new
|
|
7
|
+
|
|
8
|
+
Namespace.global.foobara_each do |scoped|
|
|
9
|
+
if scoped.respond_to?(:handle_reregistered_types!)
|
|
10
|
+
scoped.handle_reregistered_types!(seen)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
7
13
|
end
|
|
8
14
|
|
|
9
|
-
CommandPatternImplementation.include
|
|
10
|
-
|
|
15
|
+
CommandPatternImplementation.include CommandPatternImplementation::Concerns::ModelInputsType
|
|
16
|
+
DomainMapper.singleton_class.prepend(ModelPlumbing::DomainMapperExtension)
|
|
11
17
|
end
|
|
12
18
|
end
|
|
13
19
|
end
|
|
@@ -62,11 +62,6 @@ module Foobara
|
|
|
62
62
|
associative_array = build_and_register!(:associative_array, duckture, ::Hash)
|
|
63
63
|
# TODO: uh oh... we do some translations in the casting here...
|
|
64
64
|
build_and_register!(:attributes, associative_array, nil)
|
|
65
|
-
|
|
66
|
-
if needs_to_handle_reregistered_types
|
|
67
|
-
GlobalDomain.foobara_each_command(&:handle_reregistered_types!)
|
|
68
|
-
self.needs_to_handle_reregistered_types = false
|
|
69
|
-
end
|
|
70
65
|
end
|
|
71
66
|
|
|
72
67
|
def reset_all
|
|
@@ -84,6 +79,21 @@ module Foobara
|
|
|
84
79
|
|
|
85
80
|
install!
|
|
86
81
|
end
|
|
82
|
+
|
|
83
|
+
def reset_completed
|
|
84
|
+
if needs_to_handle_reregistered_types
|
|
85
|
+
seen = Set.new
|
|
86
|
+
|
|
87
|
+
Namespace.global.foobara_each do |scoped|
|
|
88
|
+
if scoped.respond_to?(:handle_reregistered_types!)
|
|
89
|
+
scoped.handle_reregistered_types!(seen)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
self.needs_to_handle_reregistered_types = false
|
|
94
|
+
Namespace.clear_lru_cache!
|
|
95
|
+
end
|
|
96
|
+
end
|
|
87
97
|
end
|
|
88
98
|
end
|
|
89
99
|
end
|
|
@@ -163,6 +163,14 @@ module Foobara
|
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
+
def handle_reregistered_types!(seen)
|
|
167
|
+
seen << self
|
|
168
|
+
|
|
169
|
+
if instance_variable_defined?(:@attributes_type)
|
|
170
|
+
remove_instance_variable(:@attributes_type)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
166
174
|
# Why aren't we using the callbacks project for this?
|
|
167
175
|
def on_reregister(&block)
|
|
168
176
|
@on_reregister ||= []
|
|
@@ -549,6 +549,39 @@ module Foobara
|
|
|
549
549
|
!!type_symbol
|
|
550
550
|
end
|
|
551
551
|
|
|
552
|
+
def handle_reregistered_types!(seen)
|
|
553
|
+
seen << self
|
|
554
|
+
|
|
555
|
+
if base_type&.scoped_unregistered?
|
|
556
|
+
self.base_type = base_type.created_in_namespace.foobara_lookup_type!(
|
|
557
|
+
base_type.type_symbol
|
|
558
|
+
)
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
if target_classes.size == 1 && target_class.respond_to?(:handle_reregistered_types!)
|
|
562
|
+
unless seen.include?(target_class)
|
|
563
|
+
target_class.handle_reregistered_types!(seen)
|
|
564
|
+
end
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
case element_types
|
|
568
|
+
when Hash
|
|
569
|
+
element_types.each_value do |child|
|
|
570
|
+
child.handle_reregistered_types!(seen) unless seen.include?(child)
|
|
571
|
+
end
|
|
572
|
+
when Array
|
|
573
|
+
element_types.each do |child|
|
|
574
|
+
child.handle_reregistered_types!(seen) unless seen.include?(child)
|
|
575
|
+
end
|
|
576
|
+
when Type
|
|
577
|
+
element_types.handle_reregistered_types!(seen) unless seen.include?(element_types)
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
if element_type
|
|
581
|
+
element_type.handle_reregistered_types!(seen) unless seen.include?(element_type)
|
|
582
|
+
end
|
|
583
|
+
end
|
|
584
|
+
|
|
552
585
|
private
|
|
553
586
|
|
|
554
587
|
def apply_all_processors_needing_type!
|
data/version.rb
CHANGED