lib/ver/plist.rb in ver-2010.02 vs lib/ver/plist.rb in ver-2010.08
- old
+ new
@@ -256,19 +256,31 @@
SANITIZE_REGEXP.each do |pattern, replacement|
value.gsub!(pattern, replacement)
end
- Regexp.new(value)
+ value2 = ''
+ group_index = 0
+ value.scan(/((?:[^\\(]+|\\[^\d])+)|(\\\d+)|(\(\??)/m) do |content, backref, capture|
+ if capture == '('
+ value2 << "(?<_#{group_index += 1}>"
+ elsif backref
+ value2 << "\\k<_#{backref[/\d+/]}>"
+ else
+ value2 << (content || capture)
+ end
+ end
+
+ Regexp.new(value2)
rescue RegexpError => ex
if ex.message =~ /^invalid multibyte escape:/
begin
- /#{value.force_encoding(Encoding::BINARY)}/n
+ /#{value2.force_encoding(Encoding::BINARY)}/n
rescue RegexpError => ex
- error(ex, original, value)
+ error(ex, original, value2)
end
else
- error(ex, original, value)
+ error(ex, original, value2)
end
end
def error(exception, original, modified)
puts ' [ exception ] '.center(80, '-')