pub struct TransformingSource { /* private fields */ }Expand description
A source that wraps another source and applies a PrettifyMode transform
to its bytes. Toggling the mode bumps revision() so the event loop
rebuilds the line index. Falls back to passing through the inner bytes if
the transform fails to parse, surfacing the error via last_error().
Implementations§
Source§impl TransformingSource
impl TransformingSource
Sourcepub fn wrap(inner: Box<dyn Source>, mode: PrettifyMode) -> Self
pub fn wrap(inner: Box<dyn Source>, mode: PrettifyMode) -> Self
Build a wrapping source. The inner is read fully via its current bytes
view; the transform runs once. If the transform fails, the cache holds
the raw inner bytes and last_error() returns the parse error.
pub fn mode(&self) -> PrettifyMode
Sourcepub fn last_error(&self) -> Option<String>
pub fn last_error(&self) -> Option<String>
Currently surfaced parse error, if any. Cleared by a successful
set_mode or by switching to Off.
Trait Implementations§
Source§impl Debug for TransformingSource
impl Debug for TransformingSource
Source§impl Source for TransformingSource
impl Source for TransformingSource
fn len(&self) -> usize
fn bytes(&self, range: Range<usize>) -> Cow<'_, [u8]>
fn is_complete(&self) -> bool
Source§fn pump(&self)
fn pump(&self)
Read any new bytes that have become available since the last call.
Default no-op for static sources. Streaming sources override.
Source§fn revision(&self) -> u64
fn revision(&self) -> u64
Monotonic counter that bumps whenever the source’s content has been
replaced wholesale (as opposed to merely appended to). Append-style
sources keep this at 0;
LiveFileSource increments it on each detected
rewrite so the event loop knows to rebuild the line index instead of
just folding in new bytes.Source§fn prettify_mode(&self) -> Option<PrettifyMode>
fn prettify_mode(&self) -> Option<PrettifyMode>
Current prettify mode if this source has a
TransformingSource wrapper.
None means the source is not capable of prettification (e.g. a plain
FileSource). Some(Off) means wrapped but currently raw.Source§fn prettify_label(&self) -> Option<String>
fn prettify_label(&self) -> Option<String>
Status-line label for the active prettify state, e.g.
"json" or
"json:err". None when there’s no wrapper or the mode is Off
without an error.Source§fn set_prettify_mode(&self, mode: PrettifyMode)
fn set_prettify_mode(&self, mode: PrettifyMode)
Switch to a specific prettify mode. No-op for sources without a wrapper.
Bumps
revision() so callers know to rebuild the line index.Source§fn toggle_prettify(&self)
fn toggle_prettify(&self)
Flip between the current mode and the last active (non-Off) mode.
No-op if the source is not wrapped, or if it has never had an active
mode (i.e. only ever been raw).
Source§fn redetect_prettify(&self)
fn redetect_prettify(&self)
Re-run byte-based content detection and apply the result. Used by the
interactive
-Pa (“auto”) sub-command. No-op without a wrapper.fn is_empty(&self) -> bool
Source§fn take_rotated(&self) -> bool
fn take_rotated(&self) -> bool
Returns true once when the source detected that its backing file
was rotated or truncated. Append-style sources always return false.
FileSource overrides this and consumes the flag on each call so
the app loop only reacts once per event.Auto Trait Implementations§
impl !Freeze for TransformingSource
impl !RefUnwindSafe for TransformingSource
impl Send for TransformingSource
impl Sync for TransformingSource
impl Unpin for TransformingSource
impl UnsafeUnpin for TransformingSource
impl !UnwindSafe for TransformingSource
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