summaryrefslogtreecommitdiff
path: root/lua/clever_f/sequence_coordinator.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f/sequence_coordinator.lua')
-rw-r--r--lua/clever_f/sequence_coordinator.lua20
1 files changed, 15 insertions, 5 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua
index c43d244..f3ae7d7 100644
--- a/lua/clever_f/sequence_coordinator.lua
+++ b/lua/clever_f/sequence_coordinator.lua
@@ -488,19 +488,29 @@ function SequenceCoordinator:read_explicit_invocation()
}
end
-function SequenceCoordinator:resolve_explicit_same()
+function SequenceCoordinator:resolve_explicit(kind, resolver_method)
+ if type(kind) ~= "string" or kind == "" then
+ fail("explicit repeat kind must be a nonempty string", 2)
+ end
+ if type(resolver_method) ~= "string" or resolver_method == "" then
+ fail("explicit repeat resolver method must be a nonempty string", 2)
+ end
local invocation = self:read_explicit_invocation()
local resolver = coordinator_records[self].repeat_resolver
- if type(resolver.same_direction_request) ~= "function" then
- fail("RepeatResolver must build same-direction requests", 2)
+ if type(resolver[resolver_method]) ~= "function" then
+ fail("RepeatResolver must build " .. kind .. " requests", 2)
end
return {
- kind = "explicit_same",
+ kind = kind,
invocation = invocation,
- request = resolver:same_direction_request(invocation.context),
+ request = resolver[resolver_method](resolver, invocation.context),
}
end
+function SequenceCoordinator:resolve_explicit_same()
+ return self:resolve_explicit("explicit_same", "same_direction_request")
+end
+
function SequenceCoordinator:primary(value)
local descriptor = self:validate_primary_descriptor(value)
local invocation = self:read_primary_invocation()