def xss_foliate(options = {})
callback_already_declared = \
if respond_to?(:before_validation_callback_chain)
before_validation_callback_chain.any? {|cb| cb.method == :xss_foliate_fields}
else
cbs = read_inheritable_attribute(:before_validation)
(! cbs.nil?) && cbs.any? {|cb| cb == :xss_foliate_fields}
end
unless callback_already_declared
before_validation :xss_foliate_fields
class_inheritable_reader :xss_foliate_options
include XssFoliate::InstanceMethods
end
options.keys.each do |option|
raise ArgumentError, "unknown xss_foliate option #{option}" unless VALID_OPTIONS.include?(option)
end
REAL_OPTIONS.each do |option|
options[option] = Array(options[option]).collect { |val| val.to_sym }
end
ALIASED_OPTIONS.each do |option, real|
options[real] += Array(options.delete(option)).collect { |val| val.to_sym } if options[option]
end
write_inheritable_attribute(:xss_foliate_options, options)
end