#[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 enum LanguageIdentificationDetector {
Lingua,
Whatlang,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParseConfiguration {
trivia_attachment_policy: TriviaAttachmentPolicy,
region_detection_policy: RegionDetectionPolicy,
language_identification_detector: LanguageIdentificationDetector,
}
impl ParseConfiguration {
#[must_use]
pub const fn new(trivia_attachment_policy: TriviaAttachmentPolicy) -> Self {
Self {
trivia_attachment_policy,
region_detection_policy: RegionDetectionPolicy::Both,
language_identification_detector: LanguageIdentificationDetector::Lingua,
}
}
#[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 with_language_identification_detector(
mut self,
detector: LanguageIdentificationDetector,
) -> Self {
self.language_identification_detector = detector;
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
}
#[must_use]
pub const fn language_identification_detector(self) -> LanguageIdentificationDetector {
self.language_identification_detector
}
}
impl Default for ParseConfiguration {
fn default() -> Self {
Self::new(TriviaAttachmentPolicy::Both)
}
}