From e6eae25cf179f1fb6ea099716839abe3d759bdca Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Tue, 14 Jul 2026 20:34:58 +0800 Subject: [PATCH] refactor(gate): streamline gate installers and support multi-station codes via splitCsv --- installer.lua | 16 ++++++++++++++-- installer_bi.lua | 11 ++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/installer.lua b/installer.lua index d93e5d4..718e051 100644 --- a/installer.lua +++ b/installer.lua @@ -13,6 +13,17 @@ end +local function splitCsv(s) + local out = {} + s = trim(s) + if #s == 0 then return out end + for part in s:gmatch("[^,/%s]+") do + local v = trim(part) + if #v > 0 then table.insert(out, v) end + end + return out +end + local function writeFile(path, content, binary) local mode = binary and "wb" or "w" local f = fs.open(path, mode) @@ -86,7 +97,7 @@ term.setCursorPos(1, 1) print("Ticket Gate Installer") print("") -local stationCode = trim(prompt("Station code: ")) +local stationCode = trim(prompt("Station code(s) [comma or / separated]: ")) if #stationCode == 0 then print("No station code provided.") return @@ -94,7 +105,8 @@ end local modeRaw = prompt("Gate mode (entry/exit): ") local mode = (trim(modeRaw):lower() == "exit") and "exit" or "entry" -local cfg = { mode = mode, station_codes = { stationCode }, station_code = stationCode } +local parsedCodes = splitCsv(stationCode) +local cfg = { mode = mode, station_codes = parsedCodes, station_code = parsedCodes[1] or stationCode } local okCfg, cfgJson = pcall(textutils.serializeJSON, cfg) if not okCfg then print("Config serialize failed.") diff --git a/installer_bi.lua b/installer_bi.lua index 10c5efd..505a757 100644 --- a/installer_bi.lua +++ b/installer_bi.lua @@ -97,7 +97,7 @@ term.setCursorPos(1, 1) print("Bidirectional Ticket Gate Installer") print("") -local stationCode = trim(prompt("Station code: ")) +local stationCode = trim(prompt("Station code(s) [comma or / separated]: ")) if #stationCode == 0 then print("No station code provided.") return @@ -110,16 +110,17 @@ local backRaw = prompt("Back mode (entry/exit): ") local frontMode = normalizeMode(frontRaw) local backMode = normalizeMode(backRaw) +local parsedCodes = splitCsv(stationCode) local cfg = { - station_codes = { stationCode }, - station_code = stationCode, + station_codes = parsedCodes, + station_code = parsedCodes[1] or stationCode, side_modes = { front = frontMode, back = backMode, }, side_station_codes = { - front = stationCode, - back = stationCode, + front = parsedCodes[1] or stationCode, + back = parsedCodes[1] or stationCode, } } local okCfg, cfgJson = pcall(textutils.serializeJSON, cfg)