mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
Avoid attoparsec dependency for this simple parsing task
This commit is contained in:
parent
e4e120bb8e
commit
feec53c78c
@ -20,9 +20,9 @@ module XMonad.Prompt.Unicode (
|
|||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.ByteString.Char8 as BS
|
import qualified Data.ByteString.Char8 as BS
|
||||||
import Data.Attoparsec.ByteString.Char8 hiding (take)
|
|
||||||
import Data.Char
|
import Data.Char
|
||||||
import Control.Applicative
|
import Data.Maybe
|
||||||
|
import Numeric
|
||||||
import System.Environment
|
import System.Environment
|
||||||
import System.IO
|
import System.IO
|
||||||
import System.IO.Unsafe
|
import System.IO.Unsafe
|
||||||
@ -33,7 +33,7 @@ import Text.Printf
|
|||||||
|
|
||||||
import XMonad
|
import XMonad
|
||||||
import XMonad.Util.Run
|
import XMonad.Util.Run
|
||||||
import XMonad.Prompt hiding (endOfLine)
|
import XMonad.Prompt
|
||||||
|
|
||||||
{- $usage
|
{- $usage
|
||||||
|
|
||||||
@ -61,21 +61,16 @@ entries = unsafePerformIO $ do
|
|||||||
hPutStrLn stderr $ show e
|
hPutStrLn stderr $ show e
|
||||||
hPutStrLn stderr $ "Do you have unicode-data installed?"
|
hPutStrLn stderr $ "Do you have unicode-data installed?"
|
||||||
return []
|
return []
|
||||||
Right dat -> case parseOnly (p <* endOfInput) dat of
|
Right dat -> return $ sortOn (BS.length . snd) $ parseUnicodeData dat
|
||||||
Left e -> do
|
|
||||||
hPutStrLn stderr $ "Failed to parse UnicodeData: " ++ show e
|
|
||||||
return []
|
|
||||||
Right r -> return $ sortOn (BS.length.snd) r
|
|
||||||
{-# NOINLINE entries #-}
|
{-# NOINLINE entries #-}
|
||||||
|
|
||||||
p = many' $ do
|
parseUnicodeData :: BS.ByteString -> [(Char, BS.ByteString)]
|
||||||
c <- chr <$> hexadecimal
|
parseUnicodeData = mapMaybe parseLine . BS.lines
|
||||||
char ';'
|
where
|
||||||
d <- takeTill (== ';')
|
parseLine l = do
|
||||||
char ';'
|
field1 : field2 : _ <- return $ BS.split ';' l
|
||||||
skipWhile (/= '\n')
|
[(c,"")] <- return $ readHex (BS.unpack field1)
|
||||||
endOfLine
|
return (chr c, field2)
|
||||||
return (c,d)
|
|
||||||
|
|
||||||
searchUnicode :: String -> [(Char, String)]
|
searchUnicode :: String -> [(Char, String)]
|
||||||
searchUnicode s = map (second BS.unpack) $ filter go entries
|
searchUnicode s = map (second BS.unpack) $ filter go entries
|
||||||
|
@ -54,8 +54,7 @@ flag testing
|
|||||||
default: False
|
default: False
|
||||||
|
|
||||||
library
|
library
|
||||||
build-depends: attoparsec >= 0.13 && < 0.14,
|
build-depends: base >= 4.5 && < 5,
|
||||||
base >= 4.5 && < 5,
|
|
||||||
bytestring >= 0.10 && < 0.11,
|
bytestring >= 0.10 && < 0.11,
|
||||||
containers >= 0.5 && < 0.6,
|
containers >= 0.5 && < 0.6,
|
||||||
directory,
|
directory,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user