Refactor and add message command

This commit is contained in:
Tobias Reisinger 2023-11-26 22:30:59 +01:00
parent e87bed00a2
commit fa959136be
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
8 changed files with 370 additions and 263 deletions

View file

@ -1,4 +1,5 @@
use std::fmt::{Debug, Display, Formatter};
use crate::utils::{decode_value, encode_value};
#[derive(Clone)]
pub struct Parameter {
@ -49,19 +50,15 @@ pub fn parameter_parse(params_str: &str) -> ParameterList {
impl From<(&str, &str)> for Parameter {
fn from(param: (&str, &str)) -> Parameter {
Parameter::new(String::from(param.0), String::from(param.1))
Parameter::new(param.0, param.1)
}
}
impl Parameter {
pub fn new(name: String, value: String) -> Parameter {
let value = value
.replace("\\s", " ")
.replace("\\p", "|");
pub fn new(name: &str, value: &str) -> Parameter {
Parameter {
name,
value,
name: String::from(name),
value: decode_value(value)
}
}
@ -81,6 +78,22 @@ impl Parameter {
pub fn to_i32(&self, default: i32) -> i32 {
self.value.parse::<i32>().unwrap_or(default)
}
pub fn list_to_string(parameter_list: ParameterList) -> String {
parameter_list
.into_iter()
.map(String::from)
.collect::<Vec<String>>()
.join(" ")
}
pub fn list_to_string_sep(parameter_list: ParameterList, sep: &str) -> String {
parameter_list
.into_iter()
.map(String::from)
.collect::<Vec<String>>()
.join(sep)
}
}
impl Display for Parameter {
@ -97,6 +110,12 @@ impl Debug for Parameter {
impl Default for Parameter {
fn default() -> Self {
Parameter::new(String::from(""), String::from(""))
Parameter::new("", "")
}
}
impl From<Parameter> for String {
fn from(value: Parameter) -> Self {
format!("{}={}", value.name, encode_value(&value.value))
}
}