class Rack::AddressMunging::Strategy::Hex
The :Hex
munging strategy
Will replace email addresses and mailto href attributes values with an hexadecimal HTML entities alternative.
Public Instance Methods
apply(munged, original)
click to toggle source
# File lib/rack/address_munging/strategy/hex.rb, line 13 def apply(munged, original) original.each do |part| part = part.dup if part.frozen? part.gsub!(REGEXP_MAILTO) { |m| maybe_encode(m) } part.gsub!(REGEXP_EMAIL) { |m| maybe_encode(m) } munged.write part end end
Private Instance Methods
encode(str)
click to toggle source
# File lib/rack/address_munging/strategy/hex.rb, line 29 def encode(str) to_s(str).unpack('C*').map { |c| format('&#%<c>d;', c: c) }.join end
maybe_encode(string)
click to toggle source
# File lib/rack/address_munging/strategy/hex.rb, line 24 def maybe_encode(string) s = to_s(string) email?(s.gsub(/^mailto:/, '')) ? encode(s) : s end
to_s(string)
click to toggle source
Normalize a match as a string (gsub return ActiveSupport::SafeBuffer when ActiveSupport is loaded)
# File lib/rack/address_munging/strategy/hex.rb, line 35 def to_s(string) string.respond_to?(:to_str) ? string.to_str : string.try(:to_s) end