Завантаження
Як тільки допоміжна функція розростається, перенесіть її в окремий файл бібліотеки. Це зосереджує плагін і робить помічника придатним для повторного використання в кількох плагінах.
Створення файлу бібліотеки
Візьміть функцію send-message і створіть новий файл з її вмістом. Збережіть його в репозиторії, а не в папці плагінів — наприклад, на верхньому рівні:
/home/your-username/code/
├── scheme/
├── library/
│ └── send-message.scm
└── plug-ins/
└── hello-world/
└── hello-world.scm- scheme/: основний каталог для коду Scheme.
- library/: тут живуть спільні функції, наприклад
send-message.scm. - plug-ins/: тут зберігаються окремі плагіни.
- hello-world/: папка для плагіна «Hello World!».
- hello-world.scm: скрипт плагіна.
- hello-world/: папка для плагіна «Hello World!».
- library/: тут живуть спільні функції, наприклад
Приклад бібліотечної функції send-message.scm:
;; Надсилання повідомлення на різні виходи
(define (send-message message output)
(cond
;; Консоль повідомлень
((eq? output 'error-console)
;; Обробник — консоль повідомлень
(lumi-message-set-handler 2)
(lumi-message message))
;; Діалогове вікно GUI
((eq? output 'gui)
;; Обробник — діалог GUI
(lumi-message-set-handler 0)
(lumi-message message))
;; Вікно терміналу
((eq? output 'terminal)
;; Вивід у термінал через display
(display message)))
;; Повернути обробник за замовчуванням — консоль повідомлень
(lumi-message-set-handler 2))Завантаження бібліотечної функції
Бібліотеку можна завантажити командою Scheme load:
#!/usr/bin/env lumi-scheme-interpreter-0.1
(load "/home/mark/code/github/script-plugins/funky-library/send-message.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")«Hello world!» тепер стисліший і читається без коментарів — задовільний результат рефакторингу.