Skip to main content

Crate atproto_extras

Crate atproto_extras 

Source
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_tags;
pub use facets::parse_urls;

Modules§

facets
Rich text facet parsing for AT Protocol.