Liking cljdoc? Tell your friends :D

boundary.core.utils.case-conversion

Generic case conversion utilities for API and data transformations.

This namespace provides reusable case conversion utilities that handle transformations between different naming conventions commonly used in APIs:

  • camelCase (JavaScript/JSON APIs)
  • kebab-case (Clojure idioms)
  • snake_case (Database/SQL)

These functions are designed to be nil-safe and handle nested data structures where appropriate.

Usage: (:require [boundary.core.utils.case-conversion :as case-conversion])

(case-conversion/camel-case->kebab-case-map {:userId "123" :tenantId "456"}) ;; => {:user-id "123" :tenant-id "456"}

Generic case conversion utilities for API and data transformations.

This namespace provides reusable case conversion utilities that handle
transformations between different naming conventions commonly used in APIs:
- camelCase (JavaScript/JSON APIs)
- kebab-case (Clojure idioms)
- snake_case (Database/SQL)

These functions are designed to be nil-safe and handle nested data structures
where appropriate.

Usage:
(:require [boundary.core.utils.case-conversion :as case-conversion])

(case-conversion/camel-case->kebab-case-map {:userId "123" :tenantId "456"})
;; => {:user-id "123" :tenant-id "456"}
raw docstring

camel-case->kebab-case-mapclj

(camel-case->kebab-case-map m)

Transform camelCase API keys to kebab-case internal keys (nil-safe).

This is a generic version that handles common API field transformations. For domain-specific transformations, compose this with additional transforms.

Args: m: Map with camelCase keyword keys, or nil

Returns: Map with kebab-case keyword keys, or nil if input is nil

Example: (camel-case->kebab-case-map {:userId "123" :tenantId "456"}) ;; => {:user-id "123" :tenant-id "456"}

Transform camelCase API keys to kebab-case internal keys (nil-safe).

This is a generic version that handles common API field transformations.
For domain-specific transformations, compose this with additional transforms.

Args:
  m: Map with camelCase keyword keys, or nil
  
Returns:
  Map with kebab-case keyword keys, or nil if input is nil
  
Example:
  (camel-case->kebab-case-map {:userId "123" :tenantId "456"})
  ;; => {:user-id "123" :tenant-id "456"}
sourceraw docstring

camel-case->kebab-case-stringclj

(camel-case->kebab-case-string s)

Convert a camelCase string to kebab-case string.

Args: s: camelCase string

Returns: kebab-case string

Example: (camel-case->kebab-case-string "userId") ;; => "user-id"

Convert a camelCase string to kebab-case string.

Args:
  s: camelCase string
  
Returns:
  kebab-case string
  
Example:
  (camel-case->kebab-case-string "userId") ;; => "user-id"
sourceraw docstring

deep-transform-keysclj

(deep-transform-keys transform-fn data)

Recursively transform all keys in a nested data structure using transform-fn.

Args: transform-fn: Function to transform each key data: Nested data structure (maps, vectors, lists)

Returns: Data structure with all keys transformed

Example: (deep-transform-keys camel-case->kebab-case-string {:userId "123" :userInfo {:firstName "John"}})

Recursively transform all keys in a nested data structure using transform-fn.

Args:
  transform-fn: Function to transform each key
  data: Nested data structure (maps, vectors, lists)
  
Returns:
  Data structure with all keys transformed
  
Example:
  (deep-transform-keys camel-case->kebab-case-string
                      {:userId "123" :userInfo {:firstName "John"}})
sourceraw docstring

kebab-case->camel-case-mapclj

(kebab-case->camel-case-map m)

Transform kebab-case internal keys to camelCase API keys (nil-safe).

This is a generic version that handles basic case conversion. For domain-specific transformations (like type conversions), compose this with additional transforms.

Args: m: Map with kebab-case keyword keys, or nil

Returns: Map with camelCase keyword keys, or nil if input is nil

Example: (kebab-case->camel-case-map {:user-id "123" :tenant-id "456"}) ;; => {:userId "123" :tenantId "456"}

Transform kebab-case internal keys to camelCase API keys (nil-safe).

This is a generic version that handles basic case conversion.
For domain-specific transformations (like type conversions), 
compose this with additional transforms.

Args:
  m: Map with kebab-case keyword keys, or nil
  
Returns:
  Map with camelCase keyword keys, or nil if input is nil
  
Example:
  (kebab-case->camel-case-map {:user-id "123" :tenant-id "456"})
  ;; => {:userId "123" :tenantId "456"}
sourceraw docstring

kebab-case->camel-case-stringclj

(kebab-case->camel-case-string s)

Convert a kebab-case string to camelCase string.

Args: s: kebab-case string

Returns: camelCase string

Example: (kebab-case->camel-case-string "user-id") ;; => "userId"

Convert a kebab-case string to camelCase string.

Args:
  s: kebab-case string
  
Returns:
  camelCase string
  
Example:
  (kebab-case->camel-case-string "user-id") ;; => "userId"
sourceraw docstring

kebab-case->snake-case-keywordclj

(kebab-case->snake-case-keyword kw)

Convert a kebab-case keyword to snake_case keyword.

Args: kw: kebab-case keyword

Returns: snake_case keyword

Example: (kebab-case->snake-case-keyword :created-at) ;; => :created_at

Convert a kebab-case keyword to snake_case keyword.

Args:
  kw: kebab-case keyword
  
Returns:
  snake_case keyword
  
Example:
  (kebab-case->snake-case-keyword :created-at) ;; => :created_at
sourceraw docstring

kebab-case->snake-case-mapclj

(kebab-case->snake-case-map m)

Transform kebab-case internal keys to snake_case database keys (nil-safe).

Args: m: Map with kebab-case keyword keys, or nil

Returns: Map with snake_case keyword keys, or nil if input is nil

Example: (kebab-case->snake-case-map {:created-at "2024-01-01" :user-id "123"}) ;; => {:created_at "2024-01-01" :user_id "123"}

Transform kebab-case internal keys to snake_case database keys (nil-safe).

Args:
  m: Map with kebab-case keyword keys, or nil
  
Returns:
  Map with snake_case keyword keys, or nil if input is nil
  
Example:
  (kebab-case->snake-case-map {:created-at "2024-01-01" :user-id "123"})
  ;; => {:created_at "2024-01-01" :user_id "123"}
sourceraw docstring

kebab-case->snake-case-stringclj

(kebab-case->snake-case-string s)

Convert a kebab-case string to snake_case string.

Args: s: kebab-case string

Returns: snake_case string

Example: (kebab-case->snake-case-string "created-at") ;; => "created_at"

Convert a kebab-case string to snake_case string.

Args:
  s: kebab-case string
  
Returns:
  snake_case string
  
Example:
  (kebab-case->snake-case-string "created-at") ;; => "created_at"
sourceraw docstring

snake-case->kebab-case-mapclj

(snake-case->kebab-case-map m)

Transform snake_case database keys to kebab-case internal keys (nil-safe).

Args: m: Map with snake_case keyword keys, or nil

Returns: Map with kebab-case keyword keys, or nil if input is nil

Example: (snake-case->kebab-case-map {:created_at "2024-01-01" :user_id "123"}) ;; => {:created-at "2024-01-01" :user-id "123"}

Transform snake_case database keys to kebab-case internal keys (nil-safe).

Args:
  m: Map with snake_case keyword keys, or nil
  
Returns:
  Map with kebab-case keyword keys, or nil if input is nil
  
Example:
  (snake-case->kebab-case-map {:created_at "2024-01-01" :user_id "123"})
  ;; => {:created-at "2024-01-01" :user-id "123"}
sourceraw docstring

snake-case->kebab-case-stringclj

(snake-case->kebab-case-string s)

Convert a snake_case string to kebab-case string.

Args: s: snake_case string

Returns: kebab-case string

Example: (snake-case->kebab-case-string "created_at") ;; => "created-at"

Convert a snake_case string to kebab-case string.

Args:
  s: snake_case string
  
Returns:
  kebab-case string
  
Example:
  (snake-case->kebab-case-string "created_at") ;; => "created-at"
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close