use serde::{Deserialize, Serialize};
use super::arguments::Arguments;
use super::command_kind::CommandKind;
use super::parameters::Parameters;
use super::range::Range;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Tag {
pub command: CommandKind,
pub parameters: Parameters,
pub arguments: Arguments,
pub range: Range,
}
impl Tag {
pub fn integrate(mut self, other: &Parameters) -> Self {
self.parameters = self.parameters.integrate(other);
self
}
}
impl ToString for Tag {
fn to_string(&self) -> String {
format!(
"@{} {} {}",
self.command.to_string(),
self.parameters.to_string(),
self.arguments.to_string(),
)
}
}