packages feed

cndict 0.4.2 → 0.4.3

raw patch · 2 files changed

+37/−19 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

cndict.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                cndict-version:             0.4.2+version:             0.4.3 synopsis:            Chinese/Mandarin <-> English dictionary, Chinese lexer. -- description: license:             PublicDomain
src/Data/Chinese/CCDict.hs view
@@ -114,18 +114,21 @@ lookupNonDet key trie = toMaybe $ beGreedy $     step (lookupMatches key trie) $ \entry1 -> do     let len = T.length (entrySimplified entry1)-    entry2 <- toList $ lookupMatches (T.drop len key) trie-    return [entry1, entry2]+    case lookupMatches (T.drop len key) trie of+      Nothing -> return [entry1]+      Just entries -> do+        entry2 <- entries+        return [entry1, entry2]   where-    step Nothing fn = []-    step (Just [x]) fn = return [x]+    step Nothing _ = []+    step (Just [x]) _ = return [x]     step (Just lst) fn = lst >>= fn     beGreedy lst =       let len = sum . map (T.length . entrySimplified)-          longest = maximum (map len lst)-      in filter (\x -> len x == longest) lst-    toList Nothing = []-    toList (Just lst) = lst+          longest = maximum (map len lst')+          mostCompact = minimum (map length lst)+          lst' = filter (\x -> length x == mostCompact) lst+      in filter (\x -> len x == longest) lst'     toMaybe [] = Nothing     toMaybe lst = Just lst --------------------------------------------------@@ -159,6 +162,18 @@ --       where --         unknown = UnknownWord $ T.take n unrecognied +_ppTokenizerTests :: IO ()+_ppTokenizerTests =+  case _tokenizer_tests of+    [] -> putStrLn "No test failures."+    lst -> do+      flip mapM_ lst $ \(orig, expected, actual) -> do+        T.putStr orig+        putStr ": expected: "+        T.putStr (T.unwords expected)+        putStr ", got: "+        T.putStrLn (T.unwords actual)+ _tokenizer_tests :: [(Text, [Text], [Text])] _tokenizer_tests =     [ (input, result, tokens)@@ -176,15 +191,18 @@       	, ("十分钟", ["十","分钟"])       	, ("有电梯", ["有","电梯"])         , ("中午前", ["中午","前"])-        -- , ("得很", ["得","很"]) -- Don't know how to fix this.-        -- , ("家中餐馆", ["家","中餐馆"]) -- tokenizer needs to be more greedy to correctly-                                           -- deal with this input.+        -- , ("得很", ["得","很"])+        -- , ("不想", ["不","想"])+        -- , ("那是", ["那","是"])+        , ("外套", ["外套"])+        , ("家中餐馆", ["家","中餐馆"])       	, ("后生活", ["后","生活"])       	, ("不愿意", ["不","愿意"])       	, ("点出发", ["点","出发"])         , ("老婆婆", ["老","婆婆"])         , ("不会跳舞", ["不会","跳舞"])-        , ("穿上外套", ["穿上","外套"]) ]+        , ("穿上外套", ["穿上","外套"])+        , ("建议", ["建议"]) ]  flat :: [Token] -> [Text] flat tokens = [ entrySimplified entry | KnownWord entry <- tokens ]@@ -192,16 +210,16 @@ type NonDet = Tree [Token]  _ppNonDet :: [NonDet] -> String-_ppNonDet forest = drawForest (map (fmap (unwords . map ppToken)) forest)+_ppNonDet = drawForest . map (fmap (unwords . map ppToken)) . map _compactNonDet   where     ppToken (KnownWord entry) = T.unpack (entrySimplified entry)     ppToken (UnknownWord txt) = T.unpack txt --- compactNonDet :: NonDet -> NonDet--- compactNonDet (Node a [Node b rest]) =---   compactNonDet (Node (a++b) rest)--- compactNonDet (Node a rest) =---   Node a (map compactNonDet rest)+_compactNonDet :: NonDet -> NonDet+_compactNonDet (Node a [Node b rest]) =+  _compactNonDet (Node (a++b) rest)+_compactNonDet (Node a rest) =+  Node a (map _compactNonDet rest)  collapseNonDet :: [NonDet] -> [Token] collapseNonDet [] = []