From dac6f0b0c9e24f730689de7102b3ce4ba70bc396 Mon Sep 17 00:00:00 2001
From: Turiiya <34311583+ttytm@users.noreply.github.com>
Date: Wed, 6 Sep 2023 08:42:18 +0200
Subject: [PATCH] vdoc: improve html tag escape (#19266)
---
cmd/tools/vdoc/html.v | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/cmd/tools/vdoc/html.v b/cmd/tools/vdoc/html.v
index 9832108e50..d50d803c9b 100644
--- a/cmd/tools/vdoc/html.v
+++ b/cmd/tools/vdoc/html.v
@@ -13,13 +13,16 @@ import v.pref
import v.util { tabs }
const (
- css_js_assets = ['doc.css', 'normalize.css', 'doc.js', 'dark-mode.js']
- default_theme = os.resource_abs_path('theme')
- link_svg = ''
+ css_js_assets = ['doc.css', 'normalize.css', 'doc.js', 'dark-mode.js']
+ default_theme = os.resource_abs_path('theme')
+ link_svg = ''
- single_quote = "'"
- double_quote = '"'
- no_quotes_replacement = [single_quote, '', double_quote, '']
+ single_quote = "'"
+ double_quote = '"'
+ no_quotes_replacement = [single_quote, '', double_quote, '']
+
+ html_tag_escape_replacement = ['<', '<', '>', '>']
+ html_tag_escape_re = regex.regex_opt(r'`.+[(<)(>)].+`') or { panic(err) }
)
enum HighlightTokenTyp {
@@ -450,8 +453,8 @@ fn doc_node_html(dn doc.DocNode, link string, head bool, include_examples bool,
}
fn html_tag_escape(str string) string {
- escaped_string := str.replace_each(['<', '<', '>', '>'])
- mut re := regex.regex_opt(r'`.+[(<)(>)].+`') or { regex.RE{} }
+ escaped_string := str.replace_each(html_tag_escape_replacement)
+ mut re := html_tag_escape_re
if re.find_all_str(escaped_string).len > 0 {
return str
}