about summary refs log tree commit diff
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2020-08-31 20:53:00 +0200
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2020-08-31 20:53:34 +0200
commit4436774cf4262a7bea2a5bff2ca20611effe0b0a (patch)
tree270a3d6f112a98347454f98620d9417d17228794
parent5732212bc3d81f77f298b302cb1ed19d540ada08 (diff)
feat(EmojiTest): add parser which also consumes end of file
-rw-r--r--src/Text/Emoji/DataFiles/EmojiTest.hs11
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