Skip to content
CAI
Software that uses CAICheck a score

wemake-services/recase

57.5

Adequate · 18 September 2026

720

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.