Sha256: 8cd448a84a9ed5800c5b19d401fd313242a6caa362c1ca0d2b5d6636b323f708

Contents?: true

Size: 852 Bytes

Versions: 58

Compression:

Stored size: 852 Bytes

Contents

module Udongo::EmailVarsParser
  def replace_vars(content, vars, conditionals_allowed = true, prefix: nil)
    vars.each do |key, value|
      key = "#{prefix}.#{key}" if prefix.present?

      if value.respond_to?(:each)
        content = replace_vars(content, value, prefix: key)
      else
        content.gsub!(Regexp.new('\[' + key.to_s + '\]'), value.to_s)
      end
    end

    conditionals_allowed ? replace_ifs(content, vars) : content
  end

  def replace_ifs(content, vars)
    content.to_s.scan(/\[if\:([a-z\._\-]+)\](.*?)\[\/if\]/mi).each do |match|
      if_var = match.first
      if_content = match.last

      if vars[if_var] || vars[if_var.to_sym]
        content.gsub!("[if:#{if_var}]#{if_content}[/if]", if_content)
      else
        content.gsub!("[if:#{if_var}]#{if_content}[/if]", '')
      end
    end

    content
  end
end

Version data entries

58 entries across 58 versions & 1 rubygems

Version Path
udongo-7.3.5 lib/udongo/email_vars_parser.rb
udongo-7.3.4 lib/udongo/email_vars_parser.rb
udongo-7.3.3 lib/udongo/email_vars_parser.rb
udongo-7.3.2 lib/udongo/email_vars_parser.rb
udongo-7.3.1 lib/udongo/email_vars_parser.rb
udongo-7.2.1 lib/udongo/email_vars_parser.rb
udongo-7.2.0 lib/udongo/email_vars_parser.rb
udongo-7.1.3 lib/udongo/email_vars_parser.rb
udongo-7.1.2 lib/udongo/email_vars_parser.rb
udongo-7.1.1 lib/udongo/email_vars_parser.rb
udongo-7.1.0 lib/udongo/email_vars_parser.rb
udongo-7.0.4 lib/udongo/email_vars_parser.rb
udongo-7.0.3 lib/udongo/email_vars_parser.rb
udongo-7.0.2 lib/udongo/email_vars_parser.rb
udongo-7.0.1 lib/udongo/email_vars_parser.rb
udongo-7.0.0 lib/udongo/email_vars_parser.rb
udongo-6.6.3 lib/udongo/email_vars_parser.rb
udongo-6.6.2 lib/udongo/email_vars_parser.rb
udongo-6.6.1 lib/udongo/email_vars_parser.rb
udongo-6.6.0 lib/udongo/email_vars_parser.rb