module Text.Namefilter ( namefilter ) where import Data.Char import Data.List import Text.RegexPR trim_space = gsubRegexPR "^ +| +$" "" one_space = gsubRegexPR " +" " " normal_letters = filter (\c -> or [ isAlphaNum c , c=='-', c=='_', c==' ', c=='&']) html_amp = gsubRegexPR "&" "&" no_html = gsubRegexPR re "" where re = concat $ intersperse "|" [ "&[a-z]+;" , "&#[0-9]+;" ] namefilter :: String -> String namefilter = trim_space . one_space . normal_letters . no_html . html_amp