feat: Dump somewhat readable
This commit is contained in:
parent
55805ef15a
commit
0d7c9651b0
2 changed files with 37 additions and 5 deletions
40
app/Main.hs
40
app/Main.hs
|
@ -1,9 +1,41 @@
|
||||||
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
|
{-# LANGUAGE DerivingVia #-}
|
||||||
module Main (main) where
|
module Main (main) where
|
||||||
|
|
||||||
import qualified Data.Text as Text
|
-- meta
|
||||||
import qualified Data.Text.IO as TextIO
|
import GHC.Generics (Generic, Generically(..))
|
||||||
import qualified Language.Json as Json
|
|
||||||
|
-- containers
|
||||||
|
import Data.Text (Text)
|
||||||
|
|
||||||
|
-- classes
|
||||||
|
import Control.Monad ((<$!>))
|
||||||
|
import Pretty.Serialize (serialize, PrettySerialize)
|
||||||
|
|
||||||
|
-- json
|
||||||
import Language.Json.Parser (runParser)
|
import Language.Json.Parser (runParser)
|
||||||
|
|
||||||
|
import qualified Language.Json as Json
|
||||||
|
import qualified Language.Json.Type as Json
|
||||||
|
|
||||||
|
-- io
|
||||||
|
import qualified Data.Text.IO as TextIO
|
||||||
|
import qualified Data.Text.Lazy.IO as LazyTextIO
|
||||||
|
|
||||||
|
data JsonInfo = JsonInfo
|
||||||
|
{ json :: Json.Value
|
||||||
|
, inferredType :: Json.Type
|
||||||
|
}
|
||||||
|
deriving stock (Generic)
|
||||||
|
deriving PrettySerialize via Generically JsonInfo
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = TextIO.interact (Text.pack . show . runParser Json.document)
|
main = do
|
||||||
|
info <- mkJsonInfo <$!> TextIO.getContents
|
||||||
|
LazyTextIO.putStrLn . serialize $ info
|
||||||
|
|
||||||
|
mkJsonInfo :: Text -> Maybe JsonInfo
|
||||||
|
mkJsonInfo input = do
|
||||||
|
(_, value) <- runParser Json.document input
|
||||||
|
pure $ JsonInfo {json=value, inferredType=Json.infer value}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
{-# LANGUAGE DerivingVia #-}
|
{-# LANGUAGE DerivingVia #-}
|
||||||
{-# LANGUAGE DeriveGeneric #-}
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
module Language.Json.Type (infer) where
|
module Language.Json.Type (infer, Type(..)) where
|
||||||
import Data.Map.Strict (Map)
|
import Data.Map.Strict (Map)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import Data.Set (Set)
|
import Data.Set (Set)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue