From f74b5e2e79ba17eb1a55a5e9d553c1935b5b978d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Passerini?= Date: Fri, 11 Oct 2024 10:55:11 -0300 Subject: [PATCH] Simpler implementation of withSameLineComment --- src/parser.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/parser.ts b/src/parser.ts index 629c7bf5..4c6cdc5f 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -102,6 +102,10 @@ const __ = optional(key(';').or(Parsimmon.regex(/\s/))) const comment = (position: 'start' | 'end' | 'inner') => lazy('comment', () => regex(/\/\*(.|[\r\n])*?\*\/|\/\/.*/)).map(text => new Annotation('comment', { text, position })) const sameLineComment: Parser = comment('end') +const withSameLineComment = (result: T): Parser => + optional(sameLineComment).map(comment => comment + ? result.copy({ metadata: result.metadata.concat(comment) }) + : result) export const sanitizeWhitespaces = (originalFrom: SourceIndex, originalTo: SourceIndex, input: string): [SourceIndex, SourceIndex] => { const EOL = input.includes('\r\n') ? '\r\n' : '\n' @@ -453,7 +457,7 @@ const prefixMessageChain: Parser = lazy(() => // TODO sumar messageChain. // TODO cloures const postfixMessageChain: Parser }> = lazy(() => - withSameLineComment(alt( + alt( obj({ receiver: primaryExpression, message: key('.').then(name), @@ -475,15 +479,8 @@ const postfixMessageChain: Parser(parser: Parser): Parser => - seq(parser, optional(sameLineComment)).map(([result, comment]) => - comment - ? result.copy({ metadata: result.metadata.concat(comment) }) - : result - ) const messageChain = (receiver: Parser, message: Parser, args: Parser>): Parser => lazy(() => seq(