use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct Format {
#[serde(default)]
pub native: Native,
#[serde(default)]
pub native_foreign: TranslationDictionary,
#[serde(default)]
pub foreign_native: TranslationDictionary,
#[serde(default = "default_indent")]
pub indent: String,
}
impl Default for Format {
fn default() -> Self {
Self {
native: Default::default(),
native_foreign: Default::default(),
foreign_native: Default::default(),
indent: default_indent(),
}
}
}
fn default_indent() -> String {
"20px".into()
}
#[derive(Serialize, Deserialize, Default)]
pub struct Native {
#[serde(default)]
pub title: String,
pub sort: Option<Vec<String>>,
#[serde(default)]
pub prefix: String,
#[serde(default)]
pub suffix: String,
}
#[derive(Serialize, Deserialize)]
pub struct TranslationDictionary {
#[serde(default)]
pub title: String,
#[serde(default = "default_delimiter")]
pub delimiter: String,
#[serde(default = "default_gloss_delimiter")]
pub gloss_delimiter: String,
}
impl Default for TranslationDictionary {
fn default() -> Self {
Self {
title: Default::default(),
delimiter: default_delimiter(),
gloss_delimiter: default_gloss_delimiter(),
}
}
}
fn default_delimiter() -> String {
" ยท ".into()
}
fn default_gloss_delimiter() -> String {
"; ".into()
}