読み込み中
ヘルパー関数が大きくなったらすぐに、それを小さなライブラリ ファイルに移動します。これにより、プラグインに焦点が当てられ、ヘルパーを複数のプラグイン間で再利用できるようになります。
ライブラリ関数を作成する
send-message 関数を使用して、それをコンテンツとして含む新しいファイルを作成できます。ファイルをプラグイン部分ではなく、リポジトリ フォルダー (おそらく最上位近く) に保存します。
/home/your-username/code/
├── scheme/
├── library/
│ └── send-message.scm
└── plug-ins/
└── hello-world/
└── hello-world.scm- scheme/: これは、Scheme コードを保存するためのメイン ディレクトリです。
- ライブラリ/:
send-message.scmのような共有関数が存在する場所です。 - plug-ins/: これは、個々のプラグインが保存される場所です。
- hello-world/: 特定の「Hello World!」プラグイン用のフォルダー。
- hello-world.scm: プラグインのスクリプトファイル。
- hello-world/: 特定の「Hello World!」プラグイン用のフォルダー。
- ライブラリ/:
ライブラリ関数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)
;; 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")おい!コメントなしでそれ自体を説明する、よりシンプルで読みやすいものを用意しました。これがリファクタリングの満足のいく結論です。