-- |Description: Internal
module Exon.Data.Segment where

-- |The parts of an interpolation quasiquote.
-- Text is split at each whitespace and interpolation splice marked by @#{@ and @}@.
data Segment a =
  String String
  |
  Whitespace String
  |
  Expression a
  deriving (Segment a -> Segment a -> Bool
(Segment a -> Segment a -> Bool)
-> (Segment a -> Segment a -> Bool) -> Eq (Segment a)
forall a. Eq a => Segment a -> Segment a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Segment a -> Segment a -> Bool
$c/= :: forall a. Eq a => Segment a -> Segment a -> Bool
== :: Segment a -> Segment a -> Bool
$c== :: forall a. Eq a => Segment a -> Segment a -> Bool
Eq, Int -> Segment a -> ShowS
[Segment a] -> ShowS
Segment a -> String
(Int -> Segment a -> ShowS)
-> (Segment a -> String)
-> ([Segment a] -> ShowS)
-> Show (Segment a)
forall a. Show a => Int -> Segment a -> ShowS
forall a. Show a => [Segment a] -> ShowS
forall a. Show a => Segment a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Segment a] -> ShowS
$cshowList :: forall a. Show a => [Segment a] -> ShowS
show :: Segment a -> String
$cshow :: forall a. Show a => Segment a -> String
showsPrec :: Int -> Segment a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Segment a -> ShowS
Show)