1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 23:44:38 +00:00
azalea/azalea-block/block-macros/src/utils.rs
2022-06-25 17:37:29 -05:00

39 lines
1.1 KiB
Rust

pub fn combinations_of<T: Clone>(items: &[Vec<T>]) -> Vec<Vec<T>> {
let mut combinations = Vec::new();
if items.is_empty() {
return combinations;
};
if items.len() == 1 {
for item in &items[0] {
combinations.push(vec![item.clone()]);
}
return combinations;
};
for i in 0..items[0].len() {
let item = &items[0][i];
for other_combinations in combinations_of(&items[1..]) {
let mut combination = vec![item.clone()];
combination.extend(other_combinations);
combinations.push(combination);
}
}
combinations
}
pub fn to_pascal_case(s: &str) -> String {
let mut result = String::new();
let mut prev_was_underscore = true; // set to true by default so the first character is capitalized
for c in s.chars() {
if c == '_' {
prev_was_underscore = true;
} else if prev_was_underscore {
result.push(c.to_ascii_uppercase());
prev_was_underscore = false;
} else {
result.push(c);
}
}
result
}