訊息傳遞庫
隨著時間的推移,最初作為發送訊息的單一函數已經發展成為相關函數的集合。這些函數現在構成了訊息傳遞庫的基礎,旨在處理到不同目的地的輸出,例如 GUI、錯誤控制台和終端。
為什麼要使用訊息傳遞庫?
隨著我們需求的成長,跨多個輸出處理訊息需要更加模組化和可擴展的方法。我們不再用單一函數完成所有事情,而是將流程分解為可重複使用的元件,從而實現更大的靈活性。該庫現在可以用作通用訊息傳遞工具,其他外掛程式或函數可以藉用。
訊息傳遞庫有什麼作用?
訊息傳遞庫目前包括以下功能:
- send-to-gui:將訊息傳送到 Lumi GUI 對話方塊。
- 傳送到錯誤控制台:將訊息傳送到 Lumi 錯誤控制台。
- 傳送到終端機:將訊息傳送到終端機視窗。
- 發送訊息:將訊息定向到適當輸出的調度程序功能。
- 驗證訊息:在發送之前確保訊息和輸出有效。
擴充庫
訊息傳遞庫可以輕鬆擴展以支援額外的輸出。例如:
- 傳送到檔案:將訊息儲存到日誌檔案。
- 傳送到記錄器:與外部日誌記錄系統整合。
- 傳送到通知:將訊息顯示為系統通知。
透過遵循相同的模組化設計和可重複使用功能模式,該程式庫可以發展成為處理各種訊息傳遞任務的綜合工具。
訊息傳遞庫的好處
- 可重複使用:功能可以在不同的外掛程式或專案中重複使用。
- 模組化:每個函數處理一項特定任務,使程式碼更易於維護和擴展。
- 一致性:使用相同的驗證和訊息處理函數可確保整個應用程式的行為一致。
訊息傳遞庫是更廣泛框架的開始,可以簡化專案中訊息的管理方式。隨著庫的增長,新的插件可以輕鬆地利用它來將訊息發送到任何需要的地方。
我們可以調整文件結構:
/home/your-username/code/
├── script-fu/
├── library/
│ └── send-message.scm -> messaging.scm
└── plug-ins/
└── hello-world/
└── hello-world.scm並且記得調整主插件中的load:
# !/usr/bin/env lumi-scheme-interpreter-0.1
(load "/home/mark/code/github/script-plugins/funky-library/messaging.scm")
(define (scheme-hello-world)
(let ((message "Hello world!\n"))
(send-message message 'gui)
(send-message message 'error-console)
(send-message message 'terminal)))
(scheme-register-procedure "scheme-hello-world"
"Hello world!"
"A Scheme procedure plug-in refactored"
"Mark Sweeney"
"Under GNU GENERAL PUBLIC LICENSE Version 3"
"2024")
(scheme-menu-register
"scheme-hello-world"
"<Image>/Funky")