class FastGettext::Cache
Public Class Methods
new()
click to toggle source
# File lib/fast_gettext/cache.rb, line 4 def initialize @store = {} reload! end
Public Instance Methods
[]=(key, value)
click to toggle source
TODO: only used for tests, maybe if-else around it …
# File lib/fast_gettext/cache.rb, line 19 def []=(key, value) @current[key] = value end
delete(key)
click to toggle source
# File lib/fast_gettext/cache.rb, line 34 def delete(key) @current.delete(key) end
fetch(key) { ||| false| ... }
click to toggle source
# File lib/fast_gettext/cache.rb, line 9 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!()
click to toggle source
# File lib/fast_gettext/cache.rb, line 38 def reload! @current = {} @current[""] = false end
switch_to(text_domain, locale)
click to toggle source
key performance gain:
-
no need to lookup locale on each translation
-
no need to lookup text_domain on each translation
-
super-simple hash lookup
# File lib/fast_gettext/cache.rb, line 27 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