Struct webextension_pattern::Pattern [−][src]
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
impl Pattern
[src]
pub fn wildcard() -> Pattern
[src]
Return a pattern that will match any URL
pub fn new(source: &str, relaxed: bool) -> Result<Pattern, Error>
[src]
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.
pub fn is_match(&self, url: &Url) -> bool
[src]
Check if the Pattern
matches the url
.
Trait Implementations
impl Clone for Pattern
[src]
impl Debug for Pattern
[src]
impl Display for Pattern
[src]
impl Into<String> for Pattern
[src]
impl TryFrom<String> for Pattern
[src]
Auto Trait Implementations
impl RefUnwindSafe for Pattern
impl Send for Pattern
impl Sync for Pattern
impl Unpin for Pattern
impl UnwindSafe for Pattern
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,