Class: FastGettext::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/fast_gettext/cache.rb

Instance Method Summary collapse

Constructor Details

#initializeCache

Returns a new instance of Cache.



3
4
5
6
# File 'lib/fast_gettext/cache.rb', line 3

def initialize
  @store = {}
  reload!
end

Instance Method Details

#[]=(key, value) ⇒ Object

TODO only used for tests, maybe if-else around it …



18
19
20
# File 'lib/fast_gettext/cache.rb', line 18

def []=(key, value)
  @current[key] = value
end

#delete(key) ⇒ Object



33
34
35
# File 'lib/fast_gettext/cache.rb', line 33

def delete(key)
  @current.delete(key)
end

#fetch(key) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/fast_gettext/cache.rb', line 8

def fetch(key)
  translation = @current[key]
  if translation.nil? # uncached
    @current[key] = yield || false # TODO get rid of this false hack and cache :missing
  else
    translation
  end
end

#reload!Object



37
38
39
40
# File 'lib/fast_gettext/cache.rb', line 37

def reload!
  @current = {}
  @current[""] = false
end

#switch_to(text_domain, locale) ⇒ Object

key performance gain:

  • no need to lookup locale on each translation

  • no need to lookup text_domain on each translation

  • super-simple hash lookup



26
27
28
29
30
31
# File 'lib/fast_gettext/cache.rb', line 26

def switch_to(text_domain, locale)
  @store[text_domain] ||= {}
  @store[text_domain][locale] ||= {}
  @store[text_domain][locale][""] = false # ignore gettext meta key when translating
  @current = @store[text_domain][locale]
end