From 7c7b8302251e9703b086c9bf5a989982535bc25b Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 21 Nov 2022 10:48:19 +0100 Subject: [PATCH] Retain text spans during regex matching --- src/model/styles.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/model/styles.rs b/src/model/styles.rs index a5b9aab3a..76c673707 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() {