From 4436774cf4262a7bea2a5bff2ca20611effe0b0a Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Mon, 31 Aug 2020 20:53:00 +0200 Subject: feat(EmojiTest): add parser which also consumes end of file --- src/Text/Emoji/DataFiles/EmojiTest.hs | 11 ++++++++--- 1 file 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 -- cgit 1.4.1