| 115 | } |
| 116 | |
| 117 | fn build(chars: &[char], caps: &Caps, ngroups: usize) -> Found { |
| 118 | let (s, e) = caps[0].unwrap(); |
| 119 | let text: String = chars[s..e].iter().collect(); |
| 120 | let mut groups = Vec::with_capacity(ngroups); |
| 121 | for i in 1..=ngroups { |
| 122 | groups.push(caps.get(i).copied().flatten().map(|(a, b)| chars[a..b].iter().collect())); |
| 123 | } |
| 124 | Found { start: s, end: e, text, groups } |
| 125 | } |
| 126 | |
| 127 | /* Expand a replacement template against the captured groups. */ |
| 128 | fn expand(repl: &[char], chars: &[char], caps: &Caps, names: &[(String, usize)], out: &mut String) -> Result<(), ReError> { |