From 15cf346c612462dacefe73441b17b5a2524ce617 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 27 Nov 2024 22:41:03 +0100 Subject: Parse package names with a period --- lib/SlackBuilder/Info.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/SlackBuilder/Info.hs b/lib/SlackBuilder/Info.hs index 59342cc..bf8f1f7 100644 --- a/lib/SlackBuilder/Info.hs +++ b/lib/SlackBuilder/Info.hs @@ -28,7 +28,7 @@ import Data.Void (Void) import Data.Word (Word8) import Numeric (readHex, showHex) import Text.Megaparsec (Parsec, count, eof, parse, takeWhile1P) -import Text.Megaparsec.Byte (space, string, hexDigitChar) +import Text.Megaparsec.Byte (hspace1, space, string, hexDigitChar) import Text.URI ( URI(..) , parserBs @@ -43,6 +43,7 @@ import SlackBuilder.Trans import System.FilePath ((), (<.>)) import Control.Monad.IO.Class (MonadIO(..)) import Conduit (MonadThrow(throwM)) +import Control.Monad (void) type GenParser = Parsec Void ByteString @@ -66,7 +67,7 @@ variableEntry variable = string (Char8.append variable "=\"") <* string "\"\n" variableSeparator :: GenParser () -variableSeparator = string " \\" *> space +variableSeparator = void $ some $ hspace1 <|> void (string "\\\n") packageDownloads :: ByteString -> GenParser [URI] packageDownloads variableName = string (variableName <> "=\"") @@ -99,6 +100,7 @@ packageName = takeWhile1P Nothing isNameToken isNameToken x = Word8.isAlphaNum x || x == Word8._hyphen || x == Word8._underscore + || x == Word8._period parseInfoFile :: GenParser PackageInfo parseInfoFile = PackageInfo . Char8.unpack -- cgit v1.2.3