diff --git a/muppet/format.py b/muppet/format.py index 3cc09968314fa907eff821d3a9075cd9f0b70813..9e5be76f3f7f4b8c85463fb69f7e3c12d6076346 100644 --- a/muppet/format.py +++ b/muppet/format.py @@ -150,7 +150,6 @@ def format_class(d_type: DefinedType | PuppetClass) -> Tuple[str, str]: name, body = format_docstring(d_type.name, d_type.docstring) out += body - out += '<pre class="highlight-muppet"><code class="puppet">' # ------ Old --------------------------------------- # t = parse_puppet(d_type.source) # data = parse(t, 0, ['root']) @@ -158,11 +157,24 @@ def format_class(d_type: DefinedType | PuppetClass) -> Tuple[str, str]: # out += render(renderer, data) # ------ New --------------------------------------- try: - out += parse_puppet(d_type.source, d_type.name) + result = parse_puppet(d_type.source, d_type.name) + out += '<pre class="highlight-muppet"><code class="puppet">' + out += result + out += '</code></pre>' except ParseError as e: logger.error("Parsing %(name)s failed: %(err)s", {'name': d_type.name, 'err': e}) - out += '</code></pre>' + out += f'<div class="error">{e}</div>' + out += '<pre><code class="puppet">' + if e.pos: + out += d_type.source[:e.pos] + out += '<span class="error">' + out += d_type.source[e.pos] + out += '</span>' + out += d_type.source[e.pos+1:] + else: + out += d_type.source + out += '</code></pre>' return name, out diff --git a/static-src/style.scss b/static-src/style.scss index 57c4387f3a8d2c2df6f01ac7a2bd47587290247b..ec677d7a7b34fa866f95f2a7d9151eb3bbadb599 100644 --- a/static-src/style.scss +++ b/static-src/style.scss @@ -183,6 +183,21 @@ ul.toc { /* -------------------------------------------------- */ +div.error { + white-space: pre; + background: pink; + border: 2px solid red; + border-radius: 1pt; + font-family: mono; +} + +span.error { + background: red; + color: white; +} + +/* -------------------------------------------------- */ + @import "colorscheme_default"; .highlight-pygments {