| Class | Gibberish::Translation |
| In: |
lib/gibberish_db.rb
|
| Parent: | ActiveRecord::Base |
| arguments | [RW] |
# File lib/gibberish_db.rb, line 35
35: def self.cache_key_for_language_and_key(lang,key)
36: lang_id = lang.is_a?(Language) ? lang.id : lang
37: ['find_by_language_id_and_key', lang_id, key.to_s[0..100]].join(':')
38: end
# File lib/gibberish_db.rb, line 26
26: def self.find_cached_by_language_and_key(lang,key)
27: cache_key = cache_key_for_language_and_key(lang,key)
28: cached = get_cache(cache_key) {nil}
29: unless cached
30: cached = Translation.find_by_language_id_and_key(lang.id,key.to_s)
31: set_cache(cache_key, cached)
32: end
33: return cached
34: end
# File lib/gibberish_db.rb, line 104
104: def self.suppress_html_wrapper?
105: @suppress_html
106: end
Execute a block of code while suppressing the HTML wrapping that would otherwise take place when invoking .to_html
# File lib/gibberish_db.rb, line 94
94: def self.suppressing_html_wrapping(&block)
95: old_val = @suppress_html
96: @suppress_html = true
97: begin
98: yield
99: ensure
100: @suppress_html = old_val
101: end
102: end
# File lib/gibberish_db.rb, line 65
65: def interpolate_with_hash(string, hash)
66: hash.inject(string) do |target, (search, replace)|
67: target.gsub("{#{search}}", replace)
68: end
69: end
# File lib/gibberish_db.rb, line 71
71: def interpolate_with_strings(string, strings)
72: string.gsub(/\{\w+\}/) { strings.shift }
73: end
# File lib/gibberish_db.rb, line 56
56: def interpolated_value
57: args = (arguments || []).dup
58: if args.last.is_a? Hash
59: interpolate_with_hash(self.value, args.last)
60: else
61: interpolate_with_strings(self.value, args)
62: end
63: end
# File lib/gibberish_db.rb, line 39
39: def invalidate_cache
40: self.class.clear_cache(self.class.cache_key_for_language_and_key(language_id, key))
41: end
# File lib/gibberish_db.rb, line 43
43: def method_missing(name, *args, &block)
44: return super if @attributes.include?(name.to_s)
45: if self.value.respond_to?(name)
46: if block_given?
47: self.interpolated_value.send(name, *args, &block)
48: else
49: self.interpolated_value.send(name, *args)
50: end
51: else
52: super
53: end
54: end
# File lib/gibberish_db.rb, line 83
83: def to_html
84: if Translation.suppress_html_wrapper?
85: interpolated_value
86: else
87: tagname = (self.format == "block") ? "div" : "span"
88: %Q{<#{tagname} class="translated key_#{key}" lang="#{language.name}">#{interpolated_value}</#{tagname}>}
89: end
90: end