tools/confuse.hs
changeset 10075 dbaf90a0fbe0
parent 10073 865a4089278d
equal deleted inserted replaced
10074:66cab76eb56f 10075:dbaf90a0fbe0
    32 toPair s = (UTF8.fromString $ takeWhile isHexDigit s, map UTF8.fromString . words . takeWhile ((/=) ';') . tail $ dropWhile ((/=) '\t') s)
    32 toPair s = (UTF8.fromString $ takeWhile isHexDigit s, map UTF8.fromString . words . takeWhile ((/=) ';') . tail $ dropWhile ((/=) '\t') s)
    33 
    33 
    34 
    34 
    35 main = do
    35 main = do
    36     ll <- liftM (filter (isHexDigit . head) . filter (not . null) . lines) $ readFile "confusables.txt"
    36     ll <- liftM (filter (isHexDigit . head) . filter (not . null) . lines) $ readFile "confusables.txt"
    37     B.writeFile "rules.txt" . B.intercalate "\n" . map convRules . Map.toList . Map.fromList . filter (\(_, b) -> length b < 6). map toPair $ ll
    37     B.writeFile "rules.txt" . B.intercalate "\n" . map convRules . Map.toList . Map.fromList . filter notTooLong . filter fits16bit . map toPair $ ll
       
    38     where
       
    39         notTooLong = (>) 6 . length . snd
       
    40         fits16bit (a, b) = let f = (>) 5 . B.length in all f $ a:b
       
    41