Sha256: e3ef84f59442a0447df194f9284e4865438ff5ea4b500ade67c1a08b2d69758c
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module It # Parses the string and replaces all interpolations accordingly. class Parser attr_accessor :string, :options INTERPOLATION_REGEXP = /%\{[^{}}]+\}/ def self.backend_options(options) options.with_indifferent_access.slice(:default, :locale, :scope) end def initialize(string, options) self.string = string self.options = options end def process handle_pluralization escape_string # For deep nesting, we repeat the process until we have no interpolations anymore while contains_interpolation? string.gsub!(INTERPOLATION_REGEXP) do |interpolation| Interpolation.new(interpolation, options).process end end string.html_safe end private def contains_interpolation? string =~ INTERPOLATION_REGEXP end def handle_pluralization return if !string.is_a?(Hash) || !options.key?('count') self.string = I18n.backend.send(:pluralize, locale, string, options['count']) end def locale options['locale'] || I18n.locale end def escape_string self.string = String.new(ERB::Util.h(string)) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
it-0.8.0 | lib/it/parser.rb |