1use crate::error::Result;
18
19#[derive(Debug, PartialEq, Clone)]
20pub struct ValveKeyValue {
21 pub key: String,
22 pub value: ValveKeyValueType
23}
24
25#[derive(Debug, PartialEq, Clone)]
26pub enum ValveKeyValueType {
27 String(String), Object(Vec<ValveKeyValue>)
28}
29
30pub trait Serialize: Sized {
31 fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String>;
32}
33
34pub trait Parse: Sized {
35 fn parse(input: String, use_escape_sequences: bool) -> Result<Vec<Self>>;
36}
37
38impl Serialize for ValveKeyValue {
39 fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String> {
40 crate::serialize::serialize(vec![self.clone()], use_escape_sequences, indentation_steps)
41 }
42}
43
44impl Serialize for Vec<ValveKeyValue> {
45 fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String> {
46 crate::serialize::serialize(self.clone(), use_escape_sequences, indentation_steps)
47 }
48}
49
50impl Parse for ValveKeyValue {
51 fn parse(input: String, use_escape_sequences: bool) -> Result<Vec<Self>> {
52 crate::parse::parse(input, use_escape_sequences)
53 }
54}
55
56impl ValveKeyValue {
57 pub fn new(key: String, value: ValveKeyValueType) -> Self {
58 Self { key, value }
59 }
60}