pub struct PreprocessedText {
pub text: String,
pub original_end: usize,
pub mappings: Vec<LineMapping>,
}Expand description
Result of preprocessing text for multi-line concatenation.
The text field contains the original text unchanged, followed by any
multiline-joined segments appended after a separator. This ensures:
- Structural regex patterns (
secret_key = "...") match in the original text. - Multiline-joined secrets (
"sk-proj-" + "abc...") match in the appended segments. - No double-scanning or heuristic thresholds are needed.
§Examples
use keyhog_scanner::multiline::PreprocessedText;
let value = PreprocessedText::passthrough("secret");
assert_eq!(value.line_for_offset(0), Some(1));Fields§
§text: StringOriginal text + appended multiline-joined segments
original_end: usizeByte offset where the appended joined segments start (= original text length)
mappings: Vec<LineMapping>Mapping from offsets in text to original line numbers
Implementations§
Source§impl PreprocessedText
impl PreprocessedText
Sourcepub fn line_for_offset(&self, offset: usize) -> Option<usize>
pub fn line_for_offset(&self, offset: usize) -> Option<usize>
Get the original line number for a given offset in the joined text. Map a byte offset in preprocessed text back to an original line number.
§Examples
use keyhog_scanner::multiline::PreprocessedText;
let value = PreprocessedText::passthrough("secret");
assert_eq!(value.line_for_offset(0), Some(1));Sourcepub fn passthrough(text: &str) -> Self
pub fn passthrough(text: &str) -> Self
Create a passthrough (no preprocessing) — one mapping per line. Build a preprocessed representation with a one-line identity mapping.
§Examples
use keyhog_scanner::multiline::PreprocessedText;
let value = PreprocessedText::passthrough("secret");
assert_eq!(value.text, "secret");Trait Implementations§
Source§impl Clone for PreprocessedText
impl Clone for PreprocessedText
Source§fn clone(&self) -> PreprocessedText
fn clone(&self) -> PreprocessedText
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PreprocessedText
impl RefUnwindSafe for PreprocessedText
impl Send for PreprocessedText
impl Sync for PreprocessedText
impl Unpin for PreprocessedText
impl UnsafeUnpin for PreprocessedText
impl UnwindSafe for PreprocessedText
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more