Skip to content

Commit

Permalink
Merge pull request #105 from kbknapp/patch-104
Browse files Browse the repository at this point in the history
im(arg_enum): allows ascii case insensitivity for enum variants
  • Loading branch information
kbknapp committed May 5, 2015
2 parents 8b7a5bc + 98910f8 commit 7880da6
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ macro_rules! value_t_or_exit {
match v.parse::<$t>() {
Ok(val) => val,
Err(e) => {
println!("{} isn't a valid {}\n{}\n{}\nPlease re-run with --help for \
println!("{} isn't a valid {}\n\t{}\n{}\nPlease re-run with --help for \
more information",
v,
stringify!($t),
Expand All @@ -254,7 +254,7 @@ macro_rules! value_t_or_exit {
match pv.parse::<$t>() {
Ok(rv) => tmp.push(rv),
Err(_) => {
println!("{} isn't a valid {}\n{}\nPlease re-run with --help for more \
println!("{} isn't a valid {}\n\t{}\nPlease re-run with --help for more \
information",
pv,
stringify!($t),
Expand Down Expand Up @@ -330,6 +330,8 @@ macro_rules! simple_enum {
/// Convenience macro to generate more complete enums with variants to be used as a type when
/// parsing arguments.
///
/// **NOTE:** Case insensitivity is supported for ASCII characters
///
/// These enums support pub (or not) and use of the #[derive()] traits
///
///
Expand Down Expand Up @@ -369,13 +371,15 @@ macro_rules! arg_enum {
type Err = String;

fn from_str(s: &str) -> Result<Self,Self::Err> {
use ::std::ascii::AsciiExt;
match s {
$(stringify!($v) => Ok($e::$v),)+
$(stringify!($v) |
_ if s.eq_ignore_ascii_case(stringify!($v)) => Ok($e::$v),)+
_ => Err({
let v = vec![
$(stringify!($v),)+
];
format!("valid:{}",
format!("valid values:{}",
v.iter().fold(String::new(), |a, i| {
a + &format!(" {}", i)[..]
}))
Expand Down

0 comments on commit 7880da6

Please sign in to comment.