# identcasing Small Nim library for converting between common identifier casing styles. Supported styles: - `upperSnakeCase` - `lowerSnakeCase` - `titleSnakeCase` - `lowerKebabCase` - `upperKebabCase` - `trainCase` - `headerCase` as an alias for `trainCase` - `dotCase` - `lowerCamelCase` - `pascalCase` ## Example ```nim import identcasing echo convertCase("user_profile_id", lowerSnakeCase, lowerCamelCase) # userProfileId echo convertCase("HTTP_SERVER_PORT", upperSnakeCase, lowerKebabCase) # http-server-port let words = parseWords("oauth2ClientId", lowerCamelCase) echo words # @["oauth2", "client", "id"] echo renderWords(words, titleSnakeCase) # Oauth2_Client_Id echo lowerKebabCaseToLowerCamelCase("questionnaire-response-id") # questionnaireResponseId ``` ## Notes - The library parses identifiers into lowercase words and renders those words into a target style. - Camel parsing keeps digits attached to the preceding word, so identifiers like `oauth2Client`, `utf8String`, and `ipv6Address` stay intact. - Because of that rule, some values do not round-trip through camel case. For example, `PBM-123` becomes `pbm123`, and converting that back to `upperKebabCase` yields `PBM123`.