use ferroni::prelude::*;
use ferroni::regsyntax::{OnigSyntaxPosixBasic, OnigSyntaxRuby};
fn main() -> Result<(), RegexError> {
let oniguruma = Regex::new(r"a+")?;
let found = oniguruma.find("caaat").map(|m| m.as_str());
println!("Oniguruma (default): {found:?}");
assert_eq!(found, Some("aaa"));
let posix = Regex::builder(r"a+")
.syntax(&OnigSyntaxPosixBasic)
.build()?;
let found = posix.find("caaat").map(|m| m.as_str());
println!("POSIX Basic, a+ on caaat: {found:?}");
assert_eq!(found, None);
let found = posix.find("c a+ t").map(|m| m.as_str());
println!("POSIX Basic, a+ on c a+ t: {found:?}");
assert_eq!(found, Some("a+"));
let ruby = Regex::builder(r"\d+").syntax(&OnigSyntaxRuby).build()?;
let found = ruby.find("order 66").map(|m| m.as_str());
println!("Ruby, \\d+ on order 66: {found:?}");
assert_eq!(found, Some("66"));
Ok(())
}