class AutoStripAttributes::Config
Attributes
filters[RW]
filters_enabled[RW]
filters_order[RW]
Public Class Methods
set_filter(filter, &block)
click to toggle source
# File lib/auto_strip_attributes.rb, line 81 def self.set_filter(filter, &block) if filter.is_a?(Hash) filter_name = filter.keys.first filter_enabled = filter.values.first else filter_name = filter filter_enabled = false end @filters[filter_name] = block @filters_enabled[filter_name] = filter_enabled # in case filter is redefined, we probably don't want to change the order @filters_order << filter_name if !@filters_order.include?(filter_name) end
setup(clear_previous: false, defaults: true, &block)
click to toggle source
# File lib/auto_strip_attributes.rb, line 48 def self.setup(clear_previous: false, defaults: true, &block) @filters, @filters_enabled, @filters_order = {}, {}, [] if clear_previous @filters ||= {} @filters_enabled ||= {} @filters_order ||= [] if defaults set_filter(convert_non_breaking_spaces: false) do |value| value.respond_to?(:gsub) ? value.gsub("\u00A0", " ") : value end set_filter(strip: true) do |value| value.respond_to?(:strip) ? value.strip : value end set_filter(nullify: true) do |value| # We check for blank? and empty? because rails uses empty? inside blank? # e.g. MiniTest::Mock.new() only responds to .blank? but not empty?, check tests for more info # Basically same as value.blank? ? nil : value (value.respond_to?(:'blank?') and value.respond_to?(:'empty?') and value.blank?) ? nil : value end set_filter(nullify_array: true) {|value| value} set_filter(squish: false) do |value| value = value.respond_to?(:gsub) ? value.gsub(/[[:space:]]+/, ' ') : value value.respond_to?(:strip) ? value.strip : value end set_filter(delete_whitespaces: false) do |value| value.respond_to?(:delete) ? value.delete(" \t") : value end end instance_eval(&block) if block_given? end