packages feed

texbuilder-0.1.0.1: TexBuilder/FileFilters.hs

module TexBuilder.FileFilters
  ( Exts(..)
  , showExts
  , readExts
  , extFilter )
where

import qualified Data.List as L
import Control.Monad.State

import System.FilePath

data Exts = Exts [String]

showExts :: Exts -> String
showExts (Exts exts) = 
  L.intercalate "," exts

readExts :: String -> Maybe Exts
readExts [] = Nothing
readExts s = Just $ Exts parts
  where
    parts = evalState splitter (s,[])
    
    splitter = do
      (s,r) <- get
      case L.break (==',') s of
        (a,_:b) -> put (b,a:r) *> splitter
        (a,[]) -> pure (a:r)  

extFilter :: Exts -> FilePath -> Bool
extFilter (Exts exts) path =
  takeExtension path `elem` map ('.':) exts