Skip to content

Commit cf7d57c

Browse files
committed
refactor lexeme and skipHorizontalSpace to ParsingUtils
1 parent bd346ad commit cf7d57c

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

languages/haskell/app/ParseMarkdown.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import Data.Maybe ( catMaybes, fromMaybe )
1212

1313
import DMN.Types ( DecisionTable )
1414
import DMN.ParseTable ( parseTable )
15-
import DMN.ParseFEEL ( skipHorizontalSpace )
1615

1716
import Text.Megaparsec
1817
( MonadParsec(try, eof), satisfy, manyTill, many, (<?>), (<|>) )
@@ -25,7 +24,9 @@ import DMN.ParsingUtils
2524
endOfLine,
2625
anyChar,
2726
many1,
28-
parseOnly )
27+
parseOnly,
28+
skipHorizontalSpace
29+
)
2930
import qualified Data.Text as T
3031

3132
import Options ( ArgOptions(input, verbose) )

languages/haskell/src/DMN/ParseFEEL.hs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,3 @@ escape = do
8282
nonEscape :: Parser Char
8383
nonEscape = noneOf ['\\', '\"', '\0', '\n', '\r', '\v', '\t', '\b', '\f']
8484

85-
skipHorizontalSpace :: Parser ()
86-
skipHorizontalSpace = skipWhile "Horizontal space" isHorizontalSpace
87-
-- ^ Maybe add try here?
88-

languages/haskell/src/DMN/ParseTable.hs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module DMN.ParseTable where
44

55
import Prelude hiding (takeWhile)
66
import DMN.DecisionTable ( mkFs, trim, mkDTable )
7-
import DMN.ParseFEEL ( parseVarname, skipHorizontalSpace )
7+
import DMN.ParseFEEL ( parseVarname )
88
import DMN.SFeelGrammar
99
import Data.Maybe (catMaybes)
1010
import Data.List (transpose)
@@ -24,7 +24,7 @@ import Text.Megaparsec
2424
MonadParsec(try) )
2525
import Text.Megaparsec.Char ( char )
2626
import DMN.ParsingUtils
27-
( Parser, inClass, skipWhile, digit, endOfLine, endOfInput, many1 )
27+
( Parser, inClass, skipWhile, digit, endOfLine, endOfInput, many1, lexeme, skipHorizontalSpace )
2828
import DMN.Types
2929
( ColBody(..),
3030
HeaderRow(..),
@@ -66,9 +66,6 @@ parseColHeader = do
6666
parseTypeDecl :: Parser (Maybe DMNType)
6767
parseTypeDecl = Mega.optional $ lexeme ":" *> parseType
6868

69-
lexeme :: Parser a -> Parser a
70-
lexeme x = x <* skipHorizontalSpace
71-
7269
parseType :: Parser DMNType
7370
parseType
7471
= (DMN_List <$> (lexeme "[" *> parseType <* lexeme "]") <?> "inside list")

languages/haskell/src/DMN/ParsingUtils.hs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
module DMN.ParsingUtils
44
where
55

6-
-- import Control.Monad (void)
76
import Data.Bifunctor (first)
87
import Data.Char (isDigit)
98
import Data.Text (Text)
10-
-- import qualified Data.Text as T
119
import Data.Void (Void)
10+
import Text.Megaparsec.Char ( char, string )
11+
import Text.Megaparsec.Char.Lexer ( scientific )
1212
import Text.Megaparsec
1313
( (<|>),
1414
(<?>),
@@ -21,8 +21,6 @@ import Text.Megaparsec
2121
some,
2222
Parsec,
2323
MonadParsec(eof, takeWhileP) )
24-
import Text.Megaparsec.Char ( char, string )
25-
import Text.Megaparsec.Char.Lexer
2624

2725
import GHC.Stack (HasCallStack)
2826

@@ -38,6 +36,9 @@ notInClass s = not . inClass s
3836
skipWhile :: String -> (Char -> Bool) -> Parser ()
3937
skipWhile tokenLabel p = () <$ takeWhileP (Just tokenLabel) p
4038

39+
lexeme :: Parser a -> Parser a
40+
lexeme x = x <* skipHorizontalSpace
41+
4142
-- | The parser @skip p@ succeeds for any character for which the
4243
-- predicate @p@ returns 'True'.
4344
--
@@ -89,3 +90,8 @@ anyChar = anySingle
8990

9091
notChar :: Char -> Parser Char
9192
notChar = anySingleBut
93+
94+
skipHorizontalSpace :: Parser ()
95+
skipHorizontalSpace = skipWhile "Horizontal space" isHorizontalSpace
96+
-- ^ Maybe add try here?
97+

0 commit comments

Comments
 (0)