]> gitweb @ CieloNegro.org - hxt-compile.git/blobdiff - Text/XML/HXT/Compilation.hs
filterOutRootAttrs
[hxt-compile.git] / Text / XML / HXT / Compilation.hs
index cbcf396b03b57baaabf0eda579874b4c1c77e3e8..c2428de92137d65c3e6904bf749b96ed35337224 100644 (file)
@@ -11,6 +11,8 @@ import           Text.XML.HXT.Compilation.XmlTree
 
 compileDocument :: ArrowXml a => a XmlTree (HsQualType, HsExp)
 compileDocument = uniqueNamespacesFromDeclAndQNames
+                  >>>
+                  filterOutRootAttrs
                   >>>
                   ( constA (HsQualType [] (HsTyCon (UnQual (HsIdent "XmlTree"))))
                     &&&
@@ -18,13 +20,19 @@ compileDocument = uniqueNamespacesFromDeclAndQNames
                   )
 
 
-wrapIntoModule :: Arrow a => a (Module, (HsName, (HsQualType, HsExp))) HsModule
-wrapIntoModule = proc (modName, (symName, (symType, symExp))) ->
+filterOutRootAttrs :: ArrowXml a => a XmlTree XmlTree
+filterOutRootAttrs = processTopDownUntil (clearAttrs `when` isRoot)
+    where
+      clearAttrs = processAttrl none
+
+
+wrapIntoModule :: Arrow a => a (Module, ([HsImportDecl], (HsName, (HsQualType, HsExp)))) HsModule
+wrapIntoModule = proc (modName, (extImports, (symName, (symType, symExp)))) ->
                  do let hsModule = HsModule undefined modName (Just exports) imports decls
                         exports  = [HsEVar (UnQual symName)]
                         imports  = [ HsImportDecl undefined (Module "Text.XML.HXT.Arrow") False Nothing Nothing
                                    , HsImportDecl undefined (Module "Text.XML.HXT.DOM.XmlNode") True (Just (Module "XN")) Nothing
-                                   ]
+                                   ] ++ extImports
                         decls    = [ HsTypeSig undefined [symName] symType
                                    , HsFunBind [HsMatch undefined symName [] (HsUnGuardedRhs symExp) []]
                                    ]