hub_kernel 0.5.0 → 0.6.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: 8117d21e5e81d6489c16ee5315f636623eafbab7aa0bc9ebe3e25b66fd139cef
4
- data.tar.gz: 82f9add4dde24ed15db4be6b649f39b9e9c047292760479b8da9fc8891d72ff5
3
+ metadata.gz: 04f59c358a3f035fa56669fe9c6da01ceb7a8e513493ad6ca29b108758510d9c
4
+ data.tar.gz: 47a75f20985cf4ce0291e61e389d421245c93e90a3e04255ed69af769dc18469
5
5
  SHA512:
6
- metadata.gz: 7bc2bfa185995e9773224c2d5570e7f7c9d7ed520409524289a40da34132331dfc03546d4c74036f03bad13dfe5d586a9fceac389e00cef0d0ba6456eca0396d
7
- data.tar.gz: 7f6465796e50d486e907c0d0d682ca97c1fb69dd0a264ba44d54bb99e133cc78d062b316b4771912d68ca41b7696ad87b78984997ca93acec24392a2ff27aa80
6
+ metadata.gz: 4cbcfba750818bdf25789490618b5959effc5af6a7aaca97daf17a7571162c25c35f452a2b26291ad62b7affaf74fc52a195ba65fbb00129fe09bed16e51f12f
7
+ data.tar.gz: 84909e946aac47038945054c3f8548170417388d4af2f96cef7826460385a49e57dc1bf587df6051d5acec6ab57d7355e91b400f9cba29c0306f1d5dcc988dad
data/README.md CHANGED
@@ -61,6 +61,22 @@ end
61
61
  The test fails and names each port the app left unfilled, and each port filled with
62
62
  something that cannot be called.
63
63
 
64
+ ### The exposed list
65
+ A hub names each method outside callers may reach, the values it takes, and whether it
66
+ writes. A layer such as a JSON endpoint looks a method up by name and serves only what
67
+ the hub exposes:
68
+
69
+ ```ruby
70
+ module Supplies
71
+ extend HubKernel::Exposes
72
+
73
+ exposes :record_purchase, takes: %i[supplier_id bought_on lines], writes: true
74
+ end
75
+
76
+ Supplies.exposed("record_purchase").takes # => [:supplier_id, :bought_on, :lines]
77
+ Supplies.exposed("delete_everything") # => nil
78
+ ```
79
+
64
80
  ## Installation
65
81
  Add this line to your application's Gemfile:
66
82
 
@@ -0,0 +1,15 @@
1
+ module HubKernel
2
+ module Exposes
3
+ Exposed = Data.define(:name, :takes, :writes)
4
+
5
+ def exposes(name, takes:, writes:)
6
+ exposed_methods[name.to_s] = Exposed.new(name: name, takes: takes, writes: writes)
7
+ end
8
+
9
+ def exposed(name) = exposed_methods[name.to_s]
10
+
11
+ private
12
+
13
+ def exposed_methods = @exposed_methods ||= {}
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module HubKernel
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/hub_kernel.rb CHANGED
@@ -5,6 +5,7 @@ require "hub_kernel/answer"
5
5
  require "hub_kernel/follow_up"
6
6
  require "hub_kernel/markup"
7
7
  require "hub_kernel/ports"
8
+ require "hub_kernel/exposes"
8
9
 
9
10
  module HubKernel
10
11
  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.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tylercschneider
@@ -45,6 +45,7 @@ files:
45
45
  - lib/hub_kernel/conformance/partial.rb
46
46
  - lib/hub_kernel/context.rb
47
47
  - lib/hub_kernel/engine.rb
48
+ - lib/hub_kernel/exposes.rb
48
49
  - lib/hub_kernel/follow_up.rb
49
50
  - lib/hub_kernel/hubs.rb
50
51
  - lib/hub_kernel/markup.rb