Class: SnakyHash::Snake

Inherits:
Module
  • Object
show all
Defined in:
lib/snaky_hash/snake.rb

Overview

Note:

Unlike Hashie::Mash, this implementation allows for both String and Symbol key types

Creates a module that provides key conversion functionality when included

Defined Under Namespace

Modules: SnakyModulizer

Instance Method Summary collapse

Constructor Details

#initialize(key_type: :string, serializer: false) ⇒ Snake

Initialize a new Snake module

Parameters:

  • key_type (Symbol) (defaults to: :string)

    the type to convert keys to (:string or :symbol)

  • serializer (Boolean) (defaults to: false)

    whether to include serialization capabilities

Raises:

  • (ArgumentError)

    if key_type is not :string or :symbol



30
31
32
33
34
# File 'lib/snaky_hash/snake.rb', line 30

def initialize(key_type: :string, serializer: false)
  super()
  @key_type = key_type
  @serializer = serializer
end

Instance Method Details

#included(base) ⇒ void

This method returns an undefined value.

Includes appropriate conversion methods into the base class

Parameters:

  • base (Class)

    the class including this module



40
41
42
43
44
45
46
# File 'lib/snaky_hash/snake.rb', line 40

def included(base)
  conversions_module = SnakyModulizer.to_mod(@key_type)
  base.include(conversions_module)
  if @serializer
    base.extend(SnakyHash::Serializer)
  end
end