use qubit_datatype::{
BlankStringPolicy, BooleanConversionOptions, CollectionConversionOptions,
DataConversionOptions, DurationConversionOptions, EmptyItemPolicy, StringConversionOptions,
};
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct ConfigReadOptions {
conversion: DataConversionOptions,
env_variable_substitution_enabled: bool,
}
impl ConfigReadOptions {
#[must_use]
pub fn env_friendly() -> Self {
Self {
conversion: DataConversionOptions::env_friendly(),
env_variable_substitution_enabled: false,
}
}
#[inline]
pub fn conversion_options(&self) -> &DataConversionOptions {
&self.conversion
}
#[inline]
pub fn is_env_variable_substitution_enabled(&self) -> bool {
self.env_variable_substitution_enabled
}
#[must_use]
pub fn with_env_variable_substitution_enabled(mut self, enabled: bool) -> Self {
self.env_variable_substitution_enabled = enabled;
self
}
#[must_use]
pub fn with_blank_string_policy(mut self, policy: BlankStringPolicy) -> Self {
self.conversion = self.conversion.with_blank_string_policy(policy);
self
}
#[must_use]
pub fn with_empty_item_policy(mut self, policy: EmptyItemPolicy) -> Self {
self.conversion = self.conversion.with_empty_item_policy(policy);
self
}
#[must_use]
pub fn with_string_options(mut self, string: StringConversionOptions) -> Self {
self.conversion = self.conversion.with_string_options(string);
self
}
#[must_use]
pub fn with_boolean_options(mut self, boolean: BooleanConversionOptions) -> Self {
self.conversion = self.conversion.with_boolean_options(boolean);
self
}
#[must_use]
pub fn with_collection_options(mut self, collection: CollectionConversionOptions) -> Self {
self.conversion = self.conversion.with_collection_options(collection);
self
}
#[must_use]
pub fn with_duration_options(mut self, duration: DurationConversionOptions) -> Self {
self.conversion = self.conversion.with_duration_options(duration);
self
}
}
impl AsRef<DataConversionOptions> for ConfigReadOptions {
#[inline]
fn as_ref(&self) -> &DataConversionOptions {
&self.conversion
}
}
impl From<DataConversionOptions> for ConfigReadOptions {
#[inline]
fn from(conversion: DataConversionOptions) -> Self {
Self {
conversion,
env_variable_substitution_enabled: false,
}
}
}