wl-pprint-terminfo 0.6 → 0.7.0
raw patch · 3 files changed
+59/−18 lines, 3 filesdep −hscursesPVP ok
version bump matches the API change (PVP)
Dependencies removed: hscurses
API changes (from Hackage documentation)
Files
- System/Console/Terminfo/PrettyPrint.hs +10/−3
- System/Console/Terminfo/PrettyPrint/Curses.hs +25/−0
- wl-pprint-terminfo.cabal +24/−15
System/Console/Terminfo/PrettyPrint.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} module System.Console.Terminfo.PrettyPrint ( -- * Raw Effect (requires the effect be present)@@ -59,10 +60,12 @@ import Control.Applicative import Control.Monad import Control.Monad.Trans.State-import UI.HSCurses.Curses (initScr, scrSize, endWin) import Control.Monad.Trans.Class import Control.Exception (finally) import System.IO (stdout)+#ifdef Cursed+import System.Console.Terminfo.PrettyPrint.Curses+#endif data ScopedEffect@@ -198,11 +201,15 @@ evalTermState s = liftM fst $ runStateT s [] kludgeWindowSize :: IO Int+#ifdef Cursed kludgeWindowSize = do _ <- initScr- s <- snd <$> scrSize+ s <- screenWidth s <$ guard (s >= 30 && s < 320) `finally` endWin+#else+kludgeWindowSize = fail "missing ncurses"+#endif displayLn :: PrettyTerm t => t -> IO () displayLn t = displayDoc 0.6 (prettyTerm t <> linebreak)@@ -219,7 +226,7 @@ displayDoc' term ribbon doc = do cols <- kludgeWindowSize `mplus` return (maybe 80 id (getCapability term termColumns))- displayDoc'' term ribbon cols doc+ displayDoc'' term ribbon (cols - 1) doc displayDoc'' :: PrettyTerm t => Terminal -> Float -> Int -> t -> IO () displayDoc'' term ribbon cols doc =
+ System/Console/Terminfo/PrettyPrint/Curses.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module System.Console.Terminfo.PrettyPrint.Curses+ ( initScr+ , screenWidth+ , endWin+ ) where++import Data.Functor+import Foreign.Marshal.Error (throwIfNull)+import Foreign.C.Types (CInt)+import Foreign.Ptr (Ptr)+import Foreign.Storable (peek)++type Window = Ptr ()++initScr :: IO Window+initScr = throwIfNull "initscr" initscr++foreign import ccall unsafe "curses.h initscr" initscr :: IO Window++screenWidth :: IO Int+screenWidth = fromIntegral <$> peek colsPtr++foreign import ccall "curses.h &COLS" colsPtr :: Ptr CInt+foreign import ccall unsafe "curses.h endwin" endWin :: IO CInt
wl-pprint-terminfo.cabal view
@@ -1,22 +1,26 @@-name: wl-pprint-terminfo-category: Control, Monads, Text-version: 0.6-cabal-version: >= 1.6-license: BSD3-license-file: LICENSE-author: Edward A. Kmett-maintainer: Edward A. Kmett <ekmett@gmail.com>-stability: experimental-homepage: git://github.com/ekmett/wl-pprint-terminfo/-copyright: Copyright (C) 2011 Edward A. Kmett-synopsis: A color pretty printer with terminfo support-description: A color pretty printer with terminfo support-build-type: Simple+name: wl-pprint-terminfo+category: Control, Monads, Text+version: 0.7.0+cabal-version: >= 1.6+license: BSD3+license-file: LICENSE+author: Edward A. Kmett+maintainer: Edward A. Kmett <ekmett@gmail.com>+stability: experimental+homepage: git://github.com/ekmett/wl-pprint-terminfo/+copyright: Copyright (C) 2011 Edward A. Kmett+synopsis: A color pretty printer with terminfo support+description: A color pretty printer with terminfo support+build-type: Simple source-repository head type: git location: git://github.com/ekmett/wl-pprint-terminfo.git +flag Cursed+ manual: False+ default: True+ library build-depends: @@ -24,9 +28,14 @@ semigroups >= 0.8 && < 0.9, containers >= 0.4 && < 0.5, wl-pprint-extras >= 1.5 && < 1.6,- hscurses >= 1.4 && < 1.5, terminfo >= 0.3.2 && < 0.4, transformers >= 0.2.2 && < 0.3++ if flag(Cursed)+ extra-libraries: curses+ other-modules:+ System.Console.Terminfo.PrettyPrint.Curses+ cpp-options: -DCursed exposed-modules: System.Console.Terminfo.PrettyPrint