{- copyright (c) sreservoir.
   license bsd three-clause. -}

module Text.Regex.Less.RECtOpts (reCtOpts,RECtOpts(..)) where

import qualified Text.Regex.PCRE as R

-- compile options.
data RECtOpts = CtAnchored | CtAutoCallout | CtBlank | CtCaseless
              | CtDollarEndOnly | CtDotAll | CtExtended | CtExtra
              | CtFirstLine | CtMultiLine | CtNoAutoCapture | CtNoUtf8Check
              | CtUtf8 | CtUngreedy
  deriving (Eq,Show)

-- translates lists of compile option constructors.
reCtOpts :: [RECtOpts] -> R.CompOption
reCtOpts = sum . map reCtOpt1

-- translates a compile option constructor.
reCtOpt1 :: RECtOpts -> R.CompOption
reCtOpt1 CtAnchored       = R.compAnchored
reCtOpt1 CtAutoCallout    = R.compAutoCallout
reCtOpt1 CtBlank          = R.compBlank
reCtOpt1 CtCaseless       = R.compCaseless
reCtOpt1 CtDollarEndOnly  = R.compDollarEndOnly
reCtOpt1 CtDotAll         = R.compDotAll
reCtOpt1 CtExtended       = R.compExtended
reCtOpt1 CtExtra          = R.compExtra
reCtOpt1 CtFirstLine      = R.compFirstLine
reCtOpt1 CtMultiLine      = R.compMultiline
reCtOpt1 CtNoAutoCapture  = R.compNoAutoCapture
reCtOpt1 CtNoUtf8Check    = R.compNoUTF8Check
reCtOpt1 CtUtf8           = R.compUTF8
reCtOpt1 CtUngreedy       = R.compUngreedy