packages feed

hsp 0.9.2 → 0.10.0

raw patch · 5 files changed

+48/−7 lines, 5 files

Files

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