経緯などの説明
- scalameta公式サイトから、これ https://scalameta.org/docs/trees/astexplorer.html のリンクがある
- scalafix書く時にはほぼ毎回使っているが不満がある
- versionが古い
- たまに出力されるASTが最新と異なっていてハマる(例: AnonymousFunction)
- Scala 3未対応?
- 更新しようにも、npm版を参照しているが https://www.npmjs.com/package/scalameta-parsers それのpublishされ具合が謎(最新がない)
- そもそも結果のASTはScalaでそのまま見たい
- トップレベルがclassではなくTermなどの場合も勝手にいい感じにparseして欲しい
- dialectなどの設定変えたい
- versionが古い
やったこと、できたもの
昔作ったやつを改変 xuwei-k.hatenablog.com
- scalametaはscala-jsでbuildされているので、それを使う
- github actionsでgh-pagesに成果物を全自動push
- serverなどは無しで、web browserのみで動く
pretty printしたい
- これ https://github.com/com-lihaoyi/PPrint 使うと、ある程度可能だが、scalametaのstructureメソッドの出力と微妙に異なるため、できればstructureの出力をそのままフォーマットしたい
- structureそのままだと、そのまま結果をscalafixのrule書くコードに貼り付けても、大抵?完全にvalidなコードになるので
- これ https://github.com/typelevel/paiges 試したが、用途が違うのか、使い方がダメなのか、想定した通りのフォーマットにはならない
- そもそもscalafmtでフォーマットすればいいのでは?
- scalafmtは(大昔は行われていたが)今はscala-jsでcross buildされていない
- 独自にcross buildしました!!!
- https://github.com/scalameta/scalafmt/compare/scalameta:8fcb641...xuwei-k:08476c3
今後やりたいこと
- dialectなど色々細かい部分を選択、設定可能にしたい
- UIをもっといい感じにしたいがフロントエンドの技術力がない・・・