summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-11-21 10:48:19 +0100
committerLaurenz <laurmaedje@gmail.com>2022-11-21 10:48:19 +0100
commit7c7b8302251e9703b086c9bf5a989982535bc25b (patch)
treef6c5d2717f3ea3d8ee99faba07017ce36104b8fd
parentddada4509729b0b8dcc394737d7eec588df51040 (diff)
Retain text spans during regex matching
-rw-r--r--src/model/styles.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/model/styles.rs b/src/model/styles.rs
index a5b9aab3..76c67370 100644
--- a/src/model/styles.rs
+++ b/src/model/styles.rs
@@ -390,12 +390,19 @@ impl Recipe {
return Ok(None);
};
- let make = item!(text);
+ let make = |s| {
+ let mut content = item!(text)(s);
+ if let Some(span) = target.span() {
+ content = content.spanned(span);
+ }
+ content
+ };
+
let mut result = vec![];
let mut cursor = 0;
- for mat in regex.find_iter(text) {
- let start = mat.start();
+ for m in regex.find_iter(text) {
+ let start = m.start();
if cursor < start {
result.push(make(text[cursor..start].into()));
}
@@ -403,11 +410,11 @@ impl Recipe {
let transformed = self.transform.apply(
world,
self.span,
- make(mat.as_str().into()).guard(sel),
+ make(m.as_str().into()).guard(sel),
)?;
result.push(transformed);
- cursor = mat.end();
+ cursor = m.end();
}
if result.is_empty() {