@@ -2,14 +2,12 @@
2module IRTS.CodegenJava (codegenJava) where
2module IRTS.CodegenJava (codegenJava) where
4import Core.TT hiding (mkApp)
4import Core.TT hiding (mkApp)
6import IRTS.CodegenCommon
5import IRTS.CodegenCommon
7import IRTS.Java.ASTBuilding
6import IRTS.Java.ASTBuilding
8import IRTS.Java.JTypes
7import IRTS.Java.JTypes
9import IRTS.Java.Mangling
8import IRTS.Java.Mangling
10import IRTS.Lang
9import IRTS.Lang
11import IRTS.Simplified
10import IRTS.Simplified
13import Util.System
11import Util.System
15import Control.Applicative hiding (Const)
13import Control.Applicative hiding (Const)
@@ -18,12 +16,10 @@ import Control.Monad
18import Control.Monad.Error
16import Control.Monad.Error
19import qualified Control.Monad.Trans as T
17import qualified Control.Monad.Trans as T
20import Control.Monad.Trans.State
18import Control.Monad.Trans.State
22−import Data.List (foldl', intercalate, isPrefixOf,
23− isSuffixOf)
19+import Data.List (foldl', isSuffixOf, unfoldr)
24−import Data.Maybe (fromJust)
25import qualified Data.Text as T
20import qualified Data.Text as T
26import qualified Data.Text.IO as TIO
21import qualified Data.Text.IO as TIO
27import qualified Data.Vector.Unboxed as V
23import qualified Data.Vector.Unboxed as V
28import Language.Java.Parser
24import Language.Java.Parser
29import Language.Java.Pretty
25import Language.Java.Pretty
@@ -113,7 +109,7 @@ generatePom tgtDir out libs = do
113 (T.replace (T.pack "$ARTIFACT-NAME$")
109 (T.replace (T.pack "$ARTIFACT-NAME$")
114 (T.pack $ takeBaseName out)
110 (T.pack $ takeBaseName out)
115 (T.replace (T.pack "$DEPENDENCIES$")
111 (T.replace (T.pack "$DEPENDENCIES$")
116− (mkPomDependencies libs)
112+ (T.pack $ concatMap (ppElement . mkDependency) libs)
117 execPomTemplate
113 execPomTemplate
@@ -179,23 +175,25 @@ jarHeader =
179 ++ "exec \"$java\" $java_args -jar $MYSELF \"$@\""
175 ++ "exec \"$java\" $java_args -jar $MYSELF \"$@\""
180 ++ "exit 1\n"
176 ++ "exit 1\n"
182−mkPomDependencies :: [String] -> T.Text
178+-- from http://stackoverflow.com/a/4978733/283260
183−mkPomDependencies deps =
179+splitOn :: Eq a => a -> [a] -> [[a]]
184− T.concat $ map (T.concat . map (T.append (T.pack " ")) . mkDependency . T.pack) deps
180+splitOn chr = unfoldr sep where
185− where
181+ sep [] = Nothing
182+ sep l = Just . fmap (drop 1) . break (==chr) $ l
186− mkDependency s =
184+mkDependency :: String -> Element
187− case T.splitOn (T.pack ":") s of
186+ case splitOn ':' d of
188− [g, a, v] ->
187+ [g, a, v] ->
189− [ T.pack $ "<dependency>\n"
188+ unode "dependency" [
190− , T.append (T.pack " ") $ mkGroupId g
189+ mkGroupId g,
191− , T.append (T.pack " ") $ mkArtifactId a
190+ mkArtifactId a,
192− , T.append (T.pack " ") $ mkVersion v
191+ mkVersion v
193− , T.pack $ "</dependency>\n"
195− _ -> []
193+ _ -> blank_element
196− mkGroupId g = T.append (T.pack $ "<groupId>") (T.append g $ T.pack "</groupId>\n")
194+mkGroupId g = unode "groupId" g
197− mkArtifactId a = T.append (T.pack $ "<artifactId>") (T.append a $ T.pack "</artifactId>\n")
195+mkArtifactId a = unode "artifactId" a
198− mkVersion v = T.append (T.pack $ "<version>") (T.append v $ T.pack "</version>\n")
196+mkVersion v = unode "version" v
200-----------------------------------------------------------------------
198-----------------------------------------------------------------------
201-- Code generation environment
199-- Code generation environment