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.lua19
1 files changed, 18 insertions, 1 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua
index 0f233cf..6d2d31b 100644
--- a/lua/clever_f/sequence_coordinator.lua
+++ b/lua/clever_f/sequence_coordinator.lua
@@ -1,4 +1,6 @@
local acquisition_service_factory = require("clever_f.acquisition_service")
+local case_policy = require("clever_f.case_policy")
+local direct_preview_planner = require("clever_f.direct_preview_planner")
local domain = require("clever_f.domain")
local feedback_service_factory = require("clever_f.feedback_service")
local motion_executor_factory = require("clever_f.motion_executor")
@@ -73,9 +75,20 @@ function SequenceCoordinator.new(options)
transitions = transitions,
policy = policy_service,
})
+ local lowercase = options.lowercase
+ if lowercase == nil and type(host.lowercase) == "function" then
+ lowercase = function(value)
+ return host:lowercase(value)
+ end
+ end
+ local case_resolver = options.case_resolver
+ or case_policy.new({ lowercase = lowercase })
local target_factory = options.target_factory
or options.target_plan_factory
- or target_plan_factory.new({ policy = policy_service })
+ or target_plan_factory.new({
+ policy = policy_service,
+ case_resolver = case_resolver,
+ })
if type(target_factory) ~= "table" or type(target_factory.build) ~= "function" then
fail("SequenceCoordinator target factory must provide build", 2)
end
@@ -87,6 +100,9 @@ function SequenceCoordinator.new(options)
then
fail("SequenceCoordinator motion factory must build contextual plans", 2)
end
+ local direct_planner = options.direct_planner
+ or options.direct_preview_planner
+ or direct_preview_planner.new({ case_resolver = case_resolver })
local acquisition = options.acquisition
or options.acquisition_service
or acquisition_service_factory.new({
@@ -95,6 +111,7 @@ function SequenceCoordinator.new(options)
transitions = transitions,
policy = policy_service,
feedback = feedback,
+ direct_planner = direct_planner,
target_factory = target_factory,
motion_factory = motion_factory,
})