From 01f3db4e8bf5bce39915df0ded73868bd80ea018 Mon Sep 17 00:00:00 2001 From: Jackson Moore Date: Fri, 4 Sep 2026 13:46:10 +0200 Subject: Extract explicit repeat resolution --- lua/clever_f/sequence_coordinator.lua | 20 +++++++++++++++----- 1 file 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() -- cgit v1.2.3