wemake-services/recase
57.5
Adequate · 18 September 2026
720
lines of production code
Elixir
primary language
1
measurement over time
What this system is
Recase is an Elixir library designed for converting strings and atoms between various naming conventions, including camelCase, snake\_case, PascalCase, and kebab-case. It provides a unified API for these transformations and includes utilities for recursively converting keys in nested data structures. The system also offers helper functions for string replacement and supports configurable delimiters for flexible text processing.
Features
Added recursive enumerable key conversion and string replacement utilities
The library now includes new helper modules for advanced data transformation. Recase.Enumerable provides functions to recursively atomize, stringify, or custom-convert keys in maps and lists, with safe handling for non-enumerable values like DateTimes. Additionally, Recase.Replace offers a pipe-friendly wrapper around Regex.replace to simplify string substitution in pipelines.
lib/recase/utils · high confidence
Expanded case conversion API with new formats and atom support
The Recase library now exposes a comprehensive set of public functions for converting strings and atoms into various naming conventions. In addition to the existing PascalCase, camelCase, snake\_case, kebab-case, and CONSTANT\_CASE converters, this update adds support for PathCase, DotCase, SentenceCase, TitleCase, HeaderCase, and NameCase. The API has been unified to handle both string and atom inputs for most converters, and the module documentation has been updated to reflect the full range of available transformations.
lib · high confidence
Initial release of Recase string case conversion library
This change introduces the Recase library, a tool for converting strings between various case formats (such as PascalCase, camelCase, snake\_case, kebab-case, and others). The diff establishes the project structure with a new .formatter.exs for Elixir code formatting, a comprehensive CHANGELOG.md documenting versions from 0.1.0 to 0.9.1, and a detailed README.md that includes installation instructions, usage examples for all supported case conversions, and documentation for the Enumerable module which allows key conversion in data structures. It also adds standard project files like LICENSE.md, CONTRIBUTING.md, and an updated .gitignore.
(repo-wide) · high confidence
New string case converters and generic splitting logic
The library now supports additional string formatting styles, including camelCase, constantCase, dotCase, headerCase, kebabCase, nameCase, pathCase, sentenceCase, and titleCase, alongside the existing snakeCase and pascalCase. These new cases are implemented via dedicated modules in the \lib/recase/cases\ directory, which rely on a new \Recase.Generic\ module for splitting and rejoining strings. This generic logic introduces configurable delimiters via \Application.compile\_env/3\ and supports atom conversion, allowing users to convert text into a wider variety of standardized naming conventions.
lib/recase/cases · high confidence
Removals
Removal of placeholder case-conversion modules
The \lib/recase\ library has removed the initial placeholder implementations for \CamelCase\, \KebabCase\, \SnakeCase\, and \UpperCase\. These modules previously contained stub logic that returned hardcoded string literals rather than performing actual case conversions, so their removal eliminates these non-functional components from the public API.
lib/recase · high confidence
Behavioural changes
Removal of legacy config/config.exs file
The project has removed the legacy config/config.exs file, which previously used the deprecated Mix.Config module. This change eliminates the default configuration structure for the application, implying that configuration is now handled elsewhere (likely via mix.exs or removed entirely for this initial state).
config · high confidence
Test coverage
Added tests for Enumerable key conversion and Replace utility; Added tests for string case conversion functions; Expanded test coverage for text case conversion functions.
Dependencies
Upgrade to Elixir 1.10 and update development dependencies
The project now requires Elixir \~\> 1.10, dropping support for older versions. Development tooling has been significantly updated: Credo is bumped to \~\> 1.7, Dialyxir to \~\> 1.4, ExCoveralls to \~\> 0.18, and ExDoc to \~\> 0.40.0. Additionally, Castore \~\> 1.0 is added as a test dependency, and ExDoc is configured to generate both HTML and Markdown documentation formats.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 58.
Lenses
- Code Health 100
- Architecture 69
- Maturity 31
- Readiness 90
- Security 94
Changes since last survey
- 270 commits — 256 feature/other, 14 fixes
By area
- (root) — 192 commits
- (repo) — 32 commits
- .github/workflows — 21 commits
- lib/recase — 14 commits
- test/recase_test — 4 commits
- lib/recase.ex — 3 commits
- .github/FUNDING.yml — 2 commits
- .github/dependabot.yml — 2 commits
Notable commits
- fix: Bugfix: do not attempt to enumerate over DateTimes when converting values (#97)
- fix: Fix CI matrix (#163)
- fix: Fixes CI
- fix: Fixes CI
- fix: Fixes CI
- fix: Fixes CI
- fix: Fixes cache for actions
- fix: Fixes cache for actions
- fix: Fixes credo warning
- fix: Fixes docs rendering
- fix: Fixes readme
- fix: Fixes travis
- fix: Fixes travis, bumps elixir version, closes #7
- fix: Merge pull request #41 from ndreynolds/fix-quoted-keyword-warning
- change: Add Enumerable function that atomizes keys (#93)
- change: Add Header-Case (#73)
- change: Add markdown formatter to docs output (#253)
- change: Add positive lookahead for names that are also connectors (#184)
- change: Add sentence case
- change: Add title case tests
- …and 250 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
wemake-services/recase was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ec0b884bb72588d5e47cc4afb64c46924e8f56cd — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.