on master help sign in
Merge pull request #3855 from rbarreiro/issue_3697
929c72dNiklas Larsson
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
@@ -100,6 +109,7 @@ codegenJs conf ci =
100 extraRT <- TIO.readFile $ path </> (extraRunTime conf)
109 extraRT <- TIO.readFile $ path </> (extraRunTime conf)
101
110
102 includes <- getIncludes $ includes ci
111 includes <- getIncludes $ includes ci
112+ let libs = T.pack $ includeLibs $ compileLibs ci
103 TIO.writeFile (outputFile ci) $ T.concat [ header conf
113 TIO.writeFile (outputFile ci) $ T.concat [ header conf
104 , "\"use strict\";\n\n"
114 , "\"use strict\";\n\n"
105 , "(function(){\n\n"
115 , "(function(){\n\n"
@@ -109,6 +119,7 @@ codegenJs conf ci =
109 , jsbn, "\n"
119 , jsbn, "\n"
110 -- external libraries
120 -- external libraries
111 , includes, "\n"
121 , includes, "\n"
122+ , libs, "\n"
112 -- user code
123 -- user code
113 , doPartials (partialApplications stats), "\n"
124 , doPartials (partialApplications stats), "\n"
114 , doHiddenClasses (hiddenClasses stats), "\n"
125 , doHiddenClasses (hiddenClasses stats), "\n"