lambdatex-0.2.0.0: src/Text/LaTeX/LambdaTeX/Selection.hs
module Text.LaTeX.LambdaTeX.Selection where
import Control.Monad (when)
import qualified Data.Text as T
import Text.LaTeX.LambdaTeX.Selection.Internal
import Text.LaTeX.LambdaTeX.Selection.Types
import Text.LaTeX.LambdaTeX.Types
-- * Making selections
-- | Construct a selection from a space-separated list of strings representing selectors
--
-- > constructSelection = map constructSelector . words
constructSelection :: String -> Selection
constructSelection = map constructSelector . words
-- | Construct a selector from a string
--
-- >>> constructSelector "all"
-- > All
--
-- >>> constructSelector "mySection.mySubsection"
-- > Match ["mySection", "mySubsection"]
--
-- >>> constructSelector "+mySection.mySubsection"
-- > Match ["mySection", "mySubsection"]
--
-- >>> constructSelector "-mySection.mySubsection"
-- > Ignore ["mySection", "mySubsection"]
constructSelector :: String -> Selector
constructSelector "all" = All
constructSelector ('+':s) = Match $ map T.pack $ split s
constructSelector ('-':s) = Ignore $ map T.pack $ split s
constructSelector s = Match $ map T.pack $ split s
-- * Using selections
-- | Declare a sub-part of the document with a name.
-- This allows you to use the subset-selection feature later.
note :: Monad m => Text -> ΛTeXT m () -> ΛTeXT m ()
note partname func =
inPart partname $ do
s <- isSelected
when s func