Closed9

elm-syntax-dslでコード生成

TheSacredLiptonTheSacredLipton

the-sett/elm-syntax-dslstil4m/elm-syntaxをシンプルに使いやすくしたよ!って感じらしいです(elm-syntaxの方を使ったことが無いので比較できませんが...)

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/

結構ボリュームがあり、使っている中でこんがらがってきたのでスクラップに少しずつまとめていきます

Commentは多分生成させないと思うので省きます

TheSacredLiptonTheSacredLipton

基本はfileを作ってprettyすることでStringになるみたいです

https://ellie-app.com/cHb8rdkpkmqa1

  • pretty

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/Elm-Pretty#pretty

  • file

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/Elm-CodeGen#file

Elm.PrettyにはprepareLayoutというものもありthe-sett/elm-pretty-printerと連携させることもできるみたいです

https://package.elm-lang.org/packages/the-sett/elm-pretty-printer/latest/

TheSacredLiptonTheSacredLipton

File

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/Elm-CodeGen#File

Filefileで生成できます

file :
    Module
    -> List Import
    -> List Declaration
    -> Maybe (Comment FileComment)
    -> File

こんな感じでモジュール、モジュールの読み込み(複数可)、実際のコード(複数可)、コメントがそれぞれ引数になってる感じです

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/Elm-CodeGen#file

fileで最小なのはこんな感じだと思います

file (normalModule [] []) [] [] Nothing

https://ellie-app.com/cHbqzrVd7YWa1

TheSacredLiptonTheSacredLipton

ModuleName

ModuleNameList Stringのaliasになってます

type alias ModuleName =
    List String

https://package.elm-lang.org/packages/the-sett/elm-syntax-dsl/latest/Elm-CodeGen#ModuleName

ModuleNameはピリオドで連結してくれます

normalModule  ["Element", "Generate", "Colors"] []

https://ellie-app.com/cHdQVv7xQSGa1

小文字も入ってしまうので別途バリデーションが必要かもしれません

normalModule  ["element", "generate", "colors"] []

このスクラップは2022/11/24にクローズされました