module Faker.Internet ( freeEmailDomain , generateEmail , domainSuffix , email , freeEmail , safeEmail , userName ) where import Faker.Utils import qualified Faker.Name as N import Data.Char import Control.Monad (liftM) email :: IO String email = do cName <- N.lastName domain <- domainSuffix let lDomain = loweredLetters cName ++ "." ++ domain generateEmail lDomain freeEmail :: IO String freeEmail = freeEmailDomain >>= generateEmail safeEmail :: IO String safeEmail = domainSuffix >>= generateEmail . ("example." ++) generateEmail :: String -> IO String generateEmail domain = liftM (++ "@" ++ domain) userName userName :: IO String userName = do fName <- N.firstName lName <- N.lastName let loweredFName = loweredLetters fName loweredLName = loweredLetters lName ind <- randomNum (0,2) return $ case ind of 0 -> loweredFName ++ "." ++ loweredLName 1 -> head loweredFName : '.' :loweredLName _ -> head loweredFName : loweredLName loweredLetters :: String -> String loweredLetters str = map toLower $ filter isLetter str freeEmailDomain :: IO String freeEmailDomain = randomInternetWord "free_email" domainSuffix :: IO String domainSuffix = randomInternetWord "domain_suffix" randomInternetWord :: String -> IO String randomInternetWord = randomValue "internet"