aboutsummaryrefslogtreecommitdiff
path: root/src/ast/container.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-11 05:57:01 +0000
committerFuwn <[email protected]>2025-09-11 05:57:01 +0000
commit28581ff44e9b6d98879807ecc78c8cd709af371a (patch)
tree2ba228efc41ef90623106bb9c1ed75dc3b8f251c /src/ast/container.rs
parentfix(ast): Gracefully handle malformed link lines (diff)
downloadgerm-28581ff44e9b6d98879807ecc78c8cd709af371a.tar.xz
germ-28581ff44e9b6d98879807ecc78c8cd709af371a.zip
fix(ast): Improve UTF-8 handling
Diffstat (limited to 'src/ast/container.rs')
-rw-r--r--src/ast/container.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/ast/container.rs b/src/ast/container.rs
index bf4166c..46c548b 100644
--- a/src/ast/container.rs
+++ b/src/ast/container.rs
@@ -224,10 +224,14 @@ impl Ast {
nodes.push(Node::Heading {
level,
- // Here, we are `get`ing the `&str` starting at the `level`-th
- // index, then trimming the start. These operations
- // effectively off the line identifier.
- text: line.get(level..).unwrap_or("").trim_start().to_string(),
+ // Here, the text after the heading markers is safely extracted.
+ // `chars().skip()` is used to safely handle UTF-8 boundaries.
+ text: line
+ .chars()
+ .skip(level)
+ .collect::<String>()
+ .trim_start()
+ .to_string(),
});
break;