use std::collections::HashMap;
use dprint_core::configuration::*;
use dprint_core::generate_str_to_from;
use serde::Deserialize;
use serde::Serialize;
#[derive(Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Configuration {
pub line_width: u32,
pub new_line_kind: NewLineKind,
pub text_wrap: TextWrap,
pub emphasis_kind: EmphasisKind,
pub strong_kind: StrongKind,
pub unordered_list_kind: UnorderedListKind,
pub heading_kind: HeadingKind,
pub ignore_directive: String,
pub ignore_file_directive: String,
pub ignore_start_directive: String,
pub ignore_end_directive: String,
#[serde(default)]
pub tags: HashMap<String, String>,
}
#[derive(Clone, PartialEq, Copy, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum TextWrap {
Always,
Maintain,
Never,
}
generate_str_to_from![TextWrap, [Always, "always"], [Maintain, "maintain"], [Never, "never"]];
#[derive(Clone, PartialEq, Copy, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum EmphasisKind {
Asterisks,
Underscores,
}
generate_str_to_from![EmphasisKind, [Asterisks, "asterisks"], [Underscores, "underscores"]];
#[derive(Clone, PartialEq, Copy, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum StrongKind {
Asterisks,
Underscores,
}
generate_str_to_from![StrongKind, [Asterisks, "asterisks"], [Underscores, "underscores"]];
#[derive(Clone, PartialEq, Copy, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum UnorderedListKind {
Dashes,
Asterisks,
}
impl UnorderedListKind {
pub fn list_char(&self, is_alternate: bool) -> char {
match (self, is_alternate) {
(Self::Dashes, true) | (Self::Asterisks, false) => '*',
_ => '-',
}
}
}
generate_str_to_from![UnorderedListKind, [Dashes, "dashes"], [Asterisks, "asterisks"]];
#[derive(Clone, PartialEq, Copy, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum HeadingKind {
Setext,
Atx,
}
generate_str_to_from![HeadingKind, [Setext, "setext"], [Atx, "atx"]];