diff --git a/chandlr.cabal b/chandlr.cabal index 927713e..5446282 100644 --- a/chandlr.cabal +++ b/chandlr.cabal @@ -82,7 +82,7 @@ executable chandlr Common.FrontEnd.Routes Common.AttachmentType Parsing.BodyParser - Parsing.QuoteLinkParser + Common.Parsing.QuoteLinkParser Parsing.EmbedParser Common.Parsing.PostPartType Common.Component.TimeControl diff --git a/src/Common b/src/Common index 3abd4f9..c8b6cfa 160000 --- a/src/Common +++ b/src/Common @@ -1 +1 @@ -Subproject commit 3abd4f9f772e864b5e9e1b44a07909bb7d74423b +Subproject commit c8b6cfa8d17dab26db31f72a0b1b6bcbcd3d03f0 diff --git a/src/Parsing/BodyParser.hs b/src/Parsing/BodyParser.hs index bfc1f2b..23b30b9 100644 --- a/src/Parsing/BodyParser.hs +++ b/src/Parsing/BodyParser.hs @@ -33,7 +33,7 @@ import qualified Common.Network.PostType as Post import Common.Component.Thread.Model (PostWithBody) import Common.Parsing.PostPartType -import Parsing.QuoteLinkParser +import Common.Parsing.QuoteLinkParser nodeListToList :: NodeList -> IO [ Node ] diff --git a/src/Parsing/QuoteLinkParser.hs b/src/Parsing/QuoteLinkParser.hs deleted file mode 100644 index 11dbe3b..0000000 --- a/src/Parsing/QuoteLinkParser.hs +++ /dev/null @@ -1,63 +0,0 @@ -module Parsing.QuoteLinkParser - ( parseURL - , ParsedURL (..) - ) - where - -import Text.Parsec -import Text.Parsec.String (Parser) - --- Define a data type to hold the extracted components -data ParsedURL = ParsedURL - { boardName :: String - , threadId :: Maybe Integer - , postId :: Maybe Integer - } deriving (Show, Eq) - --- Parser for a segment of the path -segment :: Parser String -segment = many (noneOf "/#") - --- Parser for an integer -integer :: Parser Integer -integer = read <$> many1 digit - --- Parser for the board name -boardNameParser :: Parser String -boardNameParser = char '/' >> segment - --- Optional parser for the thread number -threadNumberParser :: Parser (Maybe Integer) -threadNumberParser = optionMaybe $ try $ do - _ <- char '/' >> string "res/" - tId <- integer - _ <- string ".html" - return tId - --- Parser for index.html, returning Nothing for threadId and postId -indexParser :: Parser (Maybe Integer, Maybe Integer) -indexParser = try $ do - _ <- string "/index.html" - return (Nothing, Nothing) - --- Combined URL parser -urlParser :: Parser ParsedURL -urlParser = do - bName <- boardNameParser - - (tId, pId) <- try threadNumberParser >>= \mTid -> - case mTid of - Just tId -> do - pId <- postIdParser - return (Just tId, pId) - Nothing -> indexParser - eof -- Expect the end of input - return $ ParsedURL bName tId pId - --- Optional parser for the post ID -postIdParser :: Parser (Maybe Integer) -postIdParser = optionMaybe $ char '#' >> integer - --- Function to run the parser -parseURL :: String -> Either ParseError ParsedURL -parseURL = parse urlParser ""