Class: Sparrow::Strategies::KeyTransformation::CamelizeKey

Inherits:
Object
  • Object
show all
Defined in:
lib/sparrow/strategies/key_transformation/camelize_key.rb

Overview

Strategy class for converting JSON to a camelized format. Meaning snake_case => snakeCase

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CamelizeKey

Initialize a new CamelizeKey strategy

Parameters:

  • options (Hash) (defaults to: {})

    camelize options

Options Hash (options):

  • :strategy (Symbol) — default: 'lower'

    defines the camelizing strategy type. Defines how to camelize, which comes down to starting with a lowercased character or with an uppercased character. Thus possible values are :lower and :upper.

  • :camelize_ignore_uppercase_keys (Boolean) — default: true

    Defines if already completely uppercased keys should not be transformed. I.e. JSON stays JSON if this is set to true. If it is set to false JSON will be transformed to Json.



32
33
34
35
36
# File 'lib/sparrow/strategies/key_transformation/camelize_key.rb', line 32

def initialize(options = {})
  self.strategy                       = options.fetch(:strategy, :lower)
  self.camelize_ignore_uppercase_keys =
      options.fetch(:camelize_ignore_uppercase_keys, true)
end

Instance Attribute Details

#camelize_ignore_uppercase_keysBoolean

Returns Defines whether complete uppercased keys will be transformed.

Returns:

  • (Boolean)

    Defines whether complete uppercased keys will be transformed

See Also:



17
18
19
# File 'lib/sparrow/strategies/key_transformation/camelize_key.rb', line 17

def camelize_ignore_uppercase_keys
  @camelize_ignore_uppercase_keys
end

#strategySymbol

Returns the camelizing strategy.

Returns:

  • (Symbol)

    the camelizing strategy

See Also:



11
12
13
# File 'lib/sparrow/strategies/key_transformation/camelize_key.rb', line 11

def strategy
  @strategy
end

Instance Method Details

#transform_key(key) ⇒ String

Transform the given key to camelCase based on the configuration options set on initialization.

Parameters:

  • key (String, #to_s)

    the key value to be transformed

Returns:

  • (String)

    the transformed key

See Also:



44
45
46
47
48
49
50
51
# File 'lib/sparrow/strategies/key_transformation/camelize_key.rb', line 44

def transform_key(key)
  key = key.to_s
  if camelize_ignore_uppercase_keys && key.upcase == key
    key
  else
    key.camelize(strategy)
  end
end