generated from mitchell/rust_template
modify parse options
This commit is contained in:
parent
5d0b4a7449
commit
fb47d553e7
@ -237,7 +237,7 @@ impl<FD: FormToolData, FS: FormStyle, C: ControlData, FDT> ControlBuilder<FD, FS
|
|||||||
/// The parse and unparse functions define how to turn what the user
|
/// The parse and unparse functions define how to turn what the user
|
||||||
/// types in the form into what is stored in the form data struct and
|
/// types in the form into what is stored in the form data struct and
|
||||||
/// vice versa.
|
/// vice versa.
|
||||||
pub fn custom_parse(
|
pub fn parse_custom(
|
||||||
mut self,
|
mut self,
|
||||||
parse_fn: impl ParseFn<C::ReturnType, FDT>,
|
parse_fn: impl ParseFn<C::ReturnType, FDT>,
|
||||||
unparse_fn: impl UnparseFn<C::ReturnType, FDT>,
|
unparse_fn: impl UnparseFn<C::ReturnType, FDT>,
|
||||||
@ -254,6 +254,76 @@ impl<FD: FormToolData, FS: FormStyle, C: ControlData, FDT> ControlBuilder<FD, FS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<FD, FS, C, FDT> ControlBuilder<FD, FS, C, FDT>
|
||||||
|
where
|
||||||
|
FD: FormToolData,
|
||||||
|
FS: FormStyle,
|
||||||
|
C: ControlData,
|
||||||
|
FDT: TryFrom<<C as ControlData>::ReturnType>,
|
||||||
|
<FDT as TryFrom<<C as ControlData>::ReturnType>>::Error: ToString,
|
||||||
|
<C as ControlData>::ReturnType: From<FDT>,
|
||||||
|
{
|
||||||
|
/// Sets the parse functions to use the [`TryFrom`] and [`From`] traits
|
||||||
|
/// for parsing and unparsing respectively.
|
||||||
|
///
|
||||||
|
/// The parse and unparse functions define how to turn what the user
|
||||||
|
/// types in the form into what is stored in the form data struct and
|
||||||
|
/// vice versa.
|
||||||
|
pub fn parse_from(mut self) -> Self {
|
||||||
|
self.parse_fn = Some(Box::new(|control_return_value| {
|
||||||
|
FDT::try_from(control_return_value).map_err(|e| e.to_string())
|
||||||
|
}));
|
||||||
|
self.unparse_fn = Some(Box::new(|field| {
|
||||||
|
<C as ControlData>::ReturnType::from(field)
|
||||||
|
}));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<FD, FS, C, FDT> ControlBuilder<FD, FS, C, FDT>
|
||||||
|
where
|
||||||
|
FD: FormToolData,
|
||||||
|
FS: FormStyle,
|
||||||
|
C: ControlData<ReturnType = String>,
|
||||||
|
FDT: FromStr + ToString,
|
||||||
|
<FDT as FromStr>::Err: ToString,
|
||||||
|
{
|
||||||
|
/// Sets the parse functions to use the [`FromStr`] [`ToString`] and traits
|
||||||
|
/// for parsing and unparsing respectively. To trim the string before parsing,
|
||||||
|
/// see [`parse_trimed_string`].
|
||||||
|
///
|
||||||
|
/// The parse and unparse functions define how to turn what the user
|
||||||
|
/// types in the form into what is stored in the form data struct and
|
||||||
|
/// vice versa.
|
||||||
|
pub fn parse_string(mut self) -> Self {
|
||||||
|
self.parse_fn = Some(Box::new(|control_return_value| {
|
||||||
|
control_return_value
|
||||||
|
.parse::<FDT>()
|
||||||
|
.map_err(|e| e.to_string())
|
||||||
|
}));
|
||||||
|
self.unparse_fn = Some(Box::new(|field| field.to_string()));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets the parse functions to use the [`FromStr`] [`ToString`] and traits
|
||||||
|
/// for parsing and unparsing respectively, similar to [`parse_string`].
|
||||||
|
/// However, this method trims the string before parsing.
|
||||||
|
///
|
||||||
|
/// The parse and unparse functions define how to turn what the user
|
||||||
|
/// types in the form into what is stored in the form data struct and
|
||||||
|
/// vice versa.
|
||||||
|
pub fn parse_trimmed_string(mut self) -> Self {
|
||||||
|
self.parse_fn = Some(Box::new(|control_return_value| {
|
||||||
|
control_return_value
|
||||||
|
.trim()
|
||||||
|
.parse::<FDT>()
|
||||||
|
.map_err(|e| e.to_string())
|
||||||
|
}));
|
||||||
|
self.unparse_fn = Some(Box::new(|field| field.to_string()));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<FD: FormToolData, FS: FormStyle, C: ValidatedControlData, FDT> ControlBuilder<FD, FS, C, FDT> {
|
impl<FD: FormToolData, FS: FormStyle, C: ValidatedControlData, FDT> ControlBuilder<FD, FS, C, FDT> {
|
||||||
/// Sets the validation function for this control
|
/// Sets the validation function for this control
|
||||||
///
|
///
|
||||||
@ -273,54 +343,3 @@ impl<FD: FormToolData, FS: FormStyle, C: ValidatedControlData, FDT> ControlBuild
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<FD, FS, C, FDT> ControlBuilder<FD, FS, C, FDT>
|
|
||||||
where
|
|
||||||
FD: FormToolData,
|
|
||||||
FS: FormStyle,
|
|
||||||
C: ControlData,
|
|
||||||
FDT: TryFrom<<C as ControlData>::ReturnType>,
|
|
||||||
<FDT as TryFrom<<C as ControlData>::ReturnType>>::Error: ToString,
|
|
||||||
<C as ControlData>::ReturnType: From<FDT>,
|
|
||||||
{
|
|
||||||
/// Sets the parse functions to use the [`TryFrom`] and [`From`] traits
|
|
||||||
/// for parsing and unparsing respectively.
|
|
||||||
///
|
|
||||||
/// The parse and unparse functions define how to turn what the user
|
|
||||||
/// types in the form into what is stored in the form data struct and
|
|
||||||
/// vice versa.
|
|
||||||
pub fn default_parse(mut self) -> Self {
|
|
||||||
self.parse_fn = Some(Box::new(|control_return_value| {
|
|
||||||
FDT::try_from(control_return_value).map_err(|e| e.to_string())
|
|
||||||
}));
|
|
||||||
self.unparse_fn = Some(Box::new(|field| {
|
|
||||||
<C as ControlData>::ReturnType::from(field)
|
|
||||||
}));
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<FD, FS, C, FDT> ControlBuilder<FD, FS, C, FDT>
|
|
||||||
where
|
|
||||||
FD: FormToolData,
|
|
||||||
FS: FormStyle,
|
|
||||||
C: ControlData<ReturnType = String>,
|
|
||||||
FDT: FromStr + ToString,
|
|
||||||
<FDT as FromStr>::Err: ToString,
|
|
||||||
{
|
|
||||||
/// Sets the parse functions to use the [`FromStr`] [`ToString`] and traits
|
|
||||||
/// for parsing and unparsing respectively.
|
|
||||||
///
|
|
||||||
/// The parse and unparse functions define how to turn what the user
|
|
||||||
/// types in the form into what is stored in the form data struct and
|
|
||||||
/// vice versa.
|
|
||||||
pub fn string_parse(mut self) -> Self {
|
|
||||||
self.parse_fn = Some(Box::new(|control_return_value| {
|
|
||||||
control_return_value
|
|
||||||
.parse::<FDT>()
|
|
||||||
.map_err(|e| e.to_string())
|
|
||||||
}));
|
|
||||||
self.unparse_fn = Some(Box::new(|field| field.to_string()));
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user