hbro-0.7.0.0: Hbro/Extra/BookmarksQueue.hs
module Hbro.Extra.BookmarksQueue where
-- {{{ Imports
--import Hbro.Types
import Data.List
import qualified Data.Text as T
import qualified Data.Text.IO as T
-- }}}
-- | Add current URI to the end of the queue.
--append :: String -> IO ()
--append bookmarksFile uri = do
-- configHome <- getEnv "XDG_CONFIG_HOME"
-- appendFile (configHome ++ "/hbro/queue") (uri ++ "\n")
-- | Add current URI to the beginning of the queue.
push :: String -> String -> IO ()
push bookmarksFile uri = do
file <- catch (T.readFile bookmarksFile) (\_error -> return T.empty)
if (file == T.empty)
then return ()
else do
let fileLines = T.lines file
let file' = T.unlines . nub $ (T.pack uri):fileLines
T.writeFile bookmarksFile file'
return ()
-- | Return the first URI from the queue, while removing it.
popFront :: String -> IO String
popFront bookmarksFile = do
file <- catch (T.readFile bookmarksFile) (\_error -> return T.empty)
if file == T.empty
then return ""
else do
let fileLines = T.lines file
let file' = T.unlines . tail . nub $ fileLines
T.writeFile (bookmarksFile ++ ".old") file
T.writeFile bookmarksFile file'
return $ T.unpack (head fileLines)
-- | Return the last URI from the queue, while removing it.
popBack :: String -> IO String
popBack bookmarksFile = do
file <- catch (T.readFile bookmarksFile) (\_error -> return T.empty)
if file == T.empty
then return ""
else do
let fileLines = T.lines file
let file' = T.unlines . reverse . tail . reverse. nub $ fileLines
T.writeFile (bookmarksFile ++ ".old") file
T.writeFile bookmarksFile file'
return $ T.unpack (head $ reverse fileLines)
-- | Return a random URI from the queue, while removing it.
-- popRandom :: Browser -> IO String
-- popRandom browser = do
-- configHome <- getEnv "XDG_CONFIG_HOME"
-- file <- catch (T.readFile $ configHome ++ "/hbro/queue") (\e -> return T.empty)
-- if file == T.empty
-- then return ""
-- else do
-- let fileLines = T.lines file
-- let file' = T.unlines . reverse . tail . reverse. nub $ fileLines
--
-- T.writeFile (configHome ++ "/hbro/queue.old") file
-- T.writeFile (configHome ++ "/hbro/queue") file'
-- return $ T.unpack (head $ reverse fileLines)