diff --git a/src/MyLib.hs b/src/MyLib.hs index 569b59b..a868351 100644 --- a/src/MyLib.hs +++ b/src/MyLib.hs @@ -72,12 +72,11 @@ fullwidthCJKsymCJK :: Rule fullwidthCJKsymCJK = do lcjk <- cjkChar _ <- many (char ' ') - sym <- fmap T.unpack (chunk ".") <|> some (oneOf (":" :: [Char])) + sym <- try (some (char ':')) <|> count 1 (char '.') _ <- many (char ' ') rcjk <- cjkChar - - let transformedsym = T.pack $ map convertToFullwidth sym - return $ T.pack [lcjk] <> transformedsym <> T.pack [rcjk] + let transformedsym = map convertToFullwidth sym + return $ T.pack $ [lcjk] ++ transformedsym ++ [rcjk] fullwidthCJKsym :: Rule fullwidthCJKsym = do @@ -101,18 +100,31 @@ fixCJKcolAN = do an <- alphaNumChar return $ T.pack $ [cjk] ++ ":" ++ [an] +-- quotes +-- seems confusing ... +quotesym :: [Char] +quotesym = "\x05f4\"\'`" + cjkquote :: Rule cjkquote = do cjk <- cjkChar - quote <- oneOf ("\x05f4\"\'" :: [Char]) + quote <- oneOf quotesym return $ T.pack $ [cjk] ++ " " ++ [quote] quoteCJK :: Rule quoteCJK = do - quote <- oneOf ("\x05f4\"\'" :: [Char]) + quote <- oneOf quotesym cjk <- cjkChar return $ T.pack $ [quote] ++ " " ++ [cjk] +fixQuote :: Rule +fixQuote = do + openQuotes <- T.pack <$> some (oneOf quotesym) + _ <- many spaceChar + content <- T.pack <$> someTill anySingle (lookAhead $ some (oneOf quotesym)) + closeQuotes <- T.pack <$> some (oneOf quotesym) + return $ openQuotes <> T.strip content <> closeQuotes + -- the rule set myRules :: RuleSet myRules = @@ -121,5 +133,6 @@ myRules = dotsCJK, fixCJKcolAN, cjkquote, - quoteCJK + quoteCJK, + fixQuote ] \ No newline at end of file diff --git a/test/Main.hs b/test/Main.hs index e4b9132..9db4b1e 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -15,6 +15,7 @@ main = hspec $ do applyRules myRules "你…好" `shouldBe` "你… 好" applyRules myRules "你...好" `shouldBe` "你... 好" applyRules myRules "你:0" `shouldBe` "你:0" - -- applyRules myRules "我说:\" 他说:\'你好\'\"" `shouldBe` "我说:“他说:‘你好’”" + applyRules myRules "我说:\" 他说:\'你好\'\"" `shouldBe` "我说:\"他说:\'你好\'\"" it "adds spaces" $ do - applyRules myRules "\'你好\'" `shouldBe` "\' 你好 \'" \ No newline at end of file + applyRules myRules "\'你好\'" `shouldBe` "\'你好\'" + applyRules myRules "你\'hello\'" `shouldBe` "你 \'hello\'" \ No newline at end of file