Changeset 5446
- Timestamp:
- 02/03/08 12:12:34 (3 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/rails_protection/trunk/rails_protection/lib/custom_sanitizer.rb
r4336 r5446 35 35 }.merge(options) 36 36 tag_stack = [] 37 ignore_tag_stack = [] 37 38 result = '' 38 39 if options[:rule].is_a?(Hash) … … 53 54 # html tag(close) 54 55 if match_data[2] 55 if match_data[2] =~ %r(</([a-zA-Z0-9 ]+)>)56 if match_data[2] =~ %r(</([a-zA-Z0-9:!]+)>) 56 57 match_tag = $1.downcase 57 58 if match_tag == tag_stack.last 58 59 tag_stack.pop 59 60 result << "</#{match_tag}>" 61 next 62 end 63 if ignore_tag_stack.include?(match_tag) 60 64 next 61 65 end … … 68 72 if match_data[3] 69 73 attr = {} 70 if match_data[3] =~ %r(<([a-zA-Z0-9 ]+)(.*)>)mn74 if match_data[3] =~ %r(<([a-zA-Z0-9:!]+)(.*)>)mn 71 75 match_tag = $1.downcase 72 76 sym_tag = match_tag.to_sym … … 97 101 end 98 102 end 99 result << "<#{match_tag}" 100 attr.each do |key, value| 101 value.sub!(Regexp.new("^(#{options[:class_prefix]})?"), options[:class_prefix]) if key == :class 102 result << %Q( #{key.to_s}="#{value}") 103 end 104 if rule[sym_tag][:empty_tag] 105 result << '/>' 103 if rule[sym_tag][:ignore] 104 ignore_tag_stack << match_tag 106 105 else 107 result << '>' 108 tag_stack << match_tag 106 result << "<#{match_tag}" 107 attr.each do |key, value| 108 value.sub!(Regexp.new("^(#{options[:class_prefix]})?"), options[:class_prefix]) if key == :class 109 result << %Q( #{key.to_s}="#{value}") 110 end 111 if rule[sym_tag][:empty_tag] 112 result << '/>' 113 else 114 result << '>' 115 tag_stack << match_tag 116 end 109 117 end 110 118 next
