eww/crates/yuck/src/config/var_definition.rs
2021-07-22 18:40:43 +02:00

32 lines
841 B
Rust

use std::collections::HashMap;
use simplexpr::{dynval::DynVal, SimplExpr};
use crate::{
error::AstResult,
parser::{
ast::Ast,
ast_iterator::AstIterator,
from_ast::{FromAst, FromAstElementContent},
},
};
use eww_shared_util::{AttrName, Span, VarName};
#[derive(Debug, PartialEq, Eq, Clone, serde::Serialize)]
pub struct VarDefinition {
pub name: VarName,
pub initial_value: DynVal,
pub span: Span,
}
impl FromAstElementContent for VarDefinition {
fn get_element_name() -> &'static str {
"defvar"
}
fn from_tail<I: Iterator<Item = Ast>>(span: Span, mut iter: AstIterator<I>) -> AstResult<Self> {
let (_, name) = iter.expect_symbol()?;
let (_, initial_value) = iter.expect_literal()?;
Ok(Self { name: VarName(name), initial_value, span })
}
}