hub_kernel 0.20.0 → 0.21.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1bb347a71c0f40d275dc0c2d504fb186b474538a1b4ee80c7e4fd1270f064926
4
- data.tar.gz: be51e4ff8a3b09e83cd2904745c39f30088c7471c0127f66fcd8107bc9f6272b
3
+ metadata.gz: 5abfdc116c5675e15edad5aa0d08ee0ebf20d123a1cdc0f28f8c5776e5253cb7
4
+ data.tar.gz: 6a2917d8cdfbf55633baa557d51ecb7a77c0b3b84b3fe3db3db42ce2d41f6105
5
5
  SHA512:
6
- metadata.gz: db66d8c988b25b8639cde40e2b0212b8a651fb4b831cd675b0b615e2b7ee1a85e9bdbee002be16c03bc91d1cb7ad32a904139b384049281b83804d30636ad37c
7
- data.tar.gz: 5524ff6a33af31e8e9c039568daa6f0eeb2e8e12202d8f032d78ed890f54f90b662ac771b0e58213e569e8f837f040a8947af61161e95c18a3314188c2438db4
6
+ metadata.gz: def104f8e708974248c0b199bfee92b80ba04a571f3db6de7080361ca26be1a9a4d98fabf91cd4eb99adbd2d0291915a9329c79199373f4f9ec81cf90bf91750
7
+ data.tar.gz: 7c47c64d8f1f4a5e73667b5c5f00f779c33d8da2438f6035bed67cbee572a4ae5068c0cad23c2063249862f30a64fc73bacbb2b8659db5e750dee3fc9bf8c34d
data/README.md CHANGED
@@ -255,7 +255,8 @@ end
255
255
  - The host's layer may name any hub's interface module, and a hub naming another hub's
256
256
  interface module is a crossing. A hub's interface module is found in its folder, as the
257
257
  module there that extends `HubKernel::Ports` or `HubKernel::Exposes`, so a hub in a
258
- folder needs no entry in `interfaces`.
258
+ folder needs no entry in `interfaces`. A folder may hold several such modules, such as
259
+ the modules of hubs merged into one area, and every one of them counts.
259
260
  - The test fails with "The crossing check found no files to read" when none of the files
260
261
  it read belongs to a hub or the host's layer, so a wrong `files:` pattern or an empty
261
262
  map does not pass unnoticed.
@@ -11,6 +11,7 @@ module HubKernel
11
11
  @shared = shared
12
12
  @host_layer = host_layer
13
13
  @interfaces = interfaces
14
+ @folder_interfaces = {}
14
15
  @namespaces = namespaces
15
16
  end
16
17
 
@@ -28,7 +29,7 @@ module HubKernel
28
29
  sources.each do |path, source|
29
30
  next unless source.match?(HUB_MODULE) && path.match?(HubFolders::CODE_PATH)
30
31
 
31
- @interfaces = @interfaces.merge(HubFolders.hub_of(path) => HubFolders.class_of(path))
32
+ @folder_interfaces[HubFolders.class_of(path)] = HubFolders.hub_of(path)
32
33
  end
33
34
  self
34
35
  end
@@ -46,7 +47,7 @@ module HubKernel
46
47
 
47
48
  def listed_in_their_folders = @owners.flat_map { |hub, classes| classes.select { |name| @folder_classes[name] == hub } }
48
49
 
49
- def folders_without_hub_module = @folder_classes.values.uniq.reject { |hub| @interfaces.key?(hub) }.map { |hub| HubFolders.folder(hub) }
50
+ def folders_without_hub_module = @folder_classes.values.uniq.reject { |hub| @interfaces.key?(hub) || @folder_interfaces.value?(hub) }.map { |hub| HubFolders.folder(hub) }
50
51
 
51
52
  def missing_classes = @owners.values.flatten.uniq.reject { |name| @folder_classes.key?(name) || name.safe_constantize }
52
53
 
@@ -57,7 +58,7 @@ module HubKernel
57
58
  def crossing?(name, hub)
58
59
  return false if @shared.include?(name) || owner_of(name) == hub
59
60
 
60
- !(hub == @host_layer && @interfaces.value?(name))
61
+ !(hub == @host_layer && interface?(name))
61
62
  end
62
63
 
63
64
  def owned_class_in(name)
@@ -71,7 +72,9 @@ module HubKernel
71
72
  space && "#{space}::#{name.delete_prefix("#{space}::").split("::").first}"
72
73
  end
73
74
 
74
- def listed_owner_of(class_name) = @interfaces.key(class_name) || @folder_classes[class_name] || @owners.find { |_hub, classes| classes.include?(class_name) }&.first
75
+ def interface?(name) = @interfaces.value?(name) || @folder_interfaces.key?(name)
76
+
77
+ def listed_owner_of(class_name) = @interfaces.key(class_name) || @folder_interfaces[class_name] || @folder_classes[class_name] || @owners.find { |_hub, classes| classes.include?(class_name) }&.first
75
78
 
76
79
  def owner_of(class_name) = listed_owner_of(class_name) || owner_of_namespace(class_name)
77
80
 
@@ -1,3 +1,3 @@
1
1
  module HubKernel
2
- VERSION = "0.20.0"
2
+ VERSION = "0.21.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hub_kernel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tylercschneider