summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders/Utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haskell/src/SpaceTraders/Utils.hs')
-rw-r--r--haskell/src/SpaceTraders/Utils.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/haskell/src/SpaceTraders/Utils.hs b/haskell/src/SpaceTraders/Utils.hs
new file mode 100644
index 0000000..12bfd6a
--- /dev/null
+++ b/haskell/src/SpaceTraders/Utils.hs
@@ -0,0 +1,22 @@
+module SpaceTraders.Utils
+ ( decodeText
+ , fromJSONValue
+ , int2ByteString
+ ) where
+
+import Data.Aeson
+import Data.Aeson.Types
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Builder as B
+import qualified Data.ByteString.Internal as B
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+
+decodeText :: FromJSON a => T.Text -> Maybe a
+decodeText = decode . B.toLazyByteString . T.encodeUtf8Builder
+
+fromJSONValue :: FromJSON a => Value -> Either String a
+fromJSONValue = parseEither parseJSON
+
+int2ByteString :: Int -> B.ByteString
+int2ByteString = B.pack . map B.c2w . show