polly 0.1.2

A templating language for Rust.
Documentation
use std::convert::Into;
use std::collections::BTreeMap;
use super::*;

#[derive(Clone, Debug, Default, PartialEq)]
pub struct FunctionCall {
    identifier: String,
    arguments: BTreeMap<String, ArgKey>,
}


impl FunctionCall {
    pub fn new(identifier: String) -> Self {
        FunctionCall { identifier: identifier.trim().to_owned(), ..Self::default() }
    }

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

    pub fn args(&self) -> &BTreeMap<String, ArgKey> {
        &self.arguments
    }

    pub fn add_value_arg<SK: AsRef<str>, SV: Into<String>>(&mut self, key: SK, value: SV) {
        self.arguments.insert(key.as_ref().trim().into(), ArgKey::Json(value.into()));
    }

    pub fn add_component_arg<SK: AsRef<str>, SV: Into<String>>(&mut self, key: SK, value: SV) {
        self.arguments.insert(key.as_ref().trim().into(), ArgKey::Comp(value.into()));
    }
}