34 lines
732 B
Haskell
34 lines
732 B
Haskell
{-# LANGUAGE NamedFieldPuns #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
module Compiler (
|
|
main
|
|
) where
|
|
|
|
import Context (Contextual)
|
|
import Data.Text (Text, cons)
|
|
import qualified Data.Text as Text (concat)
|
|
import Module (Module(..))
|
|
|
|
indent :: [Text] -> [Text]
|
|
indent = fmap (cons '\t')
|
|
|
|
include :: Bool -> Module -> Text
|
|
include isMain (Module {imports, payload}) = Text.concat $
|
|
header isMain
|
|
: indent payload
|
|
++ footer isMain
|
|
where
|
|
header True = "(function() {\n"
|
|
header False = "modules[''] = (function() {\n"
|
|
footer True = ["})());"]
|
|
footer False = [
|
|
"})());"
|
|
, "Object.freeze(modules['']);"
|
|
]
|
|
|
|
scan :: Contextual ()
|
|
scan = undefined
|
|
|
|
main :: Contextual Text
|
|
main = undefined
|