Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import System.IO
- import System.Environment
- import System.Hclip
- data Hash = Hash {
- key :: String,
- val :: String
- }deriving Show
- main :: IO()
- main = do
- args <- getArgs
- let cmd = args !! 0
- let param = args !! 1
- evalInput cmd param
- evalInput cmd param
- | cmd == "cp" = writeToClip param
- | cmd == "sv" = writeToF param
- | cmd == "ls" = listFromfile
- writeToF str = do
- k <- getClipboard
- let input = (str ++ " " ++ k)
- file <- openFile "clip.txt" AppendMode
- hClose file
- readFromF = do
- file <- openFile "clip.txt" ReadMode
- contents <- hGetContents file
- let singlelines = (lines contents)
- let li = (hashlist singlelines)
- return li
- writeToClip str = do
- li <- readFromF
- let result = findByKey li str
- setClipboard result
- listFromfile = do
- li <- readFromF
- putStrLn $ prettyprint li
- prettyprint :: [Hash] -> String
- prettyprint [] = ""
- prettyprint (x:xs) = (key x) ++ ":" ++ (val x) ++ "\n" ++ prettyprint xs
- hashlist :: [String] -> [Hash]
- hashlist [] = []
- hashlist (x:xs) = h x : hashlist xs
- where h xs = Hash (head $ words xs) (drop (1 + (length $ head $ words xs)) xs)
- findByKey :: [Hash] -> String -> String
- findByKey [] str = []
- findByKey (x:xs) str
- | (key x) == str = (val x)
- | otherwise = findByKey xs str
Advertisement