Struct webextension_pattern::Pattern[][src]

pub struct Pattern { /* fields omitted */ }

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

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]

type Error = Error

The type returned in the event of a conversion error.

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]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.