on master help sign in
added require for the %lib anotations in js backend
1f50430Rui Barreiro
src/IRTS/JavaScript/Codegen.hs+11
@@ -71,6 +71,15 @@ getIncludes l = do
71 incs <- mapM getInclude l
71 incs <- mapM getInclude l
72 return $ T.intercalate "\n\n" incs
72 return $ T.intercalate "\n\n" incs
73
73
74+includeLibs :: [String] -> String
75+includeLibs =
76+ let
77+ repl '\\' = '_'
78+ repl '/' = '_'
79+ repl c = c
80+ in
81+ concatMap (\lib -> "var " ++ (repl <$> lib) ++ " = require(\"" ++ lib ++"\");\n")
82+
74isYes :: Maybe String -> Bool
83isYes :: Maybe String -> Bool
75isYes (Just "Y") = True
84isYes (Just "Y") = True
76isYes (Just "y") = True
85isYes (Just "y") = True
@@ -105,6 +114,7 @@ codegenJs conf ci =
105 extraRT <- TIO.readFile $ path </> (extraRunTime conf)
114 extraRT <- TIO.readFile $ path </> (extraRunTime conf)
106
115
107 includes <- getIncludes $ includes ci
116 includes <- getIncludes $ includes ci
117+ let libs = T.pack $ includeLibs $ compileLibs ci
108 TIO.writeFile (outputFile ci) $ T.concat [ header conf
118 TIO.writeFile (outputFile ci) $ T.concat [ header conf
109 , "\"use strict\";\n\n"
119 , "\"use strict\";\n\n"
110 , "(function(){\n\n"
120 , "(function(){\n\n"
@@ -114,6 +124,7 @@ codegenJs conf ci =
114 , doPartials (partialApplications stats), "\n"
124 , doPartials (partialApplications stats), "\n"
115 , doHiddenClasses (hiddenClasses stats), "\n"
125 , doHiddenClasses (hiddenClasses stats), "\n"
116 , includes, "\n"
126 , includes, "\n"
127+ , libs, "\n"
117 , out, "\n"
128 , out, "\n"
118 , jsName (sMN 0 "runMain"), "();\n"
129 , jsName (sMN 0 "runMain"), "();\n"
119 , "}.call(this))"
130 , "}.call(this))"