Struct Pattern

Source
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 like http
  • HOST can be * (all hosts), a specific host (no wildcards allowed) like google.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, and SCHEMA://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

Source

pub fn wildcard() -> Pattern

Return a pattern that will match any URL

Source

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.

Source

pub fn is_match(&self, url: &Url) -> bool

Check if the Pattern matches the url.

Trait Implementations§

Source§

impl Clone for Pattern

Source§

fn clone(&self) -> Pattern

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Pattern

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Pattern

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Into<String> for Pattern

Source§

fn into(self) -> String

Converts this type into the (usually inferred) input type.
Source§

impl TryFrom<String> for Pattern

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(raw: String) -> Result<Self, Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,