diff --git a/scripts/add_dependency_injection.lua b/scripts/add_dependency_injection.lua deleted file mode 100755 index 4f42fbe..0000000 --- a/scripts/add_dependency_injection.lua +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env lua --- Script to add dependency injection to Element.lua - -local function read_file(path) - local f = io.open(path, "r") - if not f then - error("Could not open file: " .. path) - end - local content = f:read("*all") - f:close() - return content -end - -local function write_file(path, content) - local f = io.open(path, "w") - if not f then - error("Could not write file: " .. path) - end - f:write(content) - f:close() -end - -local element_path = "modules/Element.lua" -print("Reading " .. element_path) -local content = read_file(element_path) - --- Step 1: Add defaultDependencies after Element table definition -print("Step 1: Adding default dependencies...") -local element_def = "local Element = {}\nElement.__index = Element\n" -local new_element_def = [[local Element = {} -Element.__index = Element - --- Default dependencies (can be overridden for testing) -Element.defaultDependencies = { - Context = Context, - Theme = Theme, - Color = Color, - Units = Units, - Blur = Blur, - ImageRenderer = ImageRenderer, - NinePatch = NinePatch, - RoundedRect = RoundedRect, - ImageCache = ImageCache, - utils = utils, - Grid = Grid, - InputEvent = InputEvent, - StateManager = StateManager, - TextEditor = TextEditor, - LayoutEngine = LayoutEngine, - Renderer = Renderer, - EventHandler = EventHandler, - ScrollManager = ScrollManager, - ErrorHandler = ErrorHandler, -} - -]] - -if not content:find("Element.defaultDependencies") then - content = content:gsub(element_def:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1"), new_element_def) - print(" ✓ Added defaultDependencies") -else - print(" - Already has defaultDependencies") -end - --- Step 2: Update Element.new signature -print("Step 2: Updating Element.new signature...") -local old_signature = "function Element.new%(props%)\n local self = setmetatable%({}, Element%)" -local new_signature = [[function Element.new(props, deps) - local self = setmetatable({}, Element) - - -- Initialize dependencies (allow injection for testing) - self._deps = deps or Element.defaultDependencies]] - -if not content:find("self._deps") then - content = content:gsub(old_signature, new_signature) - print(" ✓ Updated signature and added deps initialization") -else - print(" - Already has deps initialization") -end - --- Step 3: Update comment for Element.new -print("Step 3: Updating function documentation...") -content = content:gsub( - "%-%-%-@param props ElementProps\n%-%-%-@return Element", - "---@param props ElementProps\n---@param deps table? Optional dependency injection (defaults to Element.defaultDependencies)\n---@return Element" -) - -print("Writing changes to " .. element_path) -write_file(element_path, content) -print("✓ Done!") -print("\nNext steps:") -print("1. Run tests to ensure nothing broke") -print("2. Gradually replace module references with self._deps.ModuleName") -print("3. Create mock dependencies for testing")