{-#LANGUAGE NoImplicitPrelude #-}
{-#LANGUAGE FlexibleInstances #-}
{-#LANGUAGE MultiParamTypeClasses #-}
{-#LANGUAGE AutoDeriveTypeable #-}
{-#LANGUAGE DeriveGeneric #-}
{-#LANGUAGE OverloadedStrings #-}
module Web.Sprinkles.MatchedText
where

import Web.Sprinkles.Prelude

import qualified Text.Ginger as Ginger
import Text.Ginger
       (parseGinger, Template, runGingerT, GingerContext, GVal(..), ToGVal(..),
        (~>))
import GHC.Generics
import qualified Data.Text as Text

data MatchedText =
    MatchedText Text |
    MatchedTexts [Text]
    deriving (Show, Read, Eq, Generic)

instance ToGVal m MatchedText where
    toGVal (MatchedText t) = toGVal t
    toGVal (MatchedTexts ts) =
        (toGVal ts) {
            Ginger.asText = Text.intercalate "/" ts
        }

instance IsString MatchedText where
    fromString = MatchedText . fromString