From c1e3db0aea692686288999327849f910d73c91c7 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Thu, 16 May 2024 16:39:08 +0300 Subject: [PATCH] fix --- lib/Data/Config/Suckless/Parse/Fuzzy.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/Data/Config/Suckless/Parse/Fuzzy.hs b/lib/Data/Config/Suckless/Parse/Fuzzy.hs index d57d975..03078ae 100644 --- a/lib/Data/Config/Suckless/Parse/Fuzzy.hs +++ b/lib/Data/Config/Suckless/Parse/Fuzzy.hs @@ -1,7 +1,5 @@ module Data.Config.Suckless.Parse.Fuzzy - ( parseTop - , parseSyntax - -- , C + ( ParseSExp(..) ) where import Data.Config.Suckless.Syntax @@ -9,18 +7,21 @@ import Data.Text.Fuzzy.SExp qualified as P import Data.Text.Fuzzy.SExp (C0(..),SExpParseError,ForMicroSexp(..)) import Data.Functor -import Data.Text +import Data.Text as Text import Control.Monad.Except import Control.Monad.Identity -import Data.Coerce +class ParseSExp what where + parseTop :: what -> Either SExpParseError [Syntax C] + parseSyntax :: what -> Either SExpParseError (Syntax C) -parseTop :: Text -> Either SExpParseError [Syntax C] -parseTop what = runIdentity (runExceptT (P.parseTop what)) <&> fmap toSyntax - -parseSyntax :: Text -> Either SExpParseError (Syntax C) -parseSyntax txt = runIdentity (runExceptT (P.parseSexp txt)) <&> toSyntax +instance ParseSExp Text where + parseTop what = runIdentity (runExceptT (P.parseTop what)) <&> fmap toSyntax + parseSyntax txt = runIdentity (runExceptT (P.parseSexp txt)) <&> toSyntax +instance ParseSExp String where + parseTop what = runIdentity (runExceptT (P.parseTop (Text.pack what))) <&> fmap toSyntax + parseSyntax txt = runIdentity (runExceptT (P.parseSexp (Text.pack txt))) <&> toSyntax toSyntax :: P.MicroSexp C0 -> Syntax C toSyntax = \case