pub struct Pattern { /* private fields */ }
Expand description
A parsed WebExtensions pattern
§Format
A strict format looks like SCHEMA://HOST/PATH
:
SCHEMA
can be*
(all schemas), or a specific schema likehttp
HOST
can be*
(all hosts), a specific host (no wildcards allowed) likegoogle.com
, or something starting with*.
to indicate that the domain itself and any subdomain is valid, like*.google.com
PATH
is a string that is matched against the full path, andSCHEMA://HOST/
is considered to only match the path/
. It supports wildcards with*
, which will match any character (including a slash)
The value <all_urls>
is a special token that matches all URLs.
The relaxed
format is a superset of the strict format, and you can optionally omit the schema and the path – omitting SCHEMA://
will match all schemas, and omitting the path (or leaving it as /
) will match all paths.
relaxed
formats also do case insensitive path matching.
§Examples
use webextension_pattern::Pattern;
use url::Url;
let p = Pattern::new("*://google.com/foo*bar", false)?;
assert!(!p.is_match(&Url::parse("http://google.com/")?));
assert!(p.is_match(&Url::parse("https://google.com/foo/baz/bar")?));
assert!(p.is_match(&Url::parse("https://google.com/foo_bar")?));
assert!(!p.is_match(&Url::parse("https://mail.google.com/foo_bar")?));
let p = Pattern::new("*.google.com", true)?;
assert!(p.is_match(&Url::parse("http://google.com/")?));
assert!(p.is_match(&Url::parse("https://google.com/foo_bar")?));
assert!(p.is_match(&Url::parse("https://mail.google.com/something_else")?));
Implementations§
Source§impl Pattern
impl Pattern
Sourcepub fn new(source: &str, relaxed: bool) -> Result<Pattern, Error>
pub fn new(source: &str, relaxed: bool) -> Result<Pattern, Error>
Parse a pattern from the given source
. If using relaxed
, it will not adhere to the requirements of the
Mozilla format by allowing the omission of an URL scheme and the omission of an explicit path, causing it
to assume these as wildcards. This mode is intended to be more forgiving for common user patterns.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Pattern
impl RefUnwindSafe for Pattern
impl Send for Pattern
impl Sync for Pattern
impl Unpin for Pattern
impl UnwindSafe for Pattern
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more