use super::DiagnosticPolicy;
use super::MarkdownFenceClosing;
use super::MarkdownFencePolicy;
use super::NormalizingJsonDecodePolicyBuilder;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NormalizingJsonDecodePolicy {
trim_whitespace: bool,
strip_utf8_bom: bool,
markdown_fence_policy: MarkdownFencePolicy,
escape_control_chars_in_strings: bool,
diagnostic_policy: DiagnosticPolicy,
}
impl NormalizingJsonDecodePolicy {
#[inline]
#[must_use]
pub const fn lenient() -> Self {
Self {
trim_whitespace: true,
strip_utf8_bom: true,
markdown_fence_policy: MarkdownFencePolicy::JsonOnly {
closing: MarkdownFenceClosing::Optional,
},
escape_control_chars_in_strings: true,
diagnostic_policy: DiagnosticPolicy::Redacted,
}
}
#[inline]
#[must_use]
pub const fn builder() -> NormalizingJsonDecodePolicyBuilder {
NormalizingJsonDecodePolicyBuilder::new()
}
#[inline(always)]
#[must_use]
pub const fn trim_whitespace(&self) -> bool {
self.trim_whitespace
}
#[inline(always)]
#[must_use]
pub const fn strip_utf8_bom(&self) -> bool {
self.strip_utf8_bom
}
#[inline(always)]
#[must_use]
pub const fn markdown_fence_policy(&self) -> &MarkdownFencePolicy {
&self.markdown_fence_policy
}
#[inline(always)]
#[must_use]
pub const fn escape_control_chars_in_strings(&self) -> bool {
self.escape_control_chars_in_strings
}
#[inline(always)]
#[must_use]
pub const fn diagnostic_policy(&self) -> DiagnosticPolicy {
self.diagnostic_policy
}
#[inline(always)]
pub(super) const fn set_trim_whitespace(&mut self, enabled: bool) {
self.trim_whitespace = enabled;
}
#[inline(always)]
pub(super) const fn set_strip_utf8_bom(&mut self, enabled: bool) {
self.strip_utf8_bom = enabled;
}
#[inline(always)]
pub(super) const fn set_markdown_fence_policy(&mut self, policy: MarkdownFencePolicy) {
self.markdown_fence_policy = policy;
}
#[inline(always)]
pub(super) const fn set_escape_control_chars_in_strings(&mut self, enabled: bool) {
self.escape_control_chars_in_strings = enabled;
}
#[inline(always)]
pub(super) const fn set_diagnostic_policy(&mut self, policy: DiagnosticPolicy) {
self.diagnostic_policy = policy;
}
}
impl Default for NormalizingJsonDecodePolicy {
#[inline(always)]
fn default() -> Self {
Self::lenient()
}
}