bricks-syntax-0.0.0.4: src/Bricks/Keyword.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Bricks.Keyword
(
-- * Type
Keyword
-- * List of keywords
, keywords
-- * The keywords
, keyword'rec
, keyword'let
, keyword'in
, keyword'inherit
, keyword'inlineComment
-- * Type conversion
, keywordString
, keywordText
) where
-- Bricks internal
import Bricks.Internal.Prelude
import Bricks.Internal.Text (Text)
import qualified Bricks.Internal.Text as Text
newtype Keyword =
Keyword
{ keywordText :: Text
}
{- | All of the keywords. This list is used when parsing and rendering because
an unquoted string cannot have a name that is exactly the same as a keyword. -}
keywords :: [Keyword]
keywords =
[ keyword'rec
, keyword'let
, keyword'in
, keyword'inherit
, keyword'inlineComment
]
keywordString :: Keyword -> String
keywordString = Text.unpack . keywordText
keyword'rec :: Keyword
keyword'rec = Keyword "rec"
keyword'let :: Keyword
keyword'let = Keyword "let"
keyword'in :: Keyword
keyword'in = Keyword "in"
keyword'inherit :: Keyword
keyword'inherit = Keyword "inherit"
keyword'inlineComment :: Keyword
keyword'inlineComment = Keyword "--"