summaryrefslogtreecommitdiff
path: root/unicode.hs
diff options
context:
space:
mode:
Diffstat (limited to 'unicode.hs')
-rw-r--r--unicode.hs28
1 files changed, 24 insertions, 4 deletions
diff --git a/unicode.hs b/unicode.hs
index cd58fec..4aa23b3 100644
--- a/unicode.hs
+++ b/unicode.hs
@@ -8,14 +8,23 @@ import qualified Data.Text as T
import qualified Data.Text.IO as IO
import Foreign.C.String
import Numeric
+import System.Directory
import System.Environment.Blank
+import System.IO
import System.IO.Unsafe
-unicodeDataPath = (getEnv "XDG_DATA_HOME") >>= \s -> return (
- (case s of
+xdgDataHome :: IO [Char]
+xdgDataHome = (getEnv "XDG_DATA_HOME") >>= \s-> return
+ ((case s of
Nothing -> "~/.local/share"
Just x -> if x == "" then "~/.local/share" else x)
- ++ "/pickme/UnicodeData.txt")
+ ++ "/pickme")
+
+dataFile :: [Char] -> IO [Char]
+dataFile name = xdgDataHome >>= (return . flip (++) ("/" ++ name))
+
+unicodeDataPath :: IO [Char]
+unicodeDataPath = dataFile "UnicodeData.txt"
scsvField :: Int -> T.Text -> T.Text
scsvField n t = (T.splitOn (T.pack ";") t)!!n
@@ -30,8 +39,19 @@ searchCharacterByName :: CString -> IO CString
searchCharacterByName s = peekCString s >>= \z ->
characterNames >>= \cns ->
unicodeCharacters >>= \ucs ->
- newCString $ map
+ newCString $ map
(\x -> toEnum . fst . (!!0) . readHex $ T.unpack (ucs!!(fromJust $ elemIndex x cns)))
(filter (\s' -> T.isInfixOf ((T.toUpper . T.pack) z) s') cns)
foreign export ccall searchCharacterByName :: CString -> IO CString
+
+favoritesPath :: IO [Char]
+favoritesPath = dataFile "favorites"
+
+favoriteEmojis :: IO CString
+favoriteEmojis = favoritesPath >>= doesFileExist >>= \ bool -> case bool of
+ True -> favoritesPath >>= flip openFile ReadMode >>= hGetLine >>= newCString
+ False -> newCString ""
+
+
+foreign export ccall favoriteEmojis :: IO CString