digitallyinduced/ihp

Refactor Code Generators to be more nice-looking again

Open

#1,171 opened on Oct 25, 2021

View on GitHub
 (7 comments) (0 reactions) (0 assignees)Haskell (221 forks)batch import
good first issue

Repository metrics

Stars
 (5,285 stars)
PR merge metrics
 (Avg merge 11h 20m) (21 merged PRs in 30d)

Description

If you compare the old PHP-based code generators with the newer Haskell-based one's , the PHP-based code gen's have much more readable code.

One low hanging fruit is to replace the normal haskell strings with https://hackage.haskell.org/package/neat-interpolation-0.5.1.2/docs/NeatInterpolation.html

Basically replacing code like this:

indexAction =
            ""
            <> "    action " <> pluralName <> "Action = do\n"
            <> (if paginationEnabled
                then   "        (" <> modelVariablePlural <> "Q, pagination) <- query @" <> model <> " |> paginate\n"
                    <> "        " <> modelVariablePlural <> " <- " <> modelVariablePlural <> "Q |> fetch\n"
                else "        " <> modelVariablePlural <> " <- query @" <> model <> " |> fetch\n"
            )
            <> "        render IndexView { .. }\n"

With this:

indexAction = [text|
    action #{pluralName}Action = do
        ...
|]

Contributor guide