From 8228d4d77b58045439afe9e36f7b29cd6d4913d6 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Thu, 29 May 2025 11:10:02 +0200 Subject: [PATCH] Allow elements in the markdown. --- app/lib/shared/markdown.dart | 8 +++++++- app/test/shared/markdown_test.dart | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/lib/shared/markdown.dart b/app/lib/shared/markdown.dart index 64dea9fd87..241cc60c8a 100644 --- a/app/lib/shared/markdown.dart +++ b/app/lib/shared/markdown.dart @@ -220,7 +220,13 @@ class _RelativeUrlRewriter extends html_parsing.TreeVisitor { super.visitElement(element); // check current element - if (element.localName == 'a') { + if (element.localName == 'a' && + element.attributes.length == 1 && + element.attributes.containsKey('name') && + element.attributes['name']!.isNotEmpty && + element.nodes.isEmpty) { + // allow name anchor without any other attribute or content + } else if (element.localName == 'a') { _updateUrlAttributes(element, 'href'); } else if (element.localName == 'img') { _updateUrlAttributes(element, 'src', raw: true); diff --git a/app/test/shared/markdown_test.dart b/app/test/shared/markdown_test.dart index 7c647fde8b..908d72a450 100644 --- a/app/test/shared/markdown_test.dart +++ b/app/test/shared/markdown_test.dart @@ -27,6 +27,16 @@ void main() { '\n', ); }); + + test('named anchor', () { + expect( + markdownToHtml(''), '

\n'); + }); + + test('named anchor with other content', () { + expect(markdownToHtml(''), '

\n'); + expect(markdownToHtml('x'), '

x

\n'); + }); }); group('Valid custom base URL', () {