Class: Origin::Smash

Inherits:
Hash
  • Object
show all
Defined in:
lib/origin/smash.rb

Overview

This is a smart hash for use with options and selectors.

Direct Known Subclasses

Options, Selector

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(aliases = {}, serializers = {}) {|_self| ... } ⇒ Smash

Initialize the new selector.

Examples:

Initialize the new selector.

Origin::Smash.new(aliases, serializers)

Parameters:

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

    A hash of mappings from aliases to the actual field names in the database.

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

    An optional hash of objects that are responsible for serializing values. The keys of the hash must be strings that match the field name, and the values must respond to #localized? and #evolve(object).

Yields:

  • (_self)

Yield Parameters:

  • _self (Origin::Smash)

    the object that the method was called on

Since:

  • 1.0.0



40
41
42
43
# File 'lib/origin/smash.rb', line 40

def initialize(aliases = {}, serializers = {})
  @aliases, @serializers = aliases, serializers
  yield(self) if block_given?
end

Instance Attribute Details

#aliasesObject (readonly)

Returns the value of attribute aliases.



9
10
11
# File 'lib/origin/smash.rb', line 9

def aliases
  @aliases
end

#aliases The aliases.(Thealiases.) ⇒ Object (readonly)



9
# File 'lib/origin/smash.rb', line 9

attr_reader :aliases, :serializers

#serializersObject (readonly)

Returns the value of attribute serializers.



9
10
11
# File 'lib/origin/smash.rb', line 9

def serializers
  @serializers
end

#serializers The serializers.(Theserializers.) ⇒ Object (readonly)



9
# File 'lib/origin/smash.rb', line 9

attr_reader :aliases, :serializers

Instance Method Details

#[](key) ⇒ Object

Get an item from the smart hash by the provided key.

Examples:

Get an item by the key.

smash["test"]

Parameters:

  • key (String)

    The key.

Returns:

  • (Object)

    The found object.

Since:

  • 2.0.0



55
56
57
# File 'lib/origin/smash.rb', line 55

def [](key)
  fetch(aliases[key]) { super }
end

#__deep_copy__Smash

Perform a deep copy of the smash.

Examples:

Perform a deep copy.

smash.__deep_copy__

Returns:

  • (Smash)

    The copied hash.

Since:

  • 1.0.0



19
20
21
22
23
24
25
# File 'lib/origin/smash.rb', line 19

def __deep_copy__
  self.class.new(aliases, serializers) do |copy|
    each_pair do |key, value|
      copy.store(key, value.__deep_copy__)
    end
  end
end