1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use crate::{errors::DevrcResult, scope::Scope, template::render_string};

pub trait Evaluatable {
    // TODO: create default implementation for Variables and Environment variables
    // Evaluate variable body or environment variable
    fn evaluate(&self, name: &str, parent_scope: &Scope) -> DevrcResult<String>;
}

impl Evaluatable for String {
    fn evaluate(&self, name: &str, scope: &Scope) -> DevrcResult<String> {
        render_string(name, &self, scope)
    }
}

impl Evaluatable for &String {
    fn evaluate(&self, name: &str, scope: &Scope) -> DevrcResult<String> {
        render_string(name, &self, scope)
    }
}