module Exon.SkipWs where
import Language.Haskell.TH.Quote (QuasiQuoter)
import Exon.Class.Exon (ExonString (exonWhitespace))
import Exon.Data.Result (Result (Empty))
import Exon.Quote (exonWith)
newtype SkipWs a =
SkipWs a
deriving stock (SkipWs a -> SkipWs a -> Bool
(SkipWs a -> SkipWs a -> Bool)
-> (SkipWs a -> SkipWs a -> Bool) -> Eq (SkipWs a)
forall a. Eq a => SkipWs a -> SkipWs a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => SkipWs a -> SkipWs a -> Bool
== :: SkipWs a -> SkipWs a -> Bool
$c/= :: forall a. Eq a => SkipWs a -> SkipWs a -> Bool
/= :: SkipWs a -> SkipWs a -> Bool
Eq, Int -> SkipWs a -> ShowS
[SkipWs a] -> ShowS
SkipWs a -> String
(Int -> SkipWs a -> ShowS)
-> (SkipWs a -> String) -> ([SkipWs a] -> ShowS) -> Show (SkipWs a)
forall a. Show a => Int -> SkipWs a -> ShowS
forall a. Show a => [SkipWs a] -> ShowS
forall a. Show a => SkipWs a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> SkipWs a -> ShowS
showsPrec :: Int -> SkipWs a -> ShowS
$cshow :: forall a. Show a => SkipWs a -> String
show :: SkipWs a -> String
$cshowList :: forall a. Show a => [SkipWs a] -> ShowS
showList :: [SkipWs a] -> ShowS
Show, (forall x. SkipWs a -> Rep (SkipWs a) x)
-> (forall x. Rep (SkipWs a) x -> SkipWs a) -> Generic (SkipWs a)
forall x. Rep (SkipWs a) x -> SkipWs a
forall x. SkipWs a -> Rep (SkipWs a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (SkipWs a) x -> SkipWs a
forall a x. SkipWs a -> Rep (SkipWs a) x
$cfrom :: forall a x. SkipWs a -> Rep (SkipWs a) x
from :: forall x. SkipWs a -> Rep (SkipWs a) x
$cto :: forall a x. Rep (SkipWs a) x -> SkipWs a
to :: forall x. Rep (SkipWs a) x -> SkipWs a
Generic)
deriving newtype (String -> SkipWs a
(String -> SkipWs a) -> IsString (SkipWs a)
forall a. IsString a => String -> SkipWs a
forall a. (String -> a) -> IsString a
$cfromString :: forall a. IsString a => String -> SkipWs a
fromString :: String -> SkipWs a
IsString)
skipWs :: SkipWs a -> a
skipWs :: forall a. SkipWs a -> a
skipWs (SkipWs a
a) =
a
a
instance (
IsString builder
) => ExonString (SkipWs result) builder where
exonWhitespace :: String -> Result builder
exonWhitespace String
_ =
Result builder
forall a. Result a
Empty
{-# inline exonWhitespace #-}
intron :: QuasiQuoter
intron :: QuasiQuoter
intron =
Maybe (Q Exp, Q Exp) -> Bool -> Bool -> QuasiQuoter
exonWith ((Q Exp, Q Exp) -> Maybe (Q Exp, Q Exp)
forall a. a -> Maybe a
Just ([e|SkipWs|], [e|skipWs|])) Bool
True Bool
False