-- Copyright © 2010 Greg Weber and Bart Massey
-- [This program is licensed under the "3-clause ('new') BSD License"]
-- Please see the file COPYING in this distribution for license information.

-- | Read a spelling dictionary.
module Text.SpellingSuggest.Dictionary (
  defaultDictionary, readDictionary
  ) where

import Data.Maybe
import System.IO

-- | File path for default dictionary.
defaultDictionary :: String
defaultDictionary = "/usr/share/dict/words"

-- | Read the words out of the dictionary at the given
-- path. XXX Will leak a file handle until/unless it is
-- finalized, since there's no non-trivial way to arrange
-- for the dictionary file to be closed explicitly.
readDictionary :: Maybe String -> IO [String]
readDictionary dictPath = do
  wf <- flip openFile ReadMode $ fromMaybe defaultDictionary dictPath
  hSetEncoding wf utf8
  wc <- hGetContents wf
  return $ lines wc