module Text.InterpolatedString.QM.Internal.Parsers.Types
  ( Parser
  , StringPart (..)
  , LineBreaks (..)
  ) where


type Parser = String -> String -> [StringPart]

data LineBreaks
  = IgnoreLineBreaks
  | KeepLineBreaks
  | ReplaceLineBreaksWithSpaces
  deriving (Int -> LineBreaks -> ShowS
[LineBreaks] -> ShowS
LineBreaks -> String
(Int -> LineBreaks -> ShowS)
-> (LineBreaks -> String)
-> ([LineBreaks] -> ShowS)
-> Show LineBreaks
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LineBreaks] -> ShowS
$cshowList :: [LineBreaks] -> ShowS
show :: LineBreaks -> String
$cshow :: LineBreaks -> String
showsPrec :: Int -> LineBreaks -> ShowS
$cshowsPrec :: Int -> LineBreaks -> ShowS
Show, LineBreaks -> LineBreaks -> Bool
(LineBreaks -> LineBreaks -> Bool)
-> (LineBreaks -> LineBreaks -> Bool) -> Eq LineBreaks
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LineBreaks -> LineBreaks -> Bool
$c/= :: LineBreaks -> LineBreaks -> Bool
== :: LineBreaks -> LineBreaks -> Bool
$c== :: LineBreaks -> LineBreaks -> Bool
Eq)

data StringPart = Literal String | AntiQuote String deriving Int -> StringPart -> ShowS
[StringPart] -> ShowS
StringPart -> String
(Int -> StringPart -> ShowS)
-> (StringPart -> String)
-> ([StringPart] -> ShowS)
-> Show StringPart
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StringPart] -> ShowS
$cshowList :: [StringPart] -> ShowS
show :: StringPart -> String
$cshow :: StringPart -> String
showsPrec :: Int -> StringPart -> ShowS
$cshowsPrec :: Int -> StringPart -> ShowS
Show