Class: FastGettext::Cache
- Inherits:
-
Object
- Object
- FastGettext::Cache
- Defined in:
- lib/fast_gettext/cache.rb
Instance Method Summary collapse
-
#[]=(key, value) ⇒ Object
TODO only used for tests, maybe if-else around it …
- #delete(key) ⇒ Object
- #fetch(key) ⇒ Object
-
#initialize ⇒ Cache
constructor
A new instance of Cache.
- #reload! ⇒ Object
-
#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.
Constructor Details
#initialize ⇒ Cache
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 |