packages feed

mulang-3.5.2: src/Language/Mulang/Identifier.hs

module Language.Mulang.Identifier (
  andAlso,
  anyOf,
  anyone,
  except,
  like,
  named,
  Identifier,
  IdentifierPredicate) where

import  Data.List (isInfixOf)

-- | An identifier
-- | Mulang does not assume any special naming convention or format
type Identifier = String
type IdentifierPredicate = Identifier -> Bool

andAlso :: IdentifierPredicate -> IdentifierPredicate -> IdentifierPredicate
andAlso p1 p2 identifier = p1 identifier && p2 identifier

anyOf :: [Identifier] -> IdentifierPredicate
anyOf options identifier = any (== identifier) options

anyone :: IdentifierPredicate
anyone = const True

except :: String -> IdentifierPredicate
except = (/=)

like :: String -> IdentifierPredicate
like = isInfixOf

named :: String -> IdentifierPredicate
named = (==)