pub struct FilteredText<'a> { /* private fields */ }Expand description
Filtered text retaining its original input and the provenance of every edit.
Replacement output covers the replaced source range. Insertions map to an empty source range. An empty output range uses the following source boundary, including trailing deletions at the end of the input.
use uqa_analysis::CharFilter;
let input = "<b>한&🙂</b>";
let filtered = CharFilter::HTMLStrip.filter_with_offsets(input)?;
assert_eq!(filtered.as_str(), " 한&🙂 ");
let entity = filtered.source_offsets(4..5)?;
assert_eq!(&input[entity.utf8], "&");
assert_eq!(entity.utf16, 4..9);Implementations§
Source§impl<'a> FilteredText<'a>
impl<'a> FilteredText<'a>
pub fn new(text: &'a str) -> Self
pub fn as_str(&self) -> &str
pub fn original(&self) -> &'a str
pub fn into_string(self) -> String
Sourcepub fn source_offsets(
&self,
range: Range<usize>,
) -> AnalysisResult<SourceOffsets>
pub fn source_offsets( &self, range: Range<usize>, ) -> AnalysisResult<SourceOffsets>
Project a filtered UTF-8 range into the covering original source range.
Sourcepub fn source_offsets_utf16(
&self,
range: Range<usize>,
) -> AnalysisResult<SourceOffsets>
pub fn source_offsets_utf16( &self, range: Range<usize>, ) -> AnalysisResult<SourceOffsets>
Project filtered UTF-16 coordinates without accepting a split surrogate pair.
Sourcepub fn source_covering_offsets_utf16(
&self,
range: Range<usize>,
) -> AnalysisResult<SourceOffsets>
pub fn source_covering_offsets_utf16( &self, range: Range<usize>, ) -> AnalysisResult<SourceOffsets>
Project exact filtered UTF-16 units, preserving split pairs through every edit map.
The returned original UTF-16 range stays exact; UTF-8 covers the original scalars. Replacements cover their source and insertions retain their source boundary, as in strict projection.
use uqa_analysis::CharFilter;
let filtered = CharFilter::HTMLStrip.filter_with_offsets("<b>🙂a</b>")?;
let source = filtered.source_covering_offsets_utf16(2..3)?;
assert_eq!(source.utf16, 4..5);
assert_eq!(source.utf8, 3..7);
assert_eq!(&filtered.original()[source.utf8], "🙂");Sourcepub fn final_offsets(&self) -> SourceOffsets
pub fn final_offsets(&self) -> SourceOffsets
The final input boundary, even when filters remove all source characters.
Trait Implementations§
Source§impl<'a> Clone for FilteredText<'a>
impl<'a> Clone for FilteredText<'a>
Source§fn clone(&self) -> FilteredText<'a>
fn clone(&self) -> FilteredText<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more