2021-05-13: lite-grapheme を公開した
やったこと
lite
lite-grapheme を公開した。
文字列を書記素クラスタに分解するライブラリ。
https://github.com/MakeNowJust-Labo/lite/tree/main/modules/lite-grapheme
基本の使い方は、Grapheme.iterate(s) で s を書記素クラスタに分解するイテレータを返すので、それを使うことになる。
他にも Grapheme.findNextBoundary(s, index) で index から次の書記素クラスタの境界位置を返したり、findPreviousBoundary(s, index) で前の書記素クラスタの境界位置を返したりできる。
内部的な実装は UAX29 に書いてあった正規表現を手で DFA にして処理している。
ただ、 findNextBoundary とかは書記素クラスタの途中から始まる可能性があるので、その場合に対応すえるためにいくつかの例外処理をしている。
なんか生成したコードで無限にコンパイル時間がかかるので困ったのだけど、Scala 3 では総称型の可変長引数の推論に時間がかかるっぽいので型引数を指定するようにしたら改善した。
罠すぎる。
そして、何やら Scala 3 がリリースされてみたいなので、Scala 3 でのビルドを試したりしていた。
https://twitter.com/make_now_just/status/1392867255147397120