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