渋谷Vimランチをした。🍛 時々社外の人とランチ行くの良いですね。Rubyistともやりたい。
引きこもり的には目黒でやりたいけど、まあ渋谷までたまには出ていくのも良いかもしれない。
問題は、私が旗振り役をやりたくないというところにあって、多分一生やらない
今日は仕事納めで、ゆるゆると仕事をしていた。 社で出しているOSSのCIでRuby 2.7を使うようにしたり(Travis CIは2.7がきてた)、OSSにコメントしたり、だいたいOSSを触っていた。
rbsfmtが、ruby-signatureのテストを壊さないぐらいにはまともなコードを吐くようになった。 まだ課題は沢山残っている。
- 長すぎる行を丁度いいところで改行する機能
- どこを改行すると自然なのか
- 構文的にはどこでも改行できるのだけど、人間的にはどこでもは改行したくない
- 改行した時にtrailing commaを入れたい
- どこを改行すると自然なのか
- コメントの対応
- 今は雑にしかコメントを扱っていないので、コメントが消えたりする。
- ちょっと難しいけど、意味不明な位置にコメントを書けないことにすれば、わりといけるのではと思っている。
# このコードに対して、 def foo: () -> void # 次のようにコメントを書ける def # ここにコメントを書ける foo # ここにコメントを書ける : # ここにコメントを書ける ( # ここにコメントを書ける ) # ここにコメントを書ける -> # ここにコメントを書ける void
- こういう意味不明なやつを無視すればわりと勝てる
- ruby-signatureでは使われていない構文
- たぶんある。
- 優先順位とunionとか
- 今は雑なif文を書いて対処しているけど、もう少し良い方法を取って網羅的にやりたい
- https://github.com/pocke/rbsfmt/blob/1d76f13fdf1776abb2622dd945e94d823690e213/lib/rbsfmt/runner.rb#L253-L254
- union type以外でかっこをつけたほうがいいやつってあるかなあ。
soutaroさんにwriterというのがあることを教えてもらった。車輪の再発明をしていたっぽい。まあ楽しかったからいいか。 https://github.com/ruby/ruby-signature/blob/967a50fe5cfbd2de31f865445821c972852f8b1f/lib/ruby/signature/writer.rb
writerベースで書き直そうかな。smoke testがあるからそれを適用してみたら、writerのバグをいくつか見つけたので直した。
いい感じに改行をいれることを考えると、Writerの実装のままだとつらそう。