hsp 0.9.2 → 0.10.0
raw patch · 5 files changed
+48/−7 lines, 5 files
Files
- hsp.cabal +1/−1
- src/HSP/HTML4.hs +1/−0
- src/HSP/Monad.hs +34/−5
- src/HSP/XML.hs +3/−1
- src/HSP/XMLGenerator.hs +9/−0
hsp.cabal view
@@ -1,5 +1,5 @@ Name: hsp-Version: 0.9.2+Version: 0.10.0 License: BSD3 License-File: LICENSE Author: Niklas Broberg, Joel Bjornson
src/HSP/HTML4.hs view
@@ -70,6 +70,7 @@ renderAttr :: Attribute -> Builder renderAttr (MkAttr (nam, (Value needsEscape val))) = showName nam <> singleton '=' <> renderAttrVal (if needsEscape then (escaper htmlEscapeChars val) else fromLazyText val)+ renderAttr (MkAttr (nam, NoValue)) = showName nam renderAttrVal :: Builder -> Builder renderAttrVal s = singleton '\"' <> s <> singleton '\"'
src/HSP/Monad.hs view
@@ -11,10 +11,11 @@ import Control.Monad.State (MonadState) import Control.Monad.Trans (MonadIO, MonadTrans(lift)) import Data.String (fromString)+import qualified Data.Text as Strict import Data.Text.Lazy (Text)-import qualified Data.Text.Lazy as Text+import qualified Data.Text.Lazy as Lazy import HSP.XMLGenerator (AppendChild(..), Attr(..), EmbedAsAttr(..), EmbedAsChild(..), IsName(..), SetAttr(..), XMLGen(..), XMLGenerator)-import HSP.XML (Attribute(..), XML(..), pAttrVal, pcdata)+import HSP.XML (Attribute(..), XML(..), AttrValue(..), pAttrVal, pcdata) newtype HSPT xml m a = HSPT { unHSPT :: m a } deriving (Functor, Applicative, Alternative, Monad, MonadPlus, MonadIO, MonadReader r, MonadWriter w, MonadState s, MonadCont, MonadError e, MonadFix)@@ -55,13 +56,16 @@ asChild = return . map HSPChild instance (Functor m, Monad m) => EmbedAsChild (HSPT XML m) String where- asChild = return . (:[]) . HSPChild . pcdata . Text.pack+ asChild = return . (:[]) . HSPChild . pcdata . Lazy.pack instance (Functor m, Monad m) => EmbedAsChild (HSPT XML m) Text where asChild = return . (:[]) . HSPChild . pcdata +instance (Functor m, Monad m) => EmbedAsChild (HSPT XML m) Strict.Text where+ asChild = return . (:[]) . HSPChild . pcdata . Lazy.fromStrict+ instance (Functor m, Monad m) => EmbedAsChild (HSPT XML m) Char where- asChild = return . (:[]) . pcdataToChild . Text.singleton+ asChild = return . (:[]) . pcdataToChild . Lazy.singleton instance (Functor m, Monad m) => EmbedAsChild (HSPT XML m) () where asChild = return . const []@@ -72,14 +76,39 @@ instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Text) where asAttr (n := v) = asAttr $ MkAttr (toName n, (pAttrVal v)) +instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text Text) where+ asAttr (n := v) = asAttr $ MkAttr (toName n, (pAttrVal v))++instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text Strict.Text) where+ asAttr (n := v) = asAttr $ MkAttr (toName n, (pAttrVal $ Lazy.fromStrict v))++instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Strict.Text) where+ asAttr (n := v) = asAttr $ MkAttr (toName n, (pAttrVal $ Lazy.fromStrict v))+ instance (Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Text Char) where- asAttr (n := c) = asAttr (n := Text.singleton c)+ asAttr (n := c) = asAttr (n := Lazy.singleton c) +instance (Monad m, Functor m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text Char) where+ asAttr (n := c) = asAttr $ MkAttr (toName n, pAttrVal $ Lazy.singleton c)+ instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Bool) where asAttr (n := True) = asAttr $ MkAttr (toName n, pAttrVal $ fromString "true") asAttr (n := False) = asAttr $ MkAttr (toName n, pAttrVal $ fromString "false") +instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text Bool) where+ asAttr (n := True) = asAttr $ MkAttr (toName n, pAttrVal $ fromString "true")+ asAttr (n := False) = asAttr $ MkAttr (toName n, pAttrVal $ fromString "false")+ instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text Int) where asAttr (n := i) = asAttr $ MkAttr (toName n, pAttrVal $ fromString (show i))++instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text Int) where+ asAttr (n := i) = asAttr $ MkAttr (toName n, pAttrVal $ fromString (show i))++instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Text ()) where+ asAttr (n := ()) = asAttr $ MkAttr (toName n, NoValue)++instance (Functor m, Monad m) => EmbedAsAttr (HSPT XML m) (Attr Strict.Text ()) where+ asAttr (n := ()) = asAttr $ MkAttr (toName n, NoValue) instance (Functor m, Monad m) => XMLGenerator (HSPT XML m)
src/HSP/XML.hs view
@@ -57,7 +57,7 @@ deriving Show -- | Represents an attribue value.-data AttrValue = Value Bool Text+data AttrValue = Value Bool Text | NoValue -- fromStringLit :: String -> Text -- fromStringLit = Text.pack@@ -69,6 +69,7 @@ instance Show AttrValue where show (Value _ txt) = Text.unpack txt+ show NoValue = "" type Attributes = [Attribute] @@ -130,6 +131,7 @@ renderAttr :: Attribute -> Builder renderAttr (MkAttr (nam, (Value needsEscape val))) = showNSName nam <> singleton '=' <> renderAttrVal (if needsEscape then escape val else fromLazyText val)+ renderAttr (MkAttr (nam, NoValue)) = showNSName nam <> singleton '=' <> renderAttrVal (fromString "") renderAttrVal :: Builder -> Builder renderAttrVal txt = singleton '\"' <> txt <> singleton '\"'
src/HSP/XMLGenerator.hs view
@@ -29,6 +29,7 @@ import Control.Monad (MonadPlus(..),liftM) import Data.Text.Lazy (Text) import qualified Data.Text.Lazy as Text +import qualified Data.Text as Strict ---------------------------------------------- -- General XML Generation @@ -209,9 +210,17 @@ instance IsName Text Text where toName s = (Nothing, s) +-- | strings can represent names, meaning a simple name with no domain. +instance IsName Strict.Text Text where + toName s = (Nothing, Text.fromStrict s) + -- | Pairs of strings can represent names, meaning a name qualified with a domain. instance IsName (Text, Text) Text where toName (ns, s) = (Just $ ns, s) + +-- | Pairs of strings can represent names, meaning a name qualified with a domain. +instance IsName (Strict.Text, Strict.Text) Text where + toName (ns, s) = (Just $ Text.fromStrict ns, Text.fromStrict s) --------------------------------------- -- TypeCast, in lieu of ~ constraints