diff options
author | sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> | 2020-08-31 20:53:00 +0200 |
---|---|---|
committer | sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> | 2020-08-31 20:53:34 +0200 |
commit | 4436774cf4262a7bea2a5bff2ca20611effe0b0a (patch) | |
tree | 270a3d6f112a98347454f98620d9417d17228794 | |
parent | 5732212bc3d81f77f298b302cb1ed19d540ada08 (diff) |
feat(EmojiTest): add parser which also consumes end of file
-rw-r--r-- | src/Text/Emoji/DataFiles/EmojiTest.hs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Text/Emoji/DataFiles/EmojiTest.hs b/src/Text/Emoji/DataFiles/EmojiTest.hs index ca54d6c..9dd2428 100644 --- a/src/Text/Emoji/DataFiles/EmojiTest.hs +++ b/src/Text/Emoji/DataFiles/EmojiTest.hs @@ -22,6 +22,7 @@ module Text.Emoji.DataFiles.EmojiTest -- * Attoparsec parsers , emojiVersionColumn , emojiTestFile + , manyEmojiTestEntries ) where import Prelude hiding (takeWhile) @@ -31,7 +32,7 @@ import Text.Emoji.Types import Control.Applicative ((<|>)) import Data.Attoparsec.Text (Parser (), takeWhile1, takeWhile, string, choice , notInClass, skipWhile, skipMany, isHorizontalSpace - , decimal, hexadecimal, char, many1, endOfLine) + , decimal, hexadecimal, char, many1, endOfLine, endOfInput) import Data.Text (Text) import qualified Data.Text as T import Data.Word (Word32) @@ -136,7 +137,11 @@ emojiTestCommentLine = do then fail "group, not comment" else pure $ Comment text --- | Parses an entire @emoji-test.txt@ file or a subset of it. +-- | Parses an entire @emoji-test.txt@ file and consumes the end of input. emojiTestFile :: Parser EmojiTest -emojiTestFile = many1 $ +emojiTestFile = manyEmojiTestEntries <* endOfInput + +-- | Parses one or more 'EmojiTestEntries'. +manyEmojiTestEntries :: Parser EmojiTest +manyEmojiTestEntries = many1 $ emojiTestGroup EmojiTestGroup <|> emojiTestEntryLine <|> emojiTestCommentLine |