aboutsummaryrefslogtreecommitdiff
path: root/Messages
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-07-26 21:43:05 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-07-26 21:43:05 -0400
commit13295d61d5c8aad8761b7ea54f741e498ffdf872 (patch)
tree494938a8282a1935bb678f7deea29ea9dd74961c /Messages
parent9d840b6f9cda6c5299bcb246d3d9675cb680d69a (diff)
avoid using Strings for JSON output; keep it ByteString throughout
Diffstat (limited to 'Messages')
-rw-r--r--Messages/JSON.hs10
1 files changed, 6 insertions, 4 deletions
diff --git a/Messages/JSON.hs b/Messages/JSON.hs
index 70de0739a..2a83da3a7 100644
--- a/Messages/JSON.hs
+++ b/Messages/JSON.hs
@@ -22,12 +22,14 @@ import Data.Aeson
import Control.Applicative
import qualified Data.Map as M
import qualified Data.Text as T
+import qualified Data.ByteString.Lazy as B
+import System.IO
import qualified Utility.JSONStream as Stream
import Types.Key
start :: String -> Maybe FilePath -> Maybe Key -> IO ()
-start command file key = putStr $ Stream.start $ Stream.AesonObject o
+start command file key = B.hPut stdout $ Stream.start $ Stream.AesonObject o
where
Object o = toJSON $ JSONActionItem
{ itemCommand = Just command
@@ -37,16 +39,16 @@ start command file key = putStr $ Stream.start $ Stream.AesonObject o
}
end :: Bool -> IO ()
-end b = putStr $ Stream.add (Stream.JSONChunk [("success", b)]) ++ Stream.end
+end b = B.hPut stdout $ Stream.add (Stream.JSONChunk [("success", b)]) `B.append` Stream.end
note :: String -> IO ()
note s = add (Stream.JSONChunk [("note", s)])
add :: Stream.JSONChunk a -> IO ()
-add = putStr . Stream.add
+add = B.hPut stdout . Stream.add
complete :: Stream.JSONChunk a -> IO ()
-complete v = putStr $ Stream.start v ++ Stream.end
+complete v = B.hPut stdout $ Stream.start v `B.append` Stream.end
-- A value that can be displayed either normally, or as JSON.
data DualDisp = DualDisp