diff --git a/core/src/helpers/mod.rs b/core/src/helpers/mod.rs index 407dd3a..aae47f0 100644 --- a/core/src/helpers/mod.rs +++ b/core/src/helpers/mod.rs @@ -69,15 +69,29 @@ pub fn camel_to_snake_advanced(s: &str, numbers_attach_to_last_word: bool) -> St pub fn to_pascal_case(input: &str) -> String { let mut result = String::new(); let mut capitalize_next = true; + let mut prev_is_lowercase = false; - for ch in input.chars() { + for (i, ch) in input.chars().enumerate() { if ch == '_' { capitalize_next = true; + prev_is_lowercase = false; } else if capitalize_next { result.push(ch.to_ascii_uppercase()); capitalize_next = false; - } else { + prev_is_lowercase = false; + } else if ch.is_ascii_uppercase() && prev_is_lowercase { result.push(ch); + prev_is_lowercase = false; + } else if i > 0 && + ch.is_ascii_uppercase() && + !prev_is_lowercase && + input.chars().nth(i + 1).map_or(false, |next| next.is_ascii_lowercase()) + { + result.push(ch.to_ascii_lowercase()); + prev_is_lowercase = true; + } else { + result.push(ch.to_ascii_lowercase()); + prev_is_lowercase = ch.is_ascii_lowercase(); } } @@ -176,14 +190,15 @@ mod tests { #[test] fn test_with_acronyms() { - assert_eq!(to_pascal_case("ETH_USD_price"), "ETHUSDPrice"); + assert_eq!(to_pascal_case("ETH_USD_price"), "EthUsdPrice"); assert_eq!(to_pascal_case("http_request_handler"), "HttpRequestHandler"); } #[test] fn test_single_word() { assert_eq!(to_pascal_case("user"), "User"); - assert_eq!(to_pascal_case("CONSTANT"), "CONSTANT"); + assert_eq!(to_pascal_case("CONSTANT"), "Constant"); + assert_eq!(to_pascal_case("URI"), "Uri"); } #[test] diff --git a/documentation/docs/pages/docs/changelog.mdx b/documentation/docs/pages/docs/changelog.mdx index 79f62cd..29c9932 100644 --- a/documentation/docs/pages/docs/changelog.mdx +++ b/documentation/docs/pages/docs/changelog.mdx @@ -8,8 +8,6 @@ ### Bug fixes ------------------------------------------------- -fix: throw error if contract names are not unique -fix: allow non camel case types in generated code ### Breaking changes ------------------------------------------------- @@ -19,6 +17,21 @@ fix: allow non camel case types in generated code all release branches are deployed through `release/VERSION_NUMBER` branches +## 0.7.1-beta - 17th September 2024 + +github branch - https://github.com/joshstevens19/rindexer/tree/release/0.7.1 + +- linux binary - https://rindexer.xyz/releases/linux-amd64/0.7.1/rindexer_linux-amd64.tar.gz +- mac apple silicon binary - https://rindexer.xyz/releases/darwin-arm64/0.7.1/rindexer_darwin-arm64.tar.gz +- mac apple intel binary - https://rindexer.xyz/releases/darwin-amd64/0.7.1/rindexer_darwin-amd64.tar.gz +- windows binary - https://rindexer/releases.xyz/win32-amd64/0.7.1/rindexer_win32-amd64.zip + +### Bug fixes +------------------------------------------------- +fix: throw error if contract names are not unique +fix: allow non camel case types in generated code +fix: pascal case not parsing capitals full words correctly + ## 0.7.0-beta - 16th September 2024 github branch - https://github.com/joshstevens19/rindexer/tree/release/0.7.0 diff --git a/documentation/docs/public/releases/darwin-amd64/0.7.1/rindexer_darwin-amd64.tar.gz b/documentation/docs/public/releases/darwin-amd64/0.7.1/rindexer_darwin-amd64.tar.gz new file mode 100644 index 0000000..523f039 Binary files /dev/null and b/documentation/docs/public/releases/darwin-amd64/0.7.1/rindexer_darwin-amd64.tar.gz differ diff --git a/documentation/docs/public/releases/darwin-amd64/rindexer_darwin-amd64.tar.gz b/documentation/docs/public/releases/darwin-amd64/rindexer_darwin-amd64.tar.gz index 833cdb7..3a64ab9 100644 Binary files a/documentation/docs/public/releases/darwin-amd64/rindexer_darwin-amd64.tar.gz and b/documentation/docs/public/releases/darwin-amd64/rindexer_darwin-amd64.tar.gz differ diff --git a/documentation/docs/public/releases/darwin-arm64/0.7.1/rindexer_darwin-arm64.tar.gz b/documentation/docs/public/releases/darwin-arm64/0.7.1/rindexer_darwin-arm64.tar.gz new file mode 100644 index 0000000..cd38b55 Binary files /dev/null and b/documentation/docs/public/releases/darwin-arm64/0.7.1/rindexer_darwin-arm64.tar.gz differ diff --git a/documentation/docs/public/releases/darwin-arm64/rindexer_darwin-arm64.tar.gz b/documentation/docs/public/releases/darwin-arm64/rindexer_darwin-arm64.tar.gz index 8ca59f2..d448dcf 100644 Binary files a/documentation/docs/public/releases/darwin-arm64/rindexer_darwin-arm64.tar.gz and b/documentation/docs/public/releases/darwin-arm64/rindexer_darwin-arm64.tar.gz differ diff --git a/documentation/docs/public/releases/linux-amd64/0.7.1/rindexer_linux-amd64.tar.gz b/documentation/docs/public/releases/linux-amd64/0.7.1/rindexer_linux-amd64.tar.gz new file mode 100644 index 0000000..9adf4d7 Binary files /dev/null and b/documentation/docs/public/releases/linux-amd64/0.7.1/rindexer_linux-amd64.tar.gz differ diff --git a/documentation/docs/public/releases/linux-amd64/rindexer_linux-amd64.tar.gz b/documentation/docs/public/releases/linux-amd64/rindexer_linux-amd64.tar.gz index f30fe5b..9adf4d7 100644 Binary files a/documentation/docs/public/releases/linux-amd64/rindexer_linux-amd64.tar.gz and b/documentation/docs/public/releases/linux-amd64/rindexer_linux-amd64.tar.gz differ diff --git a/documentation/docs/public/releases/win32-amd64/0.7.1/rindexer_win32-amd64.zip b/documentation/docs/public/releases/win32-amd64/0.7.1/rindexer_win32-amd64.zip new file mode 100644 index 0000000..fcbf307 Binary files /dev/null and b/documentation/docs/public/releases/win32-amd64/0.7.1/rindexer_win32-amd64.zip differ diff --git a/documentation/docs/public/releases/win32-amd64/rindexer_win32-amd64.zip b/documentation/docs/public/releases/win32-amd64/rindexer_win32-amd64.zip index 3b7a2a8..fcbf307 100644 Binary files a/documentation/docs/public/releases/win32-amd64/rindexer_win32-amd64.zip and b/documentation/docs/public/releases/win32-amd64/rindexer_win32-amd64.zip differ