diff options
Diffstat (limited to 'lua/clever_f/sequence_coordinator.lua')
| -rw-r--r-- | lua/clever_f/sequence_coordinator.lua | 20 |
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() |
