foobara 0.0.41 → 0.0.43
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +8 -0
- data/README.md +2 -0
- data/projects/builtin_types/src/builtin_types.rb +1 -0
- data/projects/callback/src/block/concerns/keyword_argumentable_block.rb +1 -2
- data/projects/command_connectors/src/command_connector.rb +1 -1
- data/projects/common/src/data_path.rb +1 -5
- data/projects/common/src/error_key.rb +1 -5
- data/projects/domain/src/domain.rb +19 -0
- data/projects/model/src/model.rb +1 -16
- data/projects/type_declarations/src/typed_transformer.rb +2 -1
- metadata +18 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa2be36d2ee83554bf301d1fffd4e39e99da510bb817c212835df9eab32b8a4e
|
4
|
+
data.tar.gz: 71232aec15786e518056e59c978d5ae42e291bf844110b6d01202200c8a35b25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9e95192d7d5a4da5f8ea25190bb1a14f99d9df8d7ef11370c87c02f9bba022b0d536d246beffad9dfd64dcc6c135dc9ac46c7463c94b4773729a100a0e0ae1c
|
7
|
+
data.tar.gz: 5430f3014eb74bc235e842decc7ab33790ac0359339005d1573123b9df8f6a4689f7a55aec0f32ec4b4fa24572c55c8e97c98520decd349805aa7cec938b3852
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.4.1
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -78,6 +78,8 @@ You can watch a video that gives a good overview of what Foobara is and its goal
|
|
78
78
|
* Engineers can spend more time operating within a specific mental model at a time instead of
|
79
79
|
multiple mental models all at once.
|
80
80
|
|
81
|
+
![Command-centric + Discoverability](https://github.com/foobara/examples/blob/main/images/cc-plus-disc-small.jpg?raw=true)
|
82
|
+
|
81
83
|
## Other features for helping with Domain complexity
|
82
84
|
|
83
85
|
* Domains and Organizations
|
@@ -6,8 +6,7 @@ module Foobara
|
|
6
6
|
def to_proc
|
7
7
|
@to_proc ||= if has_keyword_args?
|
8
8
|
proc do |*args, &block|
|
9
|
-
|
10
|
-
original_block.call(**keyword_args, &block)
|
9
|
+
original_block.call(**args.reduce(:merge), &block)
|
11
10
|
end
|
12
11
|
else
|
13
12
|
original_block
|
@@ -261,7 +261,7 @@ module Foobara
|
|
261
261
|
def process_delayed_connections
|
262
262
|
delayed_connections.each_pair do |registerable_name, arg_hash|
|
263
263
|
args = arg_hash[:args]
|
264
|
-
opts = arg_hash[:opts]
|
264
|
+
opts = arg_hash[:opts]
|
265
265
|
|
266
266
|
const = Object.const_get(registerable_name)
|
267
267
|
connect(const, *args, **opts)
|
@@ -211,8 +211,6 @@ module Foobara
|
|
211
211
|
end
|
212
212
|
|
213
213
|
def normalize(key_parts)
|
214
|
-
return nil if key_parts.nil?
|
215
|
-
|
216
214
|
case key_parts
|
217
215
|
when Array
|
218
216
|
key_parts.map do |key_part|
|
@@ -223,9 +221,7 @@ module Foobara
|
|
223
221
|
when Integer
|
224
222
|
key_parts
|
225
223
|
when String
|
226
|
-
if key_parts
|
227
|
-
nil
|
228
|
-
elsif key_parts =~ INDEX_VALUE
|
224
|
+
if key_parts =~ INDEX_VALUE
|
229
225
|
key_parts.to_i
|
230
226
|
else
|
231
227
|
key_parts.to_sym
|
@@ -153,11 +153,7 @@ module Foobara
|
|
153
153
|
when Symbol, Integer
|
154
154
|
key_parts
|
155
155
|
when String
|
156
|
-
|
157
|
-
nil
|
158
|
-
else
|
159
|
-
key_parts.to_sym
|
160
|
-
end
|
156
|
+
key_parts.to_sym
|
161
157
|
else
|
162
158
|
# :nocov:
|
163
159
|
raise ArgumentError, "expected nil, a symbol, or a string, an integer, or an array of such values "
|
@@ -36,6 +36,25 @@ module Foobara
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def domain_through_modules(mod)
|
40
|
+
mod = Util.module_for(mod)
|
41
|
+
|
42
|
+
while mod
|
43
|
+
if mod.foobara_domain?
|
44
|
+
namespace = mod
|
45
|
+
break
|
46
|
+
end
|
47
|
+
|
48
|
+
mod = Util.module_for(mod)
|
49
|
+
end
|
50
|
+
|
51
|
+
if namespace&.foobara_domain?
|
52
|
+
namespace
|
53
|
+
else
|
54
|
+
GlobalDomain
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
39
58
|
def create(full_domain_name)
|
40
59
|
if Domain.to_domain(full_domain_name)
|
41
60
|
raise DomainAlreadyExistsError, "Domain #{full_domain_name} already exists"
|
data/projects/model/src/model.rb
CHANGED
@@ -66,22 +66,7 @@ module Foobara
|
|
66
66
|
if model_type
|
67
67
|
model_type.foobara_domain
|
68
68
|
else
|
69
|
-
|
70
|
-
|
71
|
-
while mod
|
72
|
-
if mod.foobara_domain?
|
73
|
-
namespace = mod
|
74
|
-
break
|
75
|
-
end
|
76
|
-
|
77
|
-
mod = Util.module_for(mod)
|
78
|
-
end
|
79
|
-
|
80
|
-
if namespace&.foobara_domain?
|
81
|
-
namespace
|
82
|
-
else
|
83
|
-
GlobalDomain
|
84
|
-
end
|
69
|
+
Domain.domain_through_modules(self)
|
85
70
|
end
|
86
71
|
end
|
87
72
|
|
@@ -55,7 +55,9 @@ module Foobara
|
|
55
55
|
# interpret how it goes. This might create some awkwardness or confusion at least when creating one of the
|
56
56
|
# two types of transformer.
|
57
57
|
def type_declaration(_from_type)
|
58
|
+
# :nocov:
|
58
59
|
nil
|
60
|
+
# :nocov:
|
59
61
|
end
|
60
62
|
|
61
63
|
def type(from_type)
|
@@ -66,7 +68,6 @@ module Foobara
|
|
66
68
|
dec
|
67
69
|
else
|
68
70
|
Domain.current.foobara_type_from_declaration(dec)
|
69
|
-
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
metadata
CHANGED
@@ -1,15 +1,28 @@
|
|
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.43
|
5
5
|
platform: ruby
|
6
|
-
original_platform: ''
|
7
6
|
authors:
|
8
7
|
- Miles Georgi
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-01-03 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: bigdecimal
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
13
26
|
- !ruby/object:Gem::Dependency
|
14
27
|
name: foobara-util
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -415,14 +428,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
415
428
|
requirements:
|
416
429
|
- - ">="
|
417
430
|
- !ruby/object:Gem::Version
|
418
|
-
version: 3.
|
431
|
+
version: 3.4.0
|
419
432
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
420
433
|
requirements:
|
421
434
|
- - ">="
|
422
435
|
- !ruby/object:Gem::Version
|
423
436
|
version: '0'
|
424
437
|
requirements: []
|
425
|
-
rubygems_version: 3.6.
|
438
|
+
rubygems_version: 3.6.2
|
426
439
|
specification_version: 4
|
427
440
|
summary: A command-centric and discoverable software framework with a focus on domain
|
428
441
|
concepts and abstracting away integration code
|