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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! Filters allow you to customize how strictly commands will be listened to.
//!
//! # Examples
//!
//! [`Filter::Strict`](crate::util::Filter::Strict) requires the command to match exactly:
//!
//! ```
//! use safe_vk::util::{matchit, Filter};
//!
//! let command = "/start";
//! let filter = &Filter::Strict;
//!
//! assert!(matchit("/start", command, filter)); // This would pass
//! assert!(!matchit("/START", command, filter)); // This would fail
//! assert!(!matchit(" /start", command, filter)); // This would fail
//! ```
//!
//! [`Filter::Flexible`](crate::util::Filter::Flexible) allows some variations like different cases and extra spaces:
//!
//! ```
//! use safe_vk::util::{matchit, Filter};
//!
//! let command = "/start";
//! let filter = &Filter::Flexible;
//!
//! assert!(matchit("/start", command, filter)); // This would pass
//! assert!(matchit("/START", command, filter)); // This would pass
//! assert!(matchit(" /start", command, filter)); // This would pass
//! ```
//!
//! [`Filter::Sensitive`](crate::util::Filter::Sensitive) will trigger without any symbol and is case-insensitive:
//!
//! ```
//! use safe_vk::util::{matchit, Filter};
//!
//! let command = "/start";
//! let filter = &Filter::Sensitive;
//!
//! assert!(matchit("start", command, filter)); // This would pass
//! assert!(matchit("START", command, filter)); // This would pass
//! assert!(matchit("!start", command, filter)); // This would pass
//! ```
use Regex;