packages feed

preql-0.4: src/Preql/QuasiQuoter/Syntax/Name.hs

{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}
{-# LANGUAGE DeriveLift         #-}
-- | Definitions which need to be private in order to maintain their invariants.

module Preql.QuasiQuoter.Syntax.Name where

import           Data.Data
import           Data.String                (IsString (..))
import           Data.Text                  (Text)
import           GHC.Generics
import           Instances.TH.Lift          ()
import           Language.Haskell.TH.Syntax (Lift (..))

import qualified Data.Text                  as T

newtype Name = Name Text
    deriving (Show, Eq, Ord, Generic, Typeable, Data, Lift)

instance IsString Name where
    fromString = Name . T.pack

-- TODO mkName should enforce valid characters in Name
mkName :: Text -> Name
mkName = Name

getName :: Name -> Text
getName (Name name) = name