This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
module Gyehoek.Sexp
|
module Gyehoek.Sexp
|
||||||
( let_
|
( let_
|
||||||
|
, sexp
|
||||||
, nonempty
|
, nonempty
|
||||||
, nonEmptyGrammar
|
, nonEmptyGrammar
|
||||||
, encode
|
, encode
|
||||||
@@ -11,7 +12,7 @@ module Gyehoek.Sexp
|
|||||||
where
|
where
|
||||||
|
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import Language.SexpGrammar as Sexp hiding (List, encode, decode)
|
import Language.SexpGrammar as Sexp hiding (List, encode, decode, iso)
|
||||||
import Language.SexpGrammar qualified as Sexp
|
import Language.SexpGrammar qualified as Sexp
|
||||||
import Language.SexpGrammar.Generic
|
import Language.SexpGrammar.Generic
|
||||||
import Data.InvertibleGrammar.Base qualified as IGB
|
import Data.InvertibleGrammar.Base qualified as IGB
|
||||||
@@ -20,11 +21,17 @@ import Data.InvertibleGrammar.Base ((:-)((:-)))
|
|||||||
import Data.List.NonEmpty (NonEmpty ((:|)))
|
import Data.List.NonEmpty (NonEmpty ((:|)))
|
||||||
import Data.List (List)
|
import Data.List (List)
|
||||||
import Data.Text.Encoding
|
import Data.Text.Encoding
|
||||||
|
import Data.Either (either)
|
||||||
import GHC.Generics (Generic)
|
import GHC.Generics (Generic)
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
|
|
||||||
|
|
||||||
encode :: SexpIso a => a -> Either _ Text
|
sexp :: SexpIso a => Iso' a Text
|
||||||
|
sexp = iso
|
||||||
|
(either error id . encode)
|
||||||
|
(either error id . decode)
|
||||||
|
|
||||||
|
encode :: SexpIso a => a -> Either String Text
|
||||||
encode = (_Right %~ decodeUtf8 . view strict) . Sexp.encode
|
encode = (_Right %~ decodeUtf8 . view strict) . Sexp.encode
|
||||||
|
|
||||||
decode :: SexpIso a => Text -> Either String a
|
decode :: SexpIso a => Text -> Either String a
|
||||||
|
|||||||
Reference in New Issue
Block a user