castep-cell-parser 0.1.2

basic parser built on `pest` for `castep` `.cell` and `.param`
Documentation
use std::fmt::Display;

#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord)]
pub struct KeywordValue {
    order: usize,
    name: String,
    value: String,
}

impl Display for KeywordValue {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{} : {:>4}", self.name(), self.value())
    }
}

impl KeywordValue {
    pub fn new<V: Display>(order: usize, name: String, value: V) -> Self {
        Self {
            order,
            name,
            value: value.to_string(),
        }
    }

    pub fn order(&self) -> usize {
        self.order
    }

    pub fn name(&self) -> &str {
        &self.name
    }

    pub fn value(&self) -> &str {
        &self.value
    }

    pub fn set_value(&mut self, value: String) {
        self.value = value;
    }
}

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct SingleKeyword {
    order: usize,
    name: String,
}

impl SingleKeyword {
    pub fn new(order: usize, name: String) -> Self {
        Self { order, name }
    }

    pub fn name(&self) -> &str {
        &self.name
    }

    pub fn order(&self) -> usize {
        self.order
    }
}

impl Display for SingleKeyword {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.name)
    }
}