lib/ronin/formatting/extensions/html/string.rb in ronin-support-0.3.0 vs lib/ronin/formatting/extensions/html/string.rb in ronin-support-0.4.0.rc1
- old
+ new
@@ -150,19 +150,18 @@
# @api public
#
def js_unescape
unescaped = ''
- scan(/([\\%]u[0-9a-fA-F]{4}|[\\%][0-9a-fA-F]{2}|\\[btnfr"\\]|.)/).each do |match|
+ scan(/([\\%]u[0-9a-fA-F]{1,4}|[\\%][0-9a-fA-F]{1,2}|\\[btnfr"\\]|.)/).each do |match|
c = match[0]
- unescaped << case c.length
- when 6
- c[2,4].to_i(16)
- when 3
- c[1,2].to_i(16)
- when 2
+ unescaped << if JS_BACKSLASHED_CHARS.has_key?(c)
JS_BACKSLASHED_CHARS[c]
+ elsif (c.start_with?("\\u") || c.start_with?("%u"))
+ c[2..-1].to_i(16)
+ elsif (c.start_with?("\\") || c.start_with?("%"))
+ c[1..-1].to_i(16)
else
c
end
end