on master help sign in
Use xml lib to produce <dependencies/>.

(Instead of string utils)

commit6221726c79ca3492fbebd50592eb06900a9c57b1 authorLeif Warner <abimelech@gmail.com> dateSun 3 Nov 2013, 18:27 (13 years ago) parent9e5f23b
2 files changed+23−24
idris.cabal+1 src/IRTS/CodegenJava.hs+22−24
idris.cabal+1
@@ -401,6 +401,7 @@ Executable idris
401401 , vector
402402 , vector-binary-instances
403403 , network
404+ , xml
404405
405406 Extensions: MultiParamTypeClasses
406407 , FunctionalDependencies
src/IRTS/CodegenJava.hs+22−24
@@ -2,14 +2,12 @@
22module IRTS.CodegenJava (codegenJava) where
33
44import Core.TT hiding (mkApp)
5−import IRTS.BCImp
65import IRTS.CodegenCommon
76import IRTS.Java.ASTBuilding
87import IRTS.Java.JTypes
98import IRTS.Java.Mangling
109import IRTS.Lang
1110import IRTS.Simplified
12−import Paths_idris
1311import Util.System
1412
1513import Control.Applicative hiding (Const)
@@ -18,12 +16,10 @@ import Control.Monad
1816import Control.Monad.Error
1917import qualified Control.Monad.Trans as T
2018import Control.Monad.Trans.State
21−import Data.Int
22−import Data.List (foldl', intercalate, isPrefixOf,
23− isSuffixOf)
24−import Data.Maybe (fromJust)
19+import Data.List (foldl', isSuffixOf, unfoldr)
2520import qualified Data.Text as T
2621import qualified Data.Text.IO as TIO
22+import Text.XML.Light
2723import qualified Data.Vector.Unboxed as V
2824import Language.Java.Parser
2925import Language.Java.Pretty
@@ -113,7 +109,7 @@ generatePom tgtDir out libs = do
113109 (T.replace (T.pack "$ARTIFACT-NAME$")
114110 (T.pack $ takeBaseName out)
115111 (T.replace (T.pack "$DEPENDENCIES$")
116− (mkPomDependencies libs)
112+ (T.pack $ concatMap (ppElement . mkDependency) libs)
117113 execPomTemplate
118114 )
119115 )
@@ -179,23 +175,25 @@ jarHeader =
179175 ++ "exec \"$java\" $java_args -jar $MYSELF \"$@\""
180176 ++ "exit 1\n"
181177
182−mkPomDependencies :: [String] -> T.Text
183−mkPomDependencies deps =
184− T.concat $ map (T.concat . map (T.append (T.pack " ")) . mkDependency . T.pack) deps
185− where
186− mkDependency s =
187− case T.splitOn (T.pack ":") s of
188− [g, a, v] ->
189− [ T.pack $ "<dependency>\n"
190− , T.append (T.pack " ") $ mkGroupId g
191− , T.append (T.pack " ") $ mkArtifactId a
192− , T.append (T.pack " ") $ mkVersion v
193− , T.pack $ "</dependency>\n"
194− ]
195− _ -> []
196− mkGroupId g = T.append (T.pack $ "<groupId>") (T.append g $ T.pack "</groupId>\n")
197− mkArtifactId a = T.append (T.pack $ "<artifactId>") (T.append a $ T.pack "</artifactId>\n")
198− mkVersion v = T.append (T.pack $ "<version>") (T.append v $ T.pack "</version>\n")
178+-- from http://stackoverflow.com/a/4978733/283260
179+splitOn :: Eq a => a -> [a] -> [[a]]
180+splitOn chr = unfoldr sep where
181+ sep [] = Nothing
182+ sep l = Just . fmap (drop 1) . break (==chr) $ l
183+
184+mkDependency :: String -> Element
185+mkDependency d =
186+ case splitOn ':' d of
187+ [g, a, v] ->
188+ unode "dependency" [
189+ mkGroupId g,
190+ mkArtifactId a,
191+ mkVersion v
192+ ]
193+ _ -> blank_element
194+mkGroupId g = unode "groupId" g
195+mkArtifactId a = unode "artifactId" a
196+mkVersion v = unode "version" v
199197
200198-----------------------------------------------------------------------
201199-- Code generation environment