hub_kernel-interface 0.9.0 → 0.10.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 +4 -4
- data/lib/hub_kernel/exposes.rb +14 -3
- data/lib/hub_kernel/interface/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: a110bf3b15c7fbe91d280d688cadadb134e3e2ab7bbf2ef513d56b23ccbb94d6
|
|
4
|
+
data.tar.gz: eed0d2ced815810fb69566fcf8d23782855a9034c5ff4e9d498c9b18c82ca165
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ce020e02f3fb14ac881793f935ddb4f2e25f5f9a848da3c15a7ebb8e64a285dcda66f235fe19bcda4fee37316e0d34bc00cbb191de458f08c890083644a6190c
|
|
7
|
+
data.tar.gz: e3468ec19dc532b3a6092084f9e7bb07d20a78072679f86976a946be4dd2ad439d4934add1168d2338a28b450659910f6ccd8a06c425ce3f72214c326a72f316
|
data/lib/hub_kernel/exposes.rb
CHANGED
|
@@ -12,11 +12,16 @@ module HubKernel
|
|
|
12
12
|
class Refused < StandardError; end
|
|
13
13
|
|
|
14
14
|
module Exposes
|
|
15
|
-
Exposed = Data.define(:name, :takes, :writes)
|
|
15
|
+
Exposed = Data.define(:name, :takes, :writes, :earlier_answers, :answer_shape) do
|
|
16
|
+
def earlier_answer(major) = earlier_answers.find { |earlier| earlier.major == major }
|
|
17
|
+
end
|
|
18
|
+
EarlierAnswer = Data.define(:major, :translation, :answer_shape) do
|
|
19
|
+
def translate(answer) = translation.call(answer)
|
|
20
|
+
end
|
|
16
21
|
|
|
17
|
-
def exposes(name, takes:, writes:)
|
|
22
|
+
def exposes(name, takes:, writes:, earlier_answers: {}, answer_shape: nil)
|
|
18
23
|
Interface::ExposingHubs.add(self)
|
|
19
|
-
exposed_methods[name.to_s] = Exposed.new(name: name, takes: takes, writes: writes)
|
|
24
|
+
exposed_methods[name.to_s] = Exposed.new(name: name, takes: takes, writes: writes, earlier_answers: earlier_answers.map { |major, declared| earlier_answer_from(major, declared) }, answer_shape: answer_shape)
|
|
20
25
|
end
|
|
21
26
|
|
|
22
27
|
def exposed(name) = exposed_methods[name.to_s]
|
|
@@ -54,6 +59,12 @@ module HubKernel
|
|
|
54
59
|
|
|
55
60
|
def exposing_hub = name.demodulize
|
|
56
61
|
|
|
62
|
+
def earlier_answer_from(major, declared)
|
|
63
|
+
return EarlierAnswer.new(major: major, translation: declared, answer_shape: nil) if declared.respond_to?(:call)
|
|
64
|
+
|
|
65
|
+
EarlierAnswer.new(major: major, translation: declared[:translation], answer_shape: declared[:answer_shape])
|
|
66
|
+
end
|
|
67
|
+
|
|
57
68
|
def refuse_without_caller(person, account)
|
|
58
69
|
raise MissingArgumentError, "A call by name needs a person" if person.nil?
|
|
59
70
|
raise MissingArgumentError, "A call by name needs an account" if account.nil?
|