File: attribute_normalizer.rb

package info (click to toggle)
ruby-attribute-normalizer 1.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 108 kB
  • sloc: ruby: 213; makefile: 7
file content (65 lines) | stat: -rw-r--r-- 1,981 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
require 'attribute_normalizer/normalizers/blank_normalizer'
require 'attribute_normalizer/normalizers/phone_normalizer'
require 'attribute_normalizer/normalizers/strip_normalizer'
require 'attribute_normalizer/normalizers/squish_normalizer'
require 'attribute_normalizer/normalizers/whitespace_normalizer'
require 'attribute_normalizer/normalizers/boolean_normalizer'

module AttributeNormalizer

  class MissingNormalizer < ArgumentError; end

  class << self
    attr_accessor :configuration
  end

  def self.configuration
    @configuration ||= Configuration.new
  end

  def self.configure
    yield(configuration)
  end


  class Configuration
    attr_accessor :default_normalizers, :normalizers, :default_attributes

    def default_normalizers=(normalizers)
      @default_normalizers = normalizers.is_a?(Array) ? normalizers : [ normalizers ]
    end

    def initialize

      @normalizers = {
        :blank      => AttributeNormalizer::Normalizers::BlankNormalizer,
        :phone      => AttributeNormalizer::Normalizers::PhoneNormalizer,
        :squish     => AttributeNormalizer::Normalizers::SquishNormalizer,
        :strip      => AttributeNormalizer::Normalizers::StripNormalizer,
        :whitespace => AttributeNormalizer::Normalizers::WhitespaceNormalizer,
        :boolean    => AttributeNormalizer::Normalizers::BooleanNormalizer
      }

      @default_normalizers = [ :strip, :blank ]

    end

  end

end


require 'attribute_normalizer/model_inclusions'
require 'attribute_normalizer/rspec_matcher'

def include_attribute_normalizer(class_or_module)
  return if class_or_module.include?(AttributeNormalizer)
  class_or_module.class_eval do
    extend AttributeNormalizer::ClassMethods
  end
end


include_attribute_normalizer(ActiveModel::Base)     if defined?(ActiveModel::Base)
include_attribute_normalizer(ActiveRecord::Base)    if defined?(ActiveRecord::Base)
include_attribute_normalizer(CassandraObject::Base) if defined?(CassandraObject::Base)