use std::str::FromStr;
use super::super::{Args,ArgsError};
use super::super::validations::Validation;
pub trait HasParsedArgs: Send {
fn parsed_args(&self) -> &Args;
fn has_value(&self, opt_name: &str) -> bool {
self.parsed_args().has_value(opt_name)
}
fn optional_validated_value_of<T>(&self, opt_name: &str, validations: &[Box<Validation<T=T>>])
-> Result<Option<T>, ArgsError> where T: FromStr {
if self.has_value(opt_name) {
Ok(Some(try!(self.validated_value_of::<T>(opt_name, validations))))
} else {
Ok(None)
}
}
fn optional_value_of<T: FromStr>(&self, opt_name: &str) -> Result<Option<T>, ArgsError> {
if self.has_value(opt_name) {
Ok(Some(try!(self.value_of::<T>(opt_name))))
} else {
Ok(None)
}
}
fn validated_value_of<T>(&self, opt_name: &str, validations: &[Box<Validation<T=T>>])
-> Result<T, ArgsError> where T: FromStr {
self.parsed_args().validated_value_of::<T>(opt_name, validations)
}
fn value_of<T: FromStr>(&self, opt_name: &str) -> Result<T, ArgsError> {
self.parsed_args().value_of::<T>(opt_name)
}
}