Expand description
Extra utilities for AT Protocol applications.
This crate provides additional utilities that complement the core AT Protocol identity and record crates. Currently, it focuses on rich text facet parsing.
§Features
- Facet Parsing: Extract mentions, URLs, and hashtags from plain text with correct UTF-8 byte offset calculation
- Identity Integration: Resolve mention handles to DIDs during parsing
§Example
ⓘ
use atproto_extras::{parse_facets_from_text, FacetLimits};
// Parse facets from text (requires an IdentityResolver)
let text = "Hello @alice.bsky.social! Check out https://example.com #rust";
let limits = FacetLimits::default();
let facets = parse_facets_from_text(text, &resolver, &limits).await;§Byte Offset Calculation
This implementation correctly uses UTF-8 byte offsets as required by AT Protocol.
The facets use “inclusive start and exclusive end” byte ranges. All parsing is done
using regex::bytes::Regex which operates on byte slices and returns byte positions,
ensuring correct handling of multi-byte UTF-8 characters (emojis, CJK, accented chars).
Re-exports§
pub use facets::FacetLimits;pub use facets::parse_facets_from_text;pub use facets::parse_mentions;pub use facets::parse_urls;
Modules§
- facets
- Rich text facet parsing for AT Protocol.