diff --git a/cmd/tools/vdoc/html.v b/cmd/tools/vdoc/html.v index bfbea197b4..eec8a5181e 100644 --- a/cmd/tools/vdoc/html.v +++ b/cmd/tools/vdoc/html.v @@ -2,6 +2,7 @@ module main import os import net.urllib +import encoding.html import strings import markdown import v.scanner @@ -631,7 +632,7 @@ fn (f &MdHtmlCodeHighlighter) transform_content(parent markdown.ParentType, text text) if parent is markdown.MD_BLOCKTYPE && parent == .md_block_code { if f.language == 'v' || f.language == 'vlang' { - return html_highlight(initial_transformed_text, f.table) + return html_highlight(html.unescape(initial_transformed_text), f.table) } } return initial_transformed_text diff --git a/cmd/tools/vdoc/tests/testdata/output_formats/README.md b/cmd/tools/vdoc/tests/testdata/output_formats/README.md index 36f2f416ed..3226fb1676 100644 --- a/cmd/tools/vdoc/tests/testdata/output_formats/README.md +++ b/cmd/tools/vdoc/tests/testdata/output_formats/README.md @@ -20,6 +20,14 @@ fn main() { dump(os.args) dump(os.args.len) assert os.args.len > 0 + + // Test escape characters like for `&` and `<` + mut arr := [1, 2, 3] + mut ref := &arr + arr << 4 + + ch := chan bool{cap: 1} + ch <- true } ``` diff --git a/cmd/tools/vdoc/tests/testdata/output_formats/main.ansi b/cmd/tools/vdoc/tests/testdata/output_formats/main.ansi index 69f5d594d5..c99e4a6b72 100644 --- a/cmd/tools/vdoc/tests/testdata/output_formats/main.ansi +++ b/cmd/tools/vdoc/tests/testdata/output_formats/main.ansi @@ -12,6 +12,14 @@ fn main() { dump(os.args) dump(os.args.len) assert os.args.len > 0 + + // Test escape characters like for `&` and `<` + mut arr := [1, 2, 3] + mut ref := &arr + arr << 4 + + ch := chan bool{cap: 1} + ch <- true } A JWT example (test syntax highlighting) @@ -81,6 +89,14 @@ fn auth_verify(secret string, token string) bool { dump(os.args) dump(os.args.len) assert os.args.len > 0 + + // Test escape characters like for `&` and `<` + mut arr := [1, 2, 3] + mut ref := &arr + arr << 4 + + ch := chan bool{cap: 1} + ch <- true } ``` diff --git a/cmd/tools/vdoc/tests/testdata/output_formats/main.html b/cmd/tools/vdoc/tests/testdata/output_formats/main.html index 5161433786..3dcedb9e71 100644 --- a/cmd/tools/vdoc/tests/testdata/output_formats/main.html +++ b/cmd/tools/vdoc/tests/testdata/output_formats/main.html @@ -5,7 +5,15 @@ fn main() { dump(os.args) dump(os.args.len) - assert os.args.len &gt; 0 + assert os.args.len > 0 + + // Test escape characters like for `&` and `<` + mut arr := [1, 2, 3] + mut ref := &arr + arr << 4 + + ch := chan bool{cap: 1} + ch <- true }

A JWT example (test syntax highlighting)

import crypto.hmac
 import crypto.sha256
 import encoding.base64
diff --git a/cmd/tools/vdoc/tests/testdata/output_formats/main.text b/cmd/tools/vdoc/tests/testdata/output_formats/main.text
index 3ae31777ee..d36f21bfba 100644
--- a/cmd/tools/vdoc/tests/testdata/output_formats/main.text
+++ b/cmd/tools/vdoc/tests/testdata/output_formats/main.text
@@ -20,6 +20,14 @@ module main
     dump(os.args)
     dump(os.args.len)
     assert os.args.len > 0
+    
+    // Test escape characters like for `&` and `<`
+    mut arr := [1, 2, 3]
+    mut ref := &arr
+    arr << 4
+    
+    ch := chan bool{cap: 1}
+    ch <- true
     }
     ```