diff options
author | Thiago Negri <evohunz@gmail.com> | 2013-09-10 17:57:16 -0300 |
---|---|---|
committer | Thiago Negri <evohunz@gmail.com> | 2013-09-11 22:05:12 -0300 |
commit | b780acaeac9545199867405f6c14434e77baf1d7 (patch) | |
tree | 12d9b3402c049c21a139bcf8e9c51a5ce5f3e593 /src/Plugins/StdinReader.hs | |
parent | 1d20b99ec742ce08a8083a01ccb15adb763815e1 (diff) | |
download | xmobar-b780acaeac9545199867405f6c14434e77baf1d7.tar.gz xmobar-b780acaeac9545199867405f6c14434e77baf1d7.tar.bz2 |
Created UnsafeStdinReader plugin
Diffstat (limited to 'src/Plugins/StdinReader.hs')
-rw-r--r-- | src/Plugins/StdinReader.hs | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/Plugins/StdinReader.hs b/src/Plugins/StdinReader.hs index f242f93..35f0375 100644 --- a/src/Plugins/StdinReader.hs +++ b/src/Plugins/StdinReader.hs @@ -8,11 +8,15 @@ -- Stability : unstable -- Portability : unportable -- --- A plugin for reading from stdin +-- A plugin for reading from `stdin`. +-- +-- Exports: +-- - `StdinReader` to safely display stdin content (striping actions). +-- - `UnsafeStdinReader` to display stdin content as-is. -- ----------------------------------------------------------------------------- -module Plugins.StdinReader where +module Plugins.StdinReader (StdinReader(..)) where import Prelude import System.Posix.Process @@ -22,14 +26,19 @@ import Control.Exception (SomeException(..), handle) import Plugins import Actions (stripActions) -data StdinReader = StdinReader deriving (Read, Show) +data StdinReader = StdinReader | UnsafeStdinReader + deriving (Read, Show) instance Exec StdinReader where - start StdinReader cb = do + start stdinReader cb = do s <- handle (\(SomeException e) -> do hPrint stderr e; return "") (hGetLineSafe stdin) - cb (stripActions s) + cb $ escape stdinReader s eof <- hIsEOF stdin if eof then exitImmediately ExitSuccess - else start StdinReader cb + else start stdinReader cb + +escape :: StdinReader -> String -> String +escape StdinReader = stripActions +escape UnsafeStdinReader = id |