toxcore-0.2.11: tools/toxsave-convert.hs
module Main (main) where
import Control.Applicative ((<$>), (<|>))
import qualified Data.Binary as Binary
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Lazy.Char8 as LBS8
import Data.Maybe (fromMaybe)
import Network.Tox.SaveData (SaveData)
import Text.Groom (groom)
import Text.Read (readMaybe)
parse :: LBS.ByteString -> LBS.ByteString
parse str = fromMaybe LBS.empty $
(Binary.encode <$> (readMaybe $ LBS8.unpack str :: Maybe SaveData))
<|>
(Just . LBS8.pack . (++ "\n") . groom $ (Binary.decode str :: SaveData))
main :: IO ()
main = parse <$> LBS.getContents >>= LBS.putStr