module Faker.Name
(
  firstName
, lastName
, prefix
, suffix
, name
, title
)
where

import Faker.Utils

name :: IO String
name = do
    ind <- randomNum (0,6)
    pref <- prefix
    suff <- suffix
    fName <- firstName
    lName <- lastName
    return $ case ind of
               0 -> unwords [pref, fName, lName]
               1 -> unwords [fName, lName, suff]
               _ -> fName ++ " " ++ lName

firstName :: IO String
firstName = randomName "first_name"

lastName :: IO String
lastName = randomName "last_name"

prefix :: IO String
prefix = randomName "prefix"

suffix :: IO String
suffix = randomName "suffix"

title :: IO String
title = do
    descriptor <- randomTitle "descriptor"
    level      <- randomTitle "level"
    job        <- randomTitle "job"
    return $ unwords [descriptor, level, job]

randomName :: String -> IO String
randomName = randomValue "name"

randomTitle :: String -> IO String
randomTitle = randomValue "title"