Expand description
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§
- Parser
State - Current parser state.