use crate::element::parser::ElementParser;
use crate::{
command::WebDynproCommand,
element::{definition::ElementDefinition, text::InputFieldDef},
error::{ElementError, WebDynproError},
};
pub struct InputFieldValueCommand {
element_def: InputFieldDef,
}
impl InputFieldValueCommand {
pub fn new(element_def: InputFieldDef) -> InputFieldValueCommand {
Self { element_def }
}
}
impl WebDynproCommand for InputFieldValueCommand {
type Result = String;
fn dispatch(&self, parser: &ElementParser) -> Result<Self::Result, WebDynproError> {
let text = parser
.element_from_def(&self.element_def)?
.value()
.map(str::to_string)
.ok_or_else(|| ElementError::NoSuchContent {
element: self.element_def.id().to_owned(),
content: "value of InputField".to_string(),
})?;
Ok(text)
}
}