Merge pull request #1132 from Lireer/uppercase

Add UPPERCASE to rename_all
This commit is contained in:
David Tolnay 2017-12-30 22:18:20 -05:00 committed by GitHub
commit 9df8f5ecc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,6 +20,8 @@ pub enum RenameRule {
None, None,
/// Rename direct children to "lowercase" style. /// Rename direct children to "lowercase" style.
LowerCase, LowerCase,
/// Rename direct children to "UPPERCASE" style.
UPPERCASE,
/// Rename direct children to "PascalCase" style, as typically used for enum variants. /// Rename direct children to "PascalCase" style, as typically used for enum variants.
PascalCase, PascalCase,
/// Rename direct children to "camelCase" style. /// Rename direct children to "camelCase" style.
@ -39,6 +41,7 @@ impl RenameRule {
match *self { match *self {
None | PascalCase => variant.to_owned(), None | PascalCase => variant.to_owned(),
LowerCase => variant.to_ascii_lowercase(), LowerCase => variant.to_ascii_lowercase(),
UPPERCASE => variant.to_ascii_uppercase(),
CamelCase => variant[..1].to_ascii_lowercase() + &variant[1..], CamelCase => variant[..1].to_ascii_lowercase() + &variant[1..],
SnakeCase => { SnakeCase => {
let mut snake = String::new(); let mut snake = String::new();
@ -61,6 +64,7 @@ impl RenameRule {
pub fn apply_to_field(&self, field: &str) -> String { pub fn apply_to_field(&self, field: &str) -> String {
match *self { match *self {
None | LowerCase | SnakeCase => field.to_owned(), None | LowerCase | SnakeCase => field.to_owned(),
UPPERCASE => field.to_ascii_uppercase(),
PascalCase => { PascalCase => {
let mut pascal = String::new(); let mut pascal = String::new();
let mut capitalize = true; let mut capitalize = true;
@ -93,6 +97,7 @@ impl FromStr for RenameRule {
fn from_str(rename_all_str: &str) -> Result<Self, Self::Err> { fn from_str(rename_all_str: &str) -> Result<Self, Self::Err> {
match rename_all_str { match rename_all_str {
"lowercase" => Ok(LowerCase), "lowercase" => Ok(LowerCase),
"UPPERCASE" => Ok(UPPERCASE),
"PascalCase" => Ok(PascalCase), "PascalCase" => Ok(PascalCase),
"camelCase" => Ok(CamelCase), "camelCase" => Ok(CamelCase),
"snake_case" => Ok(SnakeCase), "snake_case" => Ok(SnakeCase),
@ -106,10 +111,11 @@ impl FromStr for RenameRule {
#[test] #[test]
fn rename_variants() { fn rename_variants() {
for &(original, lower, camel, snake, screaming, kebab, screaming_kebab) in &[ for &(original, lower, upper, camel, snake, screaming, kebab, screaming_kebab) in &[
( (
"Outcome", "Outcome",
"outcome", "outcome",
"OUTCOME",
"outcome", "outcome",
"outcome", "outcome",
"OUTCOME", "OUTCOME",
@ -119,17 +125,19 @@ fn rename_variants() {
( (
"VeryTasty", "VeryTasty",
"verytasty", "verytasty",
"VERYTASTY",
"veryTasty", "veryTasty",
"very_tasty", "very_tasty",
"VERY_TASTY", "VERY_TASTY",
"very-tasty", "very-tasty",
"VERY-TASTY", "VERY-TASTY",
), ),
("A", "a", "a", "a", "A", "a", "A"), ("A", "a", "A", "a", "a", "A", "a", "A"),
("Z42", "z42", "z42", "z42", "Z42", "z42", "Z42"), ("Z42", "z42", "Z42", "z42", "z42", "Z42", "z42", "Z42"),
] { ] {
assert_eq!(None.apply_to_variant(original), original); assert_eq!(None.apply_to_variant(original), original);
assert_eq!(LowerCase.apply_to_variant(original), lower); assert_eq!(LowerCase.apply_to_variant(original), lower);
assert_eq!(UPPERCASE.apply_to_variant(original), upper);
assert_eq!(PascalCase.apply_to_variant(original), original); assert_eq!(PascalCase.apply_to_variant(original), original);
assert_eq!(CamelCase.apply_to_variant(original), camel); assert_eq!(CamelCase.apply_to_variant(original), camel);
assert_eq!(SnakeCase.apply_to_variant(original), snake); assert_eq!(SnakeCase.apply_to_variant(original), snake);
@ -144,9 +152,10 @@ fn rename_variants() {
#[test] #[test]
fn rename_fields() { fn rename_fields() {
for &(original, pascal, camel, screaming, kebab, screaming_kebab) in &[ for &(original, upper, pascal, camel, screaming, kebab, screaming_kebab) in &[
( (
"outcome", "outcome",
"OUTCOME",
"Outcome", "Outcome",
"outcome", "outcome",
"OUTCOME", "OUTCOME",
@ -155,16 +164,18 @@ fn rename_fields() {
), ),
( (
"very_tasty", "very_tasty",
"VERY_TASTY",
"VeryTasty", "VeryTasty",
"veryTasty", "veryTasty",
"VERY_TASTY", "VERY_TASTY",
"very-tasty", "very-tasty",
"VERY-TASTY", "VERY-TASTY",
), ),
("a", "A", "a", "A", "a", "A"), ("a", "A", "A", "a", "A", "a", "A"),
("z42", "Z42", "z42", "Z42", "z42", "Z42"), ("z42", "Z42", "Z42", "z42", "Z42", "z42", "Z42"),
] { ] {
assert_eq!(None.apply_to_field(original), original); assert_eq!(None.apply_to_field(original), original);
assert_eq!(UPPERCASE.apply_to_field(original), upper);
assert_eq!(PascalCase.apply_to_field(original), pascal); assert_eq!(PascalCase.apply_to_field(original), pascal);
assert_eq!(CamelCase.apply_to_field(original), camel); assert_eq!(CamelCase.apply_to_field(original), camel);
assert_eq!(SnakeCase.apply_to_field(original), original); assert_eq!(SnakeCase.apply_to_field(original), original);