packages feed

chatty 0.5.1.1 → 0.5.3.1

raw patch · 9 files changed

+54/−5 lines, 9 files

Files

Text/Chatty/Channel/Broadcast.hs view
@@ -32,7 +32,7 @@  -- | Typeclass for all channel printers that may broadcast to all channels that fulfill a condition. class ChannelPrinter c m => Broadcaster c m where-    -- | Print the string to all channels that fulfill the current condition.+  -- | Print the string to all channels that fulfill the current condition.   bprint :: (c -> m Bool) -> String -> m ()  -- | Typeclass for all broadcaster that may embrace sections
Text/Chatty/Channel/Printer.hs view
@@ -116,6 +116,7 @@  instance (Eq c,MonadPrinter m) => MonadPrinter (FilterT c m) where   mprint str = Filter $ \(c,c1:cx) -> if c == c1 then mprint str >> return ((),c1:cx) else return ((),c1:cx)+  mnomask str = Filter $ \(c,c1:cx) -> if c == c1 then mnomask str >> return ((),c1:cx) else return ((),c1:cx)  instance (Eq c,MonadPrinter m) => ChannelPrinter c (FilterT c m) where   cbracket c m = Filter $ \(cf,cx) -> do@@ -148,6 +149,7 @@  instance MonadPrinter m => MonadPrinter (JoinerT m) where   mprint = lift . mprint+  mnomask = lift . mnomask  instance (Eq c,MonadPrinter m) => ChannelPrinter c (JoinerT m) where   cstart _ = return ()
Text/Chatty/Extended/ANSI.hs view
@@ -23,10 +23,12 @@ module Text.Chatty.Extended.ANSI where  import qualified System.Console.ANSI as A+import Control.Monad import Control.Monad.Trans.Class import Control.Monad.IO.Class import Text.Chatty.Printer import Text.Chatty.Extended.Printer+import Text.Chatty.Expansion  -- | An ExtendedPrinter that uses ANSI colour codes. newtype AnsiPrinterT m a = AnsiPrinter { runAnsiPrinterT :: [Colour] -> m (a,[Colour]) }@@ -48,6 +50,7 @@   mprint = lift . mprint   mnoecho = lift . mnoecho   mflush = lift mflush+  mnomask = lift . mnomask  instance MonadPrinter m => ExtendedPrinter (AnsiPrinterT m) where   estart c = AnsiPrinter $ \c1 -> do@@ -61,6 +64,11 @@       _ -> do         mprint $ A.setSGRCode [A.Reset]         return ((),[])++instance (Functor m,MonadExpand m) => MonadExpand (AnsiPrinterT m) where+  expand s = AnsiPrinter $ \cx -> do+    s1 <- (expand =<<) $ liftM (replay.snd) $ runRecorderT $ liftM fst $ flip runAnsiPrinterT cx $ expandClr s+    return (s1, cx)  -- | Convert Chatty's colour intensity to ansi-terminal's one mkColourInt (Dull _) = A.Dull
Text/Chatty/Extended/HTML.hs view
@@ -23,7 +23,9 @@ module Text.Chatty.Extended.HTML where  import Text.Chatty.Printer+import Text.Chatty.Expansion import Text.Chatty.Extended.Printer+import Control.Monad import Control.Monad.Trans.Class import Control.Monad.IO.Class @@ -47,10 +49,14 @@   mprint = lift . mprint . concatMap maskHtml   mnoecho = lift . mnoecho . concatMap maskHtml   mflush = lift mflush+  mnomask = lift . mnomask  instance MonadPrinter m => ExtendedPrinter (HtmlPrinterT m) where   estart c =  lift $ mprint $ concat ["<span style=\"color: #", hexColour c, ";\">"]   efin = lift $ mprint "</span>"++instance (Functor m,MonadExpand m) => MonadExpand (HtmlPrinterT m) where+  expand = lift . expand <=< liftM (replay.snd) . runRecorderT . runHtmlPrinterT . expandClr  -- | Convert the given character to its HTML representation. maskHtml :: Char -> String
Text/Chatty/Extended/Printer.hs view
@@ -20,7 +20,7 @@ -}  -- | Provides an extended printer class that supports colours.-module Text.Chatty.Extended.Printer where+module Text.Chatty.Extended.Printer (ExtendedPrinter(..),Tone(..),Colour(..),expandClr) where  import Text.Chatty.Printer @@ -45,3 +45,32 @@   -- | Reset colour.   efin :: m () ++takeBrace 0 ('}':ss) = ""+takeBrace n ('}':ss) = '}' : takeBrace (n-1) ss+takeBrace n ('{':ss) = '{' : takeBrace (n+1) ss+takeBrace n (s:ss) = s : takeBrace n ss++splitBrace ss = let nm = takeBrace 0 ss in (nm, drop (length nm + 1) ss)++procClr c ss = let (nm,rm) = splitBrace ss in ebracket c (expandClr nm) >> expandClr rm++expandClr :: ExtendedPrinter m => String -> m ()+expandClr ('%':'{':'V':'0':';':ss) = procClr (Vivid Black) ss+expandClr ('%':'{':'V':'1':';':ss) = procClr (Vivid Red) ss+expandClr ('%':'{':'V':'2':';':ss) = procClr (Vivid Green) ss+expandClr ('%':'{':'V':'3':';':ss) = procClr (Vivid Yellow) ss+expandClr ('%':'{':'V':'4':';':ss) = procClr (Vivid Blue) ss+expandClr ('%':'{':'V':'5':';':ss) = procClr (Vivid Magenta) ss+expandClr ('%':'{':'V':'6':';':ss) = procClr (Vivid Cyan) ss+expandClr ('%':'{':'V':'7':';':ss) = procClr (Vivid White) ss+expandClr ('%':'{':'D':'0':';':ss) = procClr (Dull Black) ss+expandClr ('%':'{':'D':'1':';':ss) = procClr (Dull Red) ss+expandClr ('%':'{':'D':'2':';':ss) = procClr (Dull Green) ss+expandClr ('%':'{':'D':'3':';':ss) = procClr (Dull Yellow) ss+expandClr ('%':'{':'D':'4':';':ss) = procClr (Dull Blue) ss+expandClr ('%':'{':'D':'5':';':ss) = procClr (Dull Magenta) ss+expandClr ('%':'{':'D':'6':';':ss) = procClr (Dull Cyan) ss+expandClr ('%':'{':'D':'7':';':ss) = procClr (Dull White) ss+expandClr (s:ss) = mprint [s] >> expandClr ss+expandClr [] = return ()
Text/Chatty/Interactor.hs view
@@ -51,8 +51,8 @@ mkInteractor ''QuietT mkPrinter mkExtendedPrinter mkExpander mkExpanderEnv mkHistoryEnv mkSpawn mkRandom mkClock mkDefCP mkInteractor ''InRedirT mkPrinter mkExtendedPrinter mkExpander mkExpanderEnv mkHistoryEnv mkSpawn mkRandom mkClock mkDefCP mkInteractor ''SpawnOverlayT mkPrinter mkExtendedPrinter mkScanner mkExpander mkExpanderEnv mkHistoryEnv mkFinalizer mkRandom mkClock mkDefCP-mkInteractor ''HtmlPrinterT mkScanner mkExpander mkExpanderEnv mkHistoryEnv mkFinalizer mkSpawn mkRandom mkClock mkDefCP-mkInteractor ''AnsiPrinterT mkScanner mkExpander mkExpanderEnv mkHistoryEnv mkFinalizer mkSpawn mkRandom mkClock mkDefCP+mkInteractor ''HtmlPrinterT mkScanner mkExpanderEnv mkHistoryEnv mkFinalizer mkSpawn mkRandom mkClock mkDefCP+mkInteractor ''AnsiPrinterT mkScanner mkExpanderEnv mkHistoryEnv mkFinalizer mkSpawn mkRandom mkClock mkDefCP mkInteractor ''NullExpanderT mkScanner mkPrinter mkExtendedPrinter mkFinalizer mkSpawn mkRandom mkClock mkDefCP mkInteractor ''HistoryT  mkScanner mkPrinter mkExtendedPrinter mkFinalizer mkSpawn mkRandom mkClock mkExpanderEnv mkDefCP mkInteractor ''IntArchiverT mkArchiver
Text/Chatty/Interactor/Templates.hs view
@@ -60,6 +60,7 @@       mprint = lift . mprint       mnoecho = lift . mnoecho       mflush = lift mflush+      mnomask = lift . mnomask   |]   where sx = strToType s 
Text/Chatty/Printer.hs view
@@ -40,6 +40,9 @@   -- | Flush the buffer.   mflush :: m ()   mflush = return ()+  -- | Alternative to mprint that does not mask any characters (depends on the carrier).+  mnomask :: String -> m ()+  mnomask = mprint  instance MonadPrinter IO where   mprint = putStr
chatty.cabal view
@@ -10,7 +10,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.5.1.1+version:             0.5.3.1  -- A short (one-line) description of the package. synopsis:            Some monad transformers and typeclasses to simplify I/O on a transformer stack.