[−][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. |