# File lib/rufus/treechecker.rb, line 234 def check(sexp) if sexp.is_a?(Symbol) and m = @excluded_symbols[sexp] raise SecurityError.new(m) elsif sexp.is_a?(Array) # accepted patterns are evaluated before excluded patterns # if one is found the excluded patterns are skipped pats = @accepted_patterns[sexp.first] || [] return false if pats.find { |pat| check_pattern(sexp, pat) } pats = @excluded_patterns[sexp.first] || [] pats.each do |pat, msg| raise SecurityError.new(msg) if check_pattern(sexp, pat) end end true end