mod entry;
mod fixing_parser;
mod markdown_parser;
mod multi_json_parser;
pub use entry::parse;
#[derive(Clone, Copy, Debug)]
pub struct ParseOptions {
all_finding_all_json_objects: bool,
allow_markdown_json: bool,
allow_fixes: bool,
allow_as_string: bool,
depth: usize,
}
impl Default for ParseOptions {
fn default() -> Self {
Self {
all_finding_all_json_objects: true,
allow_markdown_json: true,
allow_fixes: true,
allow_as_string: true,
depth: 0,
}
}
}
pub(super) enum ParsingMode {
JsonMarkdown,
JsonMarkdownString,
AllJsonObjects,
}
impl ParseOptions {
pub(super) fn next_from_mode(&self, curr_mode: ParsingMode) -> Self {
let mut new = *self;
match curr_mode {
ParsingMode::JsonMarkdownString => {
new.allow_markdown_json = false;
new.allow_as_string = true;
}
ParsingMode::JsonMarkdown => {
new.allow_markdown_json = false;
new.allow_as_string = false;
}
ParsingMode::AllJsonObjects => {
new.all_finding_all_json_objects = false;
new.allow_as_string = false;
}
}
new
}
}