caser 1.0.0

Change text between PascalCase, camelCase, and snake_case
Documentation
use caser::Case;

fn case(string: &str) -> Option<Case> {
    Some(match string {
        "pascal" => Case::PascalCase,
        "camel" => Case::CamelCase,
        "snake" => Case::SnakeCase,
        _ => return None
    })
}

const HELP: &'static str = r"Usage: caser CASE term [terms]

Where CASE is one of pascal, camel, or snake.

For reference:

ThisIsPascalCase
thisIsCamelCase
this_is_snake_case

Terms are converted and printed one per line.

Example: `caser snake ConvertToSnakeCase` would print `convert_to_snake_case`";

fn main() {
    let mut args = std::env::args().into_iter().skip(1);

    let first_arg = args.next().unwrap();

    if first_arg == "-h" || first_arg == "--help" {
        println!("{}", HELP);
        return;
    }

    let case = case(&first_arg).unwrap_or_else(|| {
        println!("{}\nUnknown case '{}'", HELP, first_arg);
        std::process::exit(1)
    });

    for term in args {
        println!("{}", case.transform(&term));
    }
}