#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TriviaAttachmentPolicy {
ContainmentLink,
TokenLink,
Both,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum RegionDetectionPolicy {
NameDriven,
ContentDriven,
Both,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParseConfiguration {
trivia_attachment_policy: TriviaAttachmentPolicy,
region_detection_policy: RegionDetectionPolicy,
}
impl ParseConfiguration {
#[must_use]
pub const fn new(trivia_attachment_policy: TriviaAttachmentPolicy) -> Self {
Self {
trivia_attachment_policy,
region_detection_policy: RegionDetectionPolicy::Both,
}
}
#[must_use]
pub const fn with_region_detection_policy(
mut self,
region_detection_policy: RegionDetectionPolicy,
) -> Self {
self.region_detection_policy = region_detection_policy;
self
}
#[must_use]
pub const fn trivia_attachment_policy(self) -> TriviaAttachmentPolicy {
self.trivia_attachment_policy
}
#[must_use]
pub const fn region_detection_policy(self) -> RegionDetectionPolicy {
self.region_detection_policy
}
}
impl Default for ParseConfiguration {
fn default() -> Self {
Self::new(TriviaAttachmentPolicy::Both)
}
}