mod i18n;
mod parsing;
mod path;
#[cfg(test)]
mod test;
mod version;
pub use self::{i18n::DokiInternationalization, path::DokiPath, version::DokiVersionControl};
use self::parsing::{parse_null_as_default, parse_url_base, parse_url_end};
use serde::{
de,
de::{value::SeqAccessDeserializer, SeqAccess, Visitor},
Deserialize, Deserializer, Serialize,
};
use std::fmt::{Formatter, Write};
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct DokiConfig {
#[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(deserialize_with = "parse_url_base", default)]
url_base: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "parse_url_end", default)]
url_end: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "parse_null_as_default", default)]
version: Option<DokiVersionControl>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(deserialize_with = "parse_null_as_default", default)]
i18n: Option<DokiInternationalization>,
}