module Data.String.Interpolate.Types
  ( InterpSegment(..)
  , Line, Lines
  )
where

data InterpSegment
  = Expression String
  | Verbatim String
  | Spaces Int
  | Tabs Int
  deriving (InterpSegment -> InterpSegment -> Bool
(InterpSegment -> InterpSegment -> Bool)
-> (InterpSegment -> InterpSegment -> Bool) -> Eq InterpSegment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InterpSegment -> InterpSegment -> Bool
$c/= :: InterpSegment -> InterpSegment -> Bool
== :: InterpSegment -> InterpSegment -> Bool
$c== :: InterpSegment -> InterpSegment -> Bool
Eq, Int -> InterpSegment -> ShowS
[InterpSegment] -> ShowS
InterpSegment -> String
(Int -> InterpSegment -> ShowS)
-> (InterpSegment -> String)
-> ([InterpSegment] -> ShowS)
-> Show InterpSegment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InterpSegment] -> ShowS
$cshowList :: [InterpSegment] -> ShowS
show :: InterpSegment -> String
$cshow :: InterpSegment -> String
showsPrec :: Int -> InterpSegment -> ShowS
$cshowsPrec :: Int -> InterpSegment -> ShowS
Show)

type Line = [InterpSegment]
type Lines = [Line]