feat: Dump somewhat readable

This commit is contained in:
vegowotenks 2025-08-21 20:19:15 +02:00
parent 55805ef15a
commit 0d7c9651b0
2 changed files with 37 additions and 5 deletions

View file

@ -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}