foobara 0.0.63 → 0.0.65
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 +10 -0
- data/projects/domain/src/domain_module_extension.rb +21 -9
- data/projects/domain_mapper/src/domain_mapper.rb +6 -2
- data/projects/domain_mapper/src/domain_mapper_lookups.rb +6 -0
- data/projects/enumerated/src/values.rb +1 -1
- data/projects/namespace/src/is_namespace.rb +4 -0
- data/projects/types/src/type.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21197ef384605690acb82fc34c7e05508e876b9659ff7aeb3cb068b9f3d2e43f
|
4
|
+
data.tar.gz: 9fa7bb5281ce36f1b62b57860e29b618d58d1ae18b3a6e9212e370549d1b0f6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43f5d7f1caf9380fd20d3b68a277e43c1a2efbcf226096892c2cc9cfaed8dbfc7591a16024f01a4e57f6e3c0bb590f04e8bfb823007b353dbe15ca735e4a9d1b
|
7
|
+
data.tar.gz: 97bbe6d2d1c24827ca1210713b7e65e3f63dfb69bf7a312aab4f3631b4bf867b41dcdd2a9692cb626d563ad4166e433955dbf5bfd1d1154ac950b902bb0df0ce
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## [0.0.65] - 2025-02-26
|
2
|
+
|
3
|
+
- Fix a problem when looking up domain mappers with a symbol value that doesn't represent a type
|
4
|
+
|
5
|
+
## [0.0.64] - 2025-02-25
|
6
|
+
|
7
|
+
- Fix bug where DomainMappers created after commands have ran wouldn't be detected
|
8
|
+
- Expose Enumerated::Values#value?
|
9
|
+
- Allow passing a hash to DomainMapper#new
|
10
|
+
|
1
11
|
## [0.0.63] - 2025-02-25
|
2
12
|
|
3
13
|
- Allow creating an Enumerated from a list of value strings that contain colons
|
@@ -133,7 +133,25 @@ module Foobara
|
|
133
133
|
super
|
134
134
|
end
|
135
135
|
|
136
|
-
def foobara_domain_map(
|
136
|
+
def foobara_domain_map(*args, to: nil, strict: false, criteria: nil, should_raise: false, **opts)
|
137
|
+
case args.size
|
138
|
+
when 1
|
139
|
+
value = args.first
|
140
|
+
when 0
|
141
|
+
if opts.empty?
|
142
|
+
# :nocov:
|
143
|
+
raise ArgumentError, "Expected at least one argument"
|
144
|
+
# :nocov:
|
145
|
+
else
|
146
|
+
value = opts
|
147
|
+
opts = {}
|
148
|
+
end
|
149
|
+
else
|
150
|
+
# :nocov:
|
151
|
+
raise ArgumentError, "Expected 1 argument but got #{args.size}"
|
152
|
+
# :nocov:
|
153
|
+
end
|
154
|
+
|
137
155
|
invalid_keys = opts.keys - [:from]
|
138
156
|
|
139
157
|
if invalid_keys.any?
|
@@ -145,17 +163,11 @@ module Foobara
|
|
145
163
|
from = if opts.key?(:from)
|
146
164
|
opts[:from]
|
147
165
|
else
|
148
|
-
try_nil = true
|
149
166
|
value
|
150
167
|
end
|
151
168
|
|
152
169
|
mapper = lookup_matching_domain_mapper(from:, to:, criteria:, strict:)
|
153
170
|
|
154
|
-
if try_nil
|
155
|
-
from = nil
|
156
|
-
mapper = lookup_matching_domain_mapper(from:, to:, criteria:, strict:)
|
157
|
-
end
|
158
|
-
|
159
171
|
if mapper
|
160
172
|
mapper.map!(value)
|
161
173
|
elsif should_raise
|
@@ -163,8 +175,8 @@ module Foobara
|
|
163
175
|
end
|
164
176
|
end
|
165
177
|
|
166
|
-
def foobara_domain_map!(
|
167
|
-
foobara_domain_map(
|
178
|
+
def foobara_domain_map!(*, **, &)
|
179
|
+
foobara_domain_map(*, should_raise: true, **, &)
|
168
180
|
end
|
169
181
|
|
170
182
|
def foobara_domain_name
|
@@ -6,6 +6,10 @@ module Foobara
|
|
6
6
|
include CommandPatternImplementation
|
7
7
|
|
8
8
|
class << self
|
9
|
+
def foobara_on_register
|
10
|
+
foobara_domain.new_mapper_registered!
|
11
|
+
end
|
12
|
+
|
9
13
|
def map(value)
|
10
14
|
new(from: value).run
|
11
15
|
end
|
@@ -54,7 +58,7 @@ module Foobara
|
|
54
58
|
|
55
59
|
type = object_to_type(type_indicator)
|
56
60
|
|
57
|
-
return
|
61
|
+
return 0 if type.nil?
|
58
62
|
return 9 if type == value
|
59
63
|
|
60
64
|
return 5 if type.applicable?(value) && type.process_value(value).success?
|
@@ -100,7 +104,7 @@ module Foobara
|
|
100
104
|
when Types::Type
|
101
105
|
object
|
102
106
|
when ::Symbol
|
103
|
-
domain.foobara_lookup_type
|
107
|
+
domain.foobara_lookup_type(object)
|
104
108
|
end
|
105
109
|
end
|
106
110
|
end
|
@@ -40,6 +40,12 @@ module Foobara
|
|
40
40
|
include Concern
|
41
41
|
|
42
42
|
module ClassMethods
|
43
|
+
def new_mapper_registered!
|
44
|
+
if defined?(@mappers) && !@mappers.empty?
|
45
|
+
remove_instance_variable("@mappers")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
43
49
|
def lookup_matching_domain_mapper!(from: nil, to: nil, strict: false, criteria: nil)
|
44
50
|
result = lookup_matching_domain_mapper(from:, to:, strict:, criteria:)
|
45
51
|
|
@@ -125,7 +125,7 @@ module Foobara
|
|
125
125
|
mod = Module.new
|
126
126
|
enumerated = self
|
127
127
|
|
128
|
-
%i[all all_names all_values].each do |method_name|
|
128
|
+
%i[all all_names all_values value?].each do |method_name|
|
129
129
|
mod.singleton_class.define_method method_name do |*args, **opts, &block|
|
130
130
|
enumerated.send(method_name, *args, **opts, &block)
|
131
131
|
end
|
@@ -78,6 +78,10 @@ module Foobara
|
|
78
78
|
foobara_registry.register(scoped)
|
79
79
|
# awkward??
|
80
80
|
scoped.scoped_namespace = self
|
81
|
+
|
82
|
+
if scoped.respond_to?(:foobara_on_register)
|
83
|
+
scoped.foobara_on_register
|
84
|
+
end
|
81
85
|
rescue PrefixlessRegistry::RegisteringScopedWithPrefixError,
|
82
86
|
BaseRegistry::WouldMakeRegistryAmbiguousError => e
|
83
87
|
_upgrade_registry(e)
|
data/projects/types/src/type.rb
CHANGED
@@ -154,6 +154,10 @@ module Foobara
|
|
154
154
|
def target_class
|
155
155
|
if target_classes.empty?
|
156
156
|
# :nocov:
|
157
|
+
# TODO: We really need a better error message when we hit this point in the code path.
|
158
|
+
# One thing that can cause this is if you create a custom type called :model but it isn't loaded
|
159
|
+
# yet and we accidentally are referring to the builtin :model type. This error message doesn't reveal
|
160
|
+
# that you need to require the custom :model.
|
157
161
|
raise "No target classes"
|
158
162
|
# :nocov:
|
159
163
|
elsif target_classes.size > 1
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foobara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.65
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Georgi
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-02-
|
10
|
+
date: 2025-02-26 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: bigdecimal
|