Module rsonpath_lib::classification
source · Expand description
Classifiers working on the input stream.
quotes
contains the low-levelQuoteClassifiedIterator
computing basic information on which characters are escaped or within quotes.structural
contains theStructuralIterator
that wraps over a quote classifier to extract a stream ofStructural
characters.depth
contains theDepthIterator
that works on top of a quote classifier to provide quick fast-forwarding over the stream while keeping track of the depth.
This base module provides the ResumeClassifierState
struct common between all
higher-level classifiers that work on top of a QuoteClassifiedIterator
.
It allows saving the state of a classifier and can be later used to resume classification
from a, possibly different, high-level classifier. This state’s index can be pushed
forward.
Examples
use rsonpath_lib::classification::quotes::classify_quoted_sequences;
use rsonpath_lib::classification::structural::{
classify_structural_characters, resume_structural_classification, Structural,
StructuralIterator,
};
use aligners::AlignedBytes;
let input = AlignedBytes::new_padded(r#"{"a":[42, {}, 44]}"#.as_bytes());
let quote_classifier = classify_quoted_sequences(&input);
let mut structural_classifier = classify_structural_characters(quote_classifier);
structural_classifier.turn_colons_on(0);
structural_classifier.turn_commas_on(0);
// Classify first two structural characters.
assert_eq!(
structural_classifier.next(),
Some(Structural::Opening(0))
);
assert_eq!(
structural_classifier.next(),
Some(Structural::Colon(4))
);
// We stop at the first non-classified character, Opening(5).
let mut resume_state = structural_classifier.stop();
assert_eq!(resume_state.get_idx(), 5);
// Skip 6 bytes.
resume_state.offset_bytes(6);
assert_eq!(resume_state.get_idx(), 11);
// Resume.
let mut structural_classifier_2 = resume_structural_classification(resume_state);
assert_eq!(
structural_classifier_2.next(),
Some(Structural::Closing(11))
);
Modules
- JSON depth calculations on byte streams.
- Classification of bytes withing JSON quote sequences.
- Classification of structurally significant JSON bytes.
Structs
- State of the block at which classification was stopped.
- State allowing resumption of a classifier from a particular place in the input along with the stopped
QuoteClassifiedIterator
.