File: scan.rs

package info (click to toggle)
rust-coreutils 0.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 505,620 kB
  • sloc: ansic: 103,594; asm: 28,570; sh: 8,910; python: 5,581; makefile: 472; cpp: 97; javascript: 72
file content (25 lines) | stat: -rw-r--r-- 575 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use onig::*;

fn scan_callback<'t>(n: i32, caps: Captures<'t>) -> bool {
    println!("scan: {}", n);
    println!("match at {}", caps.offset());

    for (i, cap) in caps.iter_pos().enumerate() {
        match cap {
            Some(pos) => println!("{}: {:?}", i, pos),
            None => println!("{}: did not capture", i),
        }
    }

    true
}

fn exec(pattern: &str, to_match: &str) {
    let reg = Regex::new(pattern).unwrap();
    reg.scan(to_match, scan_callback);
}

fn main() {
    exec("\\Ga+\\s*", "a aa aaa baaa");
    exec("a+\\s*", "a aa aaa baaa");
}