どうも、まだ生き延びてる @tobi462 です。
swift-emmet という CLI ツールをリリースしたので、それの紹介的な記事です。
ちなみに Haskell で書かれています。
それは何?
シンプルな記法で構造体やクラスのコードを生成する CLI ツールです。
おまけ程度ですが REPL も備えています(ほんとにおまけレベルです)。
なんで作ったの?
業務アプリ(でなくとも)だと、多数のプロパティを持った構造体(やクラス)のコードを記述する機会は多いと思います。
そうした際、だいたい私は VSCode のマルチカーソルを使って雛形コードを書いて、それを Xcode に貼り付けるというフローをしていました(伝わりますかね?)。
ただ、それでも面倒に感じることが多かったので、Emmet インスパイアな CLI ツールを作ってみた次第です。
詳細は README に譲りたいと思いますが、 var
のみの構造体であれば、以下のように短い記述で生成できます。
$ swift-emmet 's.Person = name:S, age:I, homepage:U' struct Person { var name: String var age: Int var homepage: URL }
インストール
Homebrew (tap) に対応しています。
$ brew tap YusukeHosonuma/swift-emmet $ brew install swift-emmet
なぜ Haskell で作った?
Haskeller であることのアピールですかね。
まぁ真面目な話をすると、Haskell はそれなりに勉强してるんですが、ちゃんとしたプロダクトを作ったことが無いなぁと思い、テストや CI環境を含めてやってみた、という感じです。
Hackage にも公開しようかと思ったのですが、ライブラリという感じでもありませんし、そもそも Haskell 向けツールでも無いので、無駄に名前空間を汚しても仕方ないなと思って見送りました。
ぶっちゃけコード的にはそんなに難しいことはやっていませんが、attoparsec というパーサコンビネータを使ってるので、それなりに見通しの良いコードになっていると思います。
おわりに
正直、需要があるか分からないのですが、もしアイディアやフィードバックなどがあればお気軽に Issue や PR をいただければと思います。(だったら Swift で書いておけよと小一時間・・・
P.S.
Haskell はいいぞ。