Class: BootstrapEmail::Converter::SupportUrlTokens

Inherits:
Base
  • Object
show all
Defined in:
lib/bootstrap-email/converters/support_url_tokens.rb

Constant Summary collapse

OPEN_BRACKETS =
CGI.escape('{{').freeze
OPEN_PERCENT =
(CGI.escape('{') + '%').freeze
CLOSE_BRACKETS =
CGI.escape('}}').freeze
CLOSE_PERCENT =
('%' + CGI.escape('}')).freeze

Instance Attribute Summary

Attributes inherited from Base

#doc

Class Method Summary collapse

Methods inherited from Base

build, #initialize

Constructor Details

This class inherits a constructor from BootstrapEmail::Converter::Base

Class Method Details

.replace(html) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bootstrap-email/converters/support_url_tokens.rb', line 11

def self.replace(html)
  regex = /((href|src)=("|'))(.*?((#{Regexp.quote(OPEN_BRACKETS)}|#{Regexp.quote(OPEN_PERCENT)}).*?(#{Regexp.quote(CLOSE_BRACKETS)}|#{Regexp.quote(CLOSE_PERCENT)})).*?)("|')/
  return unless regex.match?(html)

  inner_regex = /((#{Regexp.quote(OPEN_BRACKETS)}|#{Regexp.quote(OPEN_PERCENT)}).*?(#{Regexp.quote(CLOSE_BRACKETS)}|#{Regexp.quote(CLOSE_PERCENT)}))/

  html.gsub!(regex) do |_match|
    start_text = Regexp.last_match(1)
    middle_text = Regexp.last_match(4)
    end_text = Regexp.last_match(8)
    middle_text.gsub!(inner_regex) do |match|
      CGI.unescape(match)
    end
    "#{start_text}#{middle_text}#{end_text}"
  end
end