関数を足す
表記の置き場所 を埋める関数は、自分で書いて足せます。関数は Luau で書き、設定のフォルダ の functions フォルダに置きます。
-- functions/dai.luau:数を位取りした漢数字にし、「第」を付ける(12 → 第十二)return function(source, arg) local digits = kanaemi.number.digits(source) local kanji = digits and kanaemi.number.counted(digits, false) return kanji and ("第" .. kanji)endこのファイルを置けば、辞書に {}わ {dai}話 と書いて、;12wa から「第十二話」が出ます。
関数のファイル
Section titled “関数のファイル”functionsフォルダの直下にある.luauのファイルのうち、関数を返すもの 1 つが関数 1 つです。拡張子を除いたファイル名が、関数の名前になります。- 関数は、変換元(文字列)と引数(文字列か
nil)を受け取り、置き場所を埋める文字列を返します。nilを返すと、その項目から候補を作りません。 - 組み込みの関数 と同じ名前のファイルを置くと、そのファイルの関数を使います。
- 関数を返さないファイルと、
functionsの中のフォルダにあるファイルは、ほかのファイルから読むモジュールです。 - ファイルを足したり書き換えたりしたら、入力欄をクリックし直すと読み直します。
-- functions/date.luau:今日の日付を、引数の書式で書くreturn function(source, arg) return os.date(arg or "%Y-%m-%d")end- Luau の標準ライブラリ。Luau には、ファイル・環境変数・ほかのプログラムに触れる関数はありません。
requireで、functionsの中のモジュールを、読むファイルからの相対パスで読めます(require("./lib/util"))。functionsの外は読めません。- 関数どうしで値をやりとりするときは、同じモジュールを
requireして、そのテーブルを使います。グローバル変数に書いた値は、ほかの関数から見えるとは限りません。
-- functions/lib/counter.luau:関数が共有するモジュールreturn { count = 0 }-- functions/count.luau:呼ぶたびに 1 つ大きい数を書くlocal counter = require("./lib/counter")return function(source, arg) counter.count += 1 return tostring(counter.count)endkanaemi
Section titled “kanaemi”関数を書くのに使える、Kanaemi が用意する関数です。数は、数字の値(0〜9)を前から並べたリスト({ 2, 0, 2, 6 })で扱います。Luau の数に収まらない大きな数も、そのまま扱えます。
| 関数 | 返す値 |
|---|---|
kanaemi.number.digits(source) |
source の数字(半角と全角。混ざっていてもよい)の値のリスト。数字のほかの文字があるとき、空のときは nil |
kanaemi.number.counted(digits, daiji) |
先頭の 0 を落とし、位取りした漢数字。daiji が真なら大字。京の 1 万倍以上なら nil |
kanaemi.time.milliseconds() |
いまの、1970-01-01(UTC)からのミリ秒。Luau の os.time は秒までしか分からない |
kanaemi.random.bytes(count) |
OS が用意する、暗号に使える乱数の count バイト(0〜1024)の文字列。重なってはいけない値や、推測されてはいけない値に使う。math.random はそれに使えない |
うまく動かないとき
Section titled “うまく動かないとき”- Luau として読めないファイル、読むとエラーになるファイル、名前に使えない文字を含む名前のファイルは使わず、ログ に残します。設定アプリ でも、使えない関数とそのわけを見られます。
- エラーになった関数、長く動き続けた関数、メモリを使いすぎた関数は、失敗として扱い、候補を作りません。関数ごとに、最初の失敗をログに残します。長く動き続けた関数は、読み直すまで呼びません。
printで出した文字は、関数の名前を添えてログに書きます。
使わないようにする
Section titled “使わないようにする”設定ファイル の [functions] disabled に、使わない関数を書きます。functions フォルダの関数はファイル名(拡張子を除く)で、組み込みの関数は "builtin:名前" で書きます。
[functions]disabled = ["count", "builtin:uuid"]functionsフォルダの関数を外すと、同じ名前の組み込みの関数があれば、それを使います。- 外したファイルも、ほかの関数が
requireするモジュールとしては読めます。 - 設定アプリ でも選べます。