From f4cee3132d5fb9252862780e4a6e87d751642192 Mon Sep 17 00:00:00 2001
From: Nathan Daelman <ndaelman.physik.hu-berlin.de>
Date: Wed, 5 Jun 2024 12:16:53 +0200
Subject: [PATCH] Add `stripWrapper`

---
 src/MapleParser.hs | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/MapleParser.hs b/src/MapleParser.hs
index 2e5ba4b..8ce8ab9 100644
--- a/src/MapleParser.hs
+++ b/src/MapleParser.hs
@@ -4,6 +4,7 @@ import Text.Parsec.String
 import ToDB
 import Database.Bolt (BoltActionT, Record)
 import Control.Monad (liftM2)
+import Data.Functor (($>))
 
 data MForm = MForm {fName :: String, fParams :: [String]} deriving (Show)
 
@@ -17,18 +18,26 @@ data Extracted = MCDef String
 extendedLetter :: Parser Char
 extendedLetter = try alphaNum <|> char '_'
 
+stripWrapper :: Char -> Char -> Parser String
+stripWrapper s e = 
+  optional (char s) *>
+  many (noneOf [s, e]) >>= \cnt ->
+  optional (char e) $>
+  cnt
+
 -- MapleC parsers
 
 mcDefineParser :: Parser Extracted
 mcDefineParser = MCDef <$> (string "$define" *> spaces *> many1 extendedLetter)
 
 mcIncludeParser :: Parser Extracted
-mcIncludeParser = MCInclude <$> (string "$include" *> spaces *> string "\"" *> many1 (extendedLetter <|> char '.') <* string "\"")
+mcIncludeParser = MCInclude <$> (string "$include" *> spaces *> stripWrapper '"' '"')
 
 mcConditionalParser :: Parser Extracted
 mcConditionalParser = MCConditional <$>
  (string "$ifdef" *> spaces *> many1 extendedLetter <* newline) <*>
- manyTill ((\x -> (varName x, varValue x)) <$> mVarParser) (string "$endif") -- use mVarParser to parse the conditional body
+ manyTill ((\x -> (varName x, varValue x)) <$> mVarParser) (string "$endif")
+ -- use mVarParser to parse the conditional body
 
 -- Maple parsers
 
-- 
GitLab