Parse package names with a period
All checks were successful
Build / audit (push) Successful in 9s
Build / test (push) Successful in 14m10s

This commit is contained in:
2024-11-27 22:41:03 +01:00
parent 468852410e
commit 15cf346c61
2 changed files with 48 additions and 2 deletions

View File

@ -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