xatena-go (はてな記法のような記法フォーマットパーサー) を作った
Text-Xatena というはてな記法に近い記法をパースしてフォーマットする Perl のモジュールがある (ややこしい言いかただが……)。この日記も Text-Xatena + 拡張インライン記法でフォーマットされている。
golang にも同様のものが欲しくなったので作ってみることにした。
一応もとの Text-Xatena 同様、HatenaCompatible モードというのをつけてある
GOOS=js GOARCH=wasm によるデモページ
https://cho45.github.io/xatena-go/
golang は wasm に直接出力できるので、これでデモページを作ってみた。.wasm ファイルが 6MB超あるけど……
実装
Text-Xatena のほぼ単純移植として実装する方針で、Copilot (GPT 4.1) と共にやってみたけどまぁまぁ面倒だった。
元実装があり、あまりデザインを変えずに言語を変更するという感じなので、AIでもできるだろと思ったけど、案外うまくいかず、結構いちいち指示やら手を入れることが必要になってしまった。とはいえ自分で書くよりは早くできたと思う。
ある程度できてくれば複数ファイルにまたがる変更もやってくれるけど、微妙に修正漏れがあったりして面倒。
テストの雛形をつくったあと、Perl のテストファイルをコピペして、それぞれ分けてテストファイルつくるように指示したけど、テストの中身を適当に書きかえられてひどかった。
コンテキストを小さくするために、先に全体の要約とか実装方針とかをまとめたほうがよかったのかも…… 自分は元コードを理解してるから、元コードの要約をさせる発想がなかったのが敗因かもしれない。
関連エントリー
- WebAudio ComplexFirFilterNode AudioWorklet ComplexAnalyserNode (WebAudio) を作った (IQ信号のFFT) | tech - 氾濫原 に続き、WebAss...
- 日記に楽譜を表示できるようにした。 日記に楽譜を表示できるようにした。 この日記ははてな記法で書いてるので、super pre 記法でABC記譜法を書くと、該当箇所を abcj...
- Rust + wasm の環境が wasm_bindgen でめっちゃ簡単になっていた https://developer.mozilla.org/ja/docs/WebAssembly/Rust_to_wasm に書いてある通...
- 文字スクロール動画ジェネレーター https://cho45.stfuawsc.com/ticker-generator/ 文字スクロール動画ジェネレーターというのを作った。...