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

View file

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