hsx2hs 0.12.0 → 0.13.0
raw patch · 2 files changed
+21/−13 lines, 2 filesnew-uploaderPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- hsx2hs.cabal +4/−4
- src/Language/Haskell/HSX/Transform.hs +17/−9
hsx2hs.cabal view
@@ -1,5 +1,5 @@ Name: hsx2hs-Version: 0.12.0+Version: 0.13.0 License: BSD3 License-File: LICENSE Author: Niklas Broberg, Joel Bjornson@@ -27,15 +27,15 @@ Achieving that is not as simple as it may seem, but the XMLGenerator module provides all the necessary machinery. -Homepage: http://patch-tag.com/r/nibro/hsx+Homepage: http://hub.darcs.net/nibro/hsx2hs -Tested-With: GHC==6.8.3, GHC==6.10.1+Tested-With: GHC==7.6.3 Cabal-Version: >= 1.6 Build-Type: Simple source-repository head type: darcs- location: http://patch-tag.com/r/nibro/hsx+ location: http://hub.darcs.net/nibro/hsx2hs Flag base4
src/Language/Haskell/HSX/Transform.hs view
@@ -267,7 +267,8 @@ -- PCDATA should be lifted as a string into the XML datatype. XPcdata pcdata -> do setXmlTransformed- return $ ExpTypeSig noLoc (strE pcdata) (TyCon (UnQual (Ident "Text")))+ return $ metaFromStringLit $ strE pcdata+-- return $ ExpTypeSig noLoc (strE pcdata) (TyCon (UnQual (Ident "Text"))) -- Escaped expressions should be treated as just expressions. XExpTag e -> do setXmlTransformed e' <- transformExpM e@@ -410,7 +411,8 @@ mkAttr (XAttr name e) = paren (metaMkName name `metaAssign` (textTypeSig e)) where- textTypeSig e@(Lit (String _)) = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))+ textTypeSig e@(Lit (String _)) = metaFromStringLit e+-- textTypeSig e@(Lit (String _)) = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text"))) textTypeSig e = e -- | Transform pattern bind declarations inside a @let@-expression by transforming@@ -1899,7 +1901,7 @@ metaGenElement :: XName -> [Exp] -> Maybe Exp -> [Exp] -> Exp metaGenElement name ats mat cs = let (d,n) = xNameParts name- ne = tuple [metaMkMaybe $ fmap strE d, strE n]+ ne = tuple [metaMkMaybe $ fmap (metaFromStringLit . strE) d, metaFromStringLit $ strE n] m = maybe id (\x y -> paren $ y `metaAppend` (metaMap [argAsAttr, x])) mat attrs = m $ listE $ map metaAsAttr ats in metaFunction "genElement" [ne, attrs, listE cs]@@ -1908,14 +1910,14 @@ metaGenEElement :: XName -> [Exp] -> Maybe Exp -> Exp metaGenEElement name ats mat = let (d,n) = xNameParts name- ne = tuple [metaMkMaybe $ fmap strE d, strE n]+ ne = tuple [metaMkMaybe $ fmap (metaFromStringLit . strE) d, metaFromStringLit $ strE n] m = maybe id (\x y -> paren $ y `metaAppend` (metaMap [argAsAttr, x])) mat attrs = m $ listE $ map metaAsAttr ats in metaFunction "genEElement" [ne, attrs] -- | Create an attribute by applying the overloaded @asAttr@ metaAsAttr :: Exp -> Exp-metaAsAttr e@(Lit (String _)) = metaFunction "asAttr" [ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))]+metaAsAttr e@(Lit (String _)) = metaFunction "asAttr" [metaFromStringLit e] -- [ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))] metaAsAttr e = metaFunction "asAttr" [e] argAsAttr :: Exp@@ -1931,6 +1933,9 @@ metaAsChild :: Exp -> Exp metaAsChild e = metaFunction "asChild" [paren e] +-- | convert a 'String' literal to lazy 'Text' by calling a function named 'fromStringLit'+metaFromStringLit :: Exp -> Exp+metaFromStringLit e = metaFunction "fromStringLit" [e] -- TODO: We need to fix the stuff below so pattern matching on XML could also be overloaded. -- Right now it only works on HSP XML, or anything that is syntactically identical to it.@@ -1955,8 +1960,11 @@ metaMkName :: XName -> Exp metaMkName n = case n of- XName s -> textTypeSig (strE s)- XDomName d s -> tuple [textTypeSig $ strE d, textTypeSig $ strE s]- where- textTypeSig e = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))+ XName s -> metaFromStringLit (strE s)+ XDomName d s -> tuple [metaFromStringLit $ strE d, metaFromStringLit $ strE s]++-- XName s -> textTypeSig (strE s)+-- XDomName d s -> tuple [textTypeSig $ strE d, textTypeSig $ strE s]+-- where+-- textTypeSig e = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))