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
|
||||
|
||||
import qualified Data.Text as Text
|
||||
import qualified Data.Text.IO as TextIO
|
||||
import qualified Language.Json as Json
|
||||
-- meta
|
||||
import GHC.Generics (Generic, Generically(..))
|
||||
|
||||
-- containers
|
||||
import Data.Text (Text)
|
||||
|
||||
-- classes
|
||||
import Control.Monad ((<$!>))
|
||||
import Pretty.Serialize (serialize, PrettySerialize)
|
||||
|
||||
-- json
|
||||
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 = 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}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue