use crate::error::Result;
#[derive(Debug, PartialEq, Clone)]
pub struct ValveKeyValue {
pub key: String,
pub value: ValveKeyValueType
}
#[derive(Debug, PartialEq, Clone)]
pub enum ValveKeyValueType {
String(String), Object(Vec<ValveKeyValue>)
}
pub trait Serialize: Sized {
fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String>;
}
pub trait Parse: Sized {
fn parse(input: String, use_escape_sequences: bool) -> Result<Vec<Self>>;
}
impl Serialize for ValveKeyValue {
fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String> {
crate::serialize::serialize(vec![self.clone()], use_escape_sequences, indentation_steps)
}
}
impl Serialize for Vec<ValveKeyValue> {
fn serialize(&self, use_escape_sequences: bool, indentation_steps: usize) -> Result<String> {
crate::serialize::serialize(self.clone(), use_escape_sequences, indentation_steps)
}
}
impl Parse for ValveKeyValue {
fn parse(input: String, use_escape_sequences: bool) -> Result<Vec<Self>> {
crate::parse::parse(input, use_escape_sequences)
}
}
impl ValveKeyValue {
pub fn new(key: String, value: ValveKeyValueType) -> Self {
Self { key, value }
}
}