# File lib/loofah/xss_foliate.rb, line 121
      def xss_foliate(options = {})
        callback_already_declared = \
        if respond_to?(:before_validation_callback_chain)
          # Rails 2.1 and later
          before_validation_callback_chain.any? {|cb| cb.method == :xss_foliate_fields}
        else
          # Rails 2.0
          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