Class: AutoStripAttributes::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/auto_strip_attributes.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.filtersObject

Returns the value of attribute filters.



38
39
40
# File 'lib/auto_strip_attributes.rb', line 38

def filters
  @filters
end

.filters_enabledObject

Returns the value of attribute filters_enabled.



39
40
41
# File 'lib/auto_strip_attributes.rb', line 39

def filters_enabled
  @filters_enabled
end

.filters_orderObject

Returns the value of attribute filters_order.



40
41
42
# File 'lib/auto_strip_attributes.rb', line 40

def filters_order
  @filters_order
end

Class Method Details

.set_filter(filter, &block) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/auto_strip_attributes.rb', line 81

def self.set_filter(filter,&block)
  if filter.is_a?(Hash) then
    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 unless @filters_order.include? filter_name
end

.setup(user_options = nil, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/auto_strip_attributes.rb', line 43

def self.setup(user_options=nil,&block)
  options = {
      :clear => false,
      :defaults => true,
  }
  options = options.merge user_options if user_options.is_a?(Hash)

  @filters, @filters_enabled, @filters_order = {}, {}, [] if options[:clear]

  @filters ||= {}
  @filters_enabled ||= {}
  @filters_order ||= []

  if options[: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 :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