1. 概述
本報告旨在總結 SwiftTerm 庫中關於數據輸入 (feed)、內容獲取以及活動監控的核心機制。適用於需要集成終端模擬器並對其數據流進行控制或監聽的上層應用開發。
2. 數據輸入 (Input Mechanism)
終端模擬器的核心驅動力來自於 feed 方法,它負責將原始數據送入解析器。
核心方法
位於 Terminal.swift 及 AppleTerminalView.swift (及其平台子類) 中:
- feed(text: String): 接受字符串輸入,內部轉換為 UTF-8 字節。
- feed(byteArray: [UInt8]) / feed(buffer: ArraySlice<UInt8>): 接受原始字節數組。這是性能最高的方式,適合處理大量數據。
工作流程
- 調用: 外部調用 terminalView.feed(...)。
- 準備 (feedPrepare): 視圖層暫停部分 UI 更新,使搜索結果失效。
- 解析: EscapeSequenceParser 處理字節流,更新內部 Buffer 狀態(如光標移動、字符寫入、顏色變更)。
- 完成 (feedFinish): 觸發 updateDisplay,將變更繪製到屏幕上。
3. 數據獲取 (Data Access)
上層應用可以通過以下方式獲取終端內的文本內容:
let content = terminal.getTermContents()
let selected = terminalView.getSelectedText()
- 逐行訪問 (高級): 直接訪問 terminal.buffer.lines,這是一個包含 Line 對象的循環列表。每個 Line 包含富文本數據 (CharData)。