summaryrefslogtreecommitdiffhomepage
path: root/src/Localize.hsc
diff options
context:
space:
mode:
authorPavan Rikhi <pavan.rikhi@gmail.com>2018-03-17 22:48:24 -0400
committerjao <jao@gnu.org>2018-11-21 21:41:35 +0000
commit4d1402a1a7d87767267d48a77998e4fb13395b31 (patch)
tree17fd6160dc1fa9c8a0676a94bcf8d19b551c655c /src/Localize.hsc
parent9e2a5c7daddf683d4be7c318aefed3da3ea7a89a (diff)
downloadxmobar-4d1402a1a7d87767267d48a77998e4fb13395b31.tar.gz
xmobar-4d1402a1a7d87767267d48a77998e4fb13395b31.tar.bz2
Split Modules into Library & Executable Structure
Move the Main module to a new `app` directory. All other modules have been nested under the `Xmobar` name. Lots of module headers & imports were updated.
Diffstat (limited to 'src/Localize.hsc')
-rw-r--r--src/Localize.hsc89
1 files changed, 0 insertions, 89 deletions
diff --git a/src/Localize.hsc b/src/Localize.hsc
deleted file mode 100644
index 34d0fd9..0000000
--- a/src/Localize.hsc
+++ /dev/null
@@ -1,89 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
------------------------------------------------------------------------------
--- |
--- Module : Localize
--- Copyright : (C) 2011 Martin Perner
--- License : BSD-style (see LICENSE)
---
--- Maintainer : Martin Perner <martin@perner.cc>
--- Stability : unstable
--- Portability : unportable
---
--- This module provides an interface to locale information e.g. for DateL
---
------------------------------------------------------------------------------
-
-module Localize
- ( setupTimeLocale,
- getTimeLocale
- ) where
-
-import Foreign.C
-#if ! MIN_VERSION_time(1,5,0)
-import qualified System.Locale as L
-#else
-import qualified Data.Time.Format as L
-#endif
-
-#ifdef UTF8
-import Codec.Binary.UTF8.String
-#endif
-
--- get localized strings
-type NlItem = CInt
-
-#include <langinfo.h>
-foreign import ccall unsafe "langinfo.h nl_langinfo"
- nl_langinfo :: NlItem -> IO CString
-
-#{enum NlItem,
- , AM_STR , PM_STR \
- , D_T_FMT , D_FMT , T_FMT , T_FMT_AMPM \
- , ABDAY_1, ABDAY_7 \
- , DAY_1, DAY_7 \
- , ABMON_1, ABMON_12 \
- , MON_1, MON_12\
- }
-
-getLangInfo :: NlItem -> IO String
-getLangInfo item = do
- itemStr <- nl_langinfo item
-#ifdef UTF8
- str <- peekCString itemStr
- return $ if isUTF8Encoded str then decodeString str else str
-#else
- peekCString itemStr
-#endif
-
-#include <locale.h>
-foreign import ccall unsafe "locale.h setlocale"
- setlocale :: CInt -> CString -> IO CString
-
-setupTimeLocale :: String -> IO ()
-setupTimeLocale l = withCString l (setlocale #const LC_TIME) >> return ()
-
-getTimeLocale :: IO L.TimeLocale
-getTimeLocale = do
- -- assumes that the defined values are increasing by exactly one.
- -- as they are defined consecutive in an enum this is reasonable
- days <- mapM getLangInfo [day1 .. day7]
- abdays <- mapM getLangInfo [abday1 .. abday7]
-
- mons <- mapM getLangInfo [mon1 .. mon12]
- abmons <- mapM getLangInfo [abmon1 .. abmon12]
-
- amstr <- getLangInfo amStr
- pmstr <- getLangInfo pmStr
- dtfmt <- getLangInfo dTFmt
- dfmt <- getLangInfo dFmt
- tfmt <- getLangInfo tFmt
- tfmta <- getLangInfo tFmtAmpm
-
- let t = L.defaultTimeLocale {L.wDays = zip days abdays
- ,L.months = zip mons abmons
- ,L.amPm = (amstr, pmstr)
- ,L.dateTimeFmt = dtfmt
- ,L.dateFmt = dfmt
- ,L.timeFmt = tfmt
- ,L.time12Fmt = tfmta}
- return t