Skip to content

Commit

Permalink
Use type info when parsing type with description
Browse files Browse the repository at this point in the history
  • Loading branch information
ark0f committed Feb 26, 2024
1 parent 67c74c6 commit 2281bad
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -300,27 +300,41 @@ impl Type {
};

let ty = match Type::new(s) {
Type::Integer { .. } => Type::Integer {
default: default.as_deref().map(str::parse).transpose()?,
min: min.as_deref().map(str::parse).transpose()?,
max: max.as_deref().map(str::parse).transpose()?,
Type::Integer {
default: type_default,
min: type_min,
max: type_max,
} => Type::Integer {
default: default
.as_deref()
.map(str::parse)
.transpose()?
.or(type_default),
min: min.as_deref().map(str::parse).transpose()?.or(type_min),
max: max.as_deref().map(str::parse).transpose()?.or(type_max),
},
Type::Bool { .. } => Type::Bool {
Type::Bool {
default: type_default,
} => Type::Bool {
default: default
.as_deref()
.map(str::to_lowercase)
.as_deref()
.map(str::parse)
.transpose()?,
.transpose()?
.or(type_default),
},
Type::String { .. }
if default.is_some() || min.is_some() || max.is_some() || one_of.is_some() =>
{
Type::String {
default: type_default,
min_len: type_min_len,
max_len: type_max_len,
one_of: type_one_if,
} if default.is_some() || min.is_some() || max.is_some() || one_of.is_some() => {
Type::String {
default,
min_len: min.as_deref().map(str::parse).transpose()?,
max_len: max.as_deref().map(str::parse).transpose()?,
one_of: one_of.unwrap_or_default(),
default: default.or(type_default),
min_len: min.as_deref().map(str::parse).transpose()?.or(type_min_len),
max_len: max.as_deref().map(str::parse).transpose()?.or(type_max_len),
one_of: one_of.unwrap_or(type_one_if),
}
}
x => x,
Expand Down

0 comments on commit 2281bad

Please sign in to comment.