[][src]Crate rfind_url

This crate provides a parser to search a string for URLs in reverse order.

All functionality is handled by the Parser struct which takes chars as input.

Examples

Text can be fed into the parser in reverse order:

use rfind_url::{Parser, ParserState};

let mut parser = Parser::new();

for c in "There_is_no_URL_here".chars().rev() {
    assert_eq!(parser.advance(c), ParserState::MaybeUrl);
}

The parser returns the length of the URL as soon as the last character of the URL is pushed into it. If it can be guaranteed that the current character is not part of a URL, ParserState::NoUrl will be returned. Otherwise the response will be ParserState::MaybeUrl.

use rfind_url::{Parser, ParserState};

let mut parser = Parser::new();

// Parser guarantees there's currently no active URL
assert_eq!(parser.advance(' '), ParserState::NoUrl);

// URLs are only returned once they are complete
for c in "ttps://example.org".chars().rev() {
    assert_eq!(parser.advance(c), ParserState::MaybeUrl);
}

// Parser has detected a URL spanning the last 19 characters
assert_eq!(parser.advance('h'), ParserState::Url(19));

Structs

Parser

State machine for finding URLs.

Enums

ParserState

Current parser state.