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.
Text can be fed into the parser in reverse order:
```rust use rfind_url::{Parser, ParserState};
let mut parser = Parser::new();
for c in "ThereisnoURLhere".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. Otherwise it will return
None
:
```rust 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)); ```