1extern crate lua_patterns;
2use lua_patterns::{LuaPattern, LuaPatternBuilder};
3
4fn main() {
5 let mut m = LuaPattern::new("(%a+) one");
6 let text = " hello one two";
7 assert!(m.matches(text));
8 assert_eq!(m.capture(1), 1..6);
9 assert_eq!(m.capture(0), 1..10);
10
11 let v = m.captures(text);
12 assert_eq!(v, &["hello one", "hello"]);
13
14 let mut v = Vec::new();
15 assert!(m.capture_into(text, &mut v));
16 assert_eq!(v, &["hello one", "hello"]);
17
18 let bytes = &[0xFF, 0xEE, 0x0, 0xDE, 0x24, 0x24, 0xBE, 0x0, 0x0];
19
20 let patt = LuaPatternBuilder::new()
21 .bytes_as_hex("DE24")
22 .text("+")
23 .bytes(&[0xBE])
24 .build();
25
26 let mut m = LuaPattern::from_bytes(&patt);
27 assert!(m.matches_bytes(bytes));
28 assert_eq!(&bytes[m.capture(0)], &[0xDE, 0x24, 0x24, 0xBE]);
29
30 let mut m = LuaPattern::new("(%S+)%s*=%s*(%S+);%s*");
31 let res = m.gsub("a=2; b=3; c = 4;", "'%2':%1 ");
32 println!("{}", res);
33
34 let mut m = LuaPattern::new("%s+");
35 let res = m.gsub("hello dolly you're so fine", "");
36 println!("{}", res);
37}