From cb99daeb49fd9a75d48e1ffd78a040addec40e78 Mon Sep 17 00:00:00 2001 From: VegOwOtenks Date: Sat, 23 Aug 2025 19:12:08 +0200 Subject: [PATCH] feat: refactoring around unnamed fields --- src/Pretty/Serialize.hs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Pretty/Serialize.hs b/src/Pretty/Serialize.hs index 994fe01..3ef4206 100644 --- a/src/Pretty/Serialize.hs +++ b/src/Pretty/Serialize.hs @@ -15,7 +15,7 @@ {-# LANGUAGE DerivingVia #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE BangPatterns #-} -module Pretty.Serialize (Serializer, PrettySerialize(..), ShowPrettySerialize(..), run, emit, KeyValueSerialize(..), customField) where +module Pretty.Serialize (Serializer, PrettySerialize(..), ShowPrettySerialize(..), run, emit, KeyValueSerialize(..), recordField) where import Data.Text.Lazy (LazyText) import GHC.Generics (U1, K1 (K1), Generically (Generically), Generic (Rep), from, M1 (M1), Meta(MetaSel, MetaCons, MetaData), (:+:) (L1, R1), (:*:) ((:*:))) @@ -98,7 +98,7 @@ lineBreak = do emit "\n" emit $ StrictText.replicate (fromIntegral spaces) " " -recordField :: (Word -> Serializer ()) -> Serializer b -> Serializer b +recordField :: Serializer () -> Serializer b -> Serializer b recordField labelField dumpField = do maybeFieldIndex <- currentFieldIndex <$!> getSerializerState @@ -111,7 +111,7 @@ recordField labelField dumpField = do lineBreak -- what is the field called? - labelField n + labelField emit ": " result <- dumpField @@ -122,13 +122,10 @@ recordField labelField dumpField = do pure result unnamedField :: Serializer a -> Serializer a -unnamedField = recordField serializer +unnamedField = recordField $ pure () namedField :: StrictText -> Serializer a -> Serializer a -namedField name = recordField (const $ emit name) - -customField :: Serializer () -> Serializer a -> Serializer a -customField = recordField . const +namedField name = recordField $ emit name beginFields :: Maybe (Serializer ()) -> Serializer b -> Serializer b beginFields name body = do @@ -265,7 +262,7 @@ instance (ExtractMappings a, Typeable a, PrettySerialize (KeyType a), PrettySeri inDatatypeOf mapping $ do -- set type name beginFields Nothing $ do -- don't set constructor name forM_ (keyValuePairs mapping) $ \ (key, value) -> do -- emit fields - customField (serializer key) (serializer value) + recordField (serializer key) (serializer value) deriving via KeyValueSerialize (Data.IArray.Array index element) instance (Data.IArray.Ix index, Typeable index, Typeable element, PrettySerialize index, PrettySerialize element) => PrettySerialize (Data.IArray.Array index element) deriving via KeyValueSerialize (List a) instance (Typeable a, PrettySerialize a) => PrettySerialize (List a)