1 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
    2 module Databrary.Service.Messages
    3   ( Messages
    4   , messagesFile
    5   , loadMessagesFrom
    6   , loadMessages
    7   , getMessage
    8   ) where
    9 
   10 import Data.Maybe (fromMaybe)
   11 import qualified Data.Text as T
   12 import qualified Data.Text.Encoding as TE
   13 
   14 import Paths_databrary (getDataFileName)
   15 import qualified Databrary.Store.Config as C
   16 import qualified Databrary.JSON as JSON
   17 
   18 newtype Messages = Messages C.Config
   19   deriving (JSON.ToJSON)
   20 
   21 messagesFile :: IO FilePath
   22 messagesFile = getDataFileName "messages.conf"
   23 
   24 loadMessagesFrom :: FilePath -> IO Messages
   25 loadMessagesFrom f = Messages <$> C.load f
   26 
   27 loadMessages :: IO Messages
   28 loadMessages = loadMessagesFrom =<< messagesFile
   29 
   30 getMessage :: C.Path -> Messages -> T.Text
   31 getMessage p (Messages c) = fromMaybe ('[' `T.cons` TE.decodeLatin1 (C.pathKey p) `T.snoc` ']') $ c C.! p