From 05c0886ff9cff8e2f3e74cb42e9b2a16a267d779 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= <hugo@lysator.liu.se>
Date: Tue, 19 Sep 2023 16:57:14 +0200
Subject: [PATCH] Allow escaping of literal linebreaks.

---
 muppet/puppet/format/parser.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/muppet/puppet/format/parser.py b/muppet/puppet/format/parser.py
index 828e03b..ad28c52 100644
--- a/muppet/puppet/format/parser.py
+++ b/muppet/puppet/format/parser.py
@@ -141,7 +141,12 @@ class rich_char(ParseDirective):
             case '$':
                 return parser.get(s('$') | r'\$')
             case _:
-                return parser.get(self.c)
+                # Literal linebreaks can apparently be escaped inside
+                # "rich" strings (thankfully not inside 'plain' strings).
+                try:
+                    return parser.get(s("\\\n") & self.c)
+                except ParseError:
+                    return parser.get(self.c)
 
 
 class ParserFormatter(Serializer[ParseDirective]):
-- 
GitLab