doku/printers/toml/formatting/values_style.rs
1use crate::*;
2
3/// Determines how values should get displayed.
4#[derive(Clone, Debug, Serialize, Deserialize)]
5#[serde(deny_unknown_fields)]
6pub enum ValuesStyle {
7 /// Displays values _outside_ of objects, as comments:
8 ///
9 /// ```
10 /// use doku::Document;
11 /// use serde::Serialize;
12 ///
13 /// #[derive(Serialize, Document)]
14 /// struct Person {
15 /// /// First name
16 /// name: String,
17 /// }
18 ///
19 /// let fmt = doku::toml::Formatting {
20 /// values_style: doku::toml::ValuesStyle::Comment(
21 /// "Default value: ".to_string(),
22 /// ),
23 /// ..Default::default()
24 /// };
25 ///
26 /// let val = Person {
27 /// name: "Janet".to_string(),
28 /// };
29 ///
30 /// let doc = doku::to_toml_fmt_val(&fmt, &val);
31 ///
32 /// doku::assert_doc!(r#"
33 /// ## First name
34 /// ## Default value: "Janet"
35 /// name = "string"
36 /// "#, doc);
37 /// ```
38 Comment(String),
39
40 /// Displays values _inside_ of objects, as fields:
41 ///
42 /// ```
43 /// use doku::Document;
44 /// use serde::Serialize;
45 ///
46 /// #[derive(Serialize, Document)]
47 /// struct Person {
48 /// /// First name
49 /// name: String,
50 /// }
51 ///
52 /// let fmt = doku::toml::Formatting {
53 /// values_style: doku::toml::ValuesStyle::Field,
54 /// ..Default::default()
55 /// };
56 ///
57 /// let val = Person {
58 /// name: "Janet".to_string(),
59 /// };
60 ///
61 /// let doc = doku::to_toml_fmt_val(&fmt, &val);
62 ///
63 /// doku::assert_doc!(r#"
64 /// ## First name
65 /// name = "Janet"
66 /// "#, doc);
67 /// ```
68 Field,
69}
70
71impl Default for ValuesStyle {
72 fn default() -> Self {
73 Self::Field
74 }
75}