Class: SBSM::Validator

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

Constant Summary collapse

BOOLEAN =
[]
DATES =
[]
ENUMS =
{}
EVENTS =
[]
FILES =
[]
HTML =
[]
NUMERIC =
[]
PATTERNS =
{}
STRINGS =
[]
URIS =
[]
ALLOWED_TAGS =
%{a b br div font h1 h2 h3 i img li ol p pre span strong u ul}

Instance Method Summary collapse

Constructor Details

#initializeValidator

Returns a new instance of Validator.



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/sbsm/validator.rb', line 58

def initialize
	reset_errors()
	@boolean = self::class::BOOLEAN.dup
	@dates = self::class::DATES.dup
	@enums = self::class::ENUMS.dup
	@events = self::class::EVENTS.dup
	@files = self::class::FILES.dup
	@html = self::class::HTML.dup
	@numeric = self::class::NUMERIC.dup
	@patterns = self::class::PATTERNS.dup
	@strings = self::class::STRINGS.dup
	@uris = self::class::URIS.dup
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/sbsm/validator.rb', line 71

def error?
	!@errors.empty?
end

#perform_validation(key, value) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/sbsm/validator.rb', line 124

def perform_validation(key, value)
	value = value.to_s.strip
    # require 'pry'; binding.pry if /event/.match(key.to_s)
    begin
		if(key==:event)
			symbol = value.to_sym
			symbol if @events.include?(symbol)
		elsif(@boolean.include?(key))
			validate_boolean(key, value)
		elsif(@dates.include?(key))
			validate_date(key, value)
		elsif(@enums.has_key?(key))
			value if @enums[key].include?(value)
		elsif(@html.include?(key))
			validate_html(value)
		elsif(@patterns.include?(key))
			validate_pattern(key, value)
		elsif(@numeric.include?(key))
			validate_numeric(key, value)
		elsif(@uris.include?(key))
			validate_uri(key, value)
		elsif(@strings.include?(key))
			validate_string(value)
      elsif(@files.include?(key))
        StringIO.new(value)
		elsif(!Object.methods.include?(key) and self.respond_to?(key, true))
			self.send(key, value)
		end
	rescue InvalidDataError => e
      SBSM.debug("#{e.key} #{e}")
		@errors.store(e.key, e)
	end
end

#reset_errorsObject



74
75
76
# File 'lib/sbsm/validator.rb', line 74

def reset_errors
	@errors = {}
end

#set_pass(value1, value2) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/sbsm/validator.rb', line 77

def set_pass(value1, value2)
	valid1 = pass(value1.to_s)
	valid2 = pass(value2.to_s)
	if(value1.to_s.empty?)
		SBSM::InvalidDataError.new(:e_empty_pass, :pass, '')
	elsif(valid1 != valid2)
		SBSM::InvalidDataError.new(:e_non_matching_pass, :pass, '')
	else
		valid1
	end
end

#valid_values(key) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/sbsm/validator.rb', line 88

def valid_values(key)
	key = key.intern if key.is_a? String
	@enums.fetch(key)	{
		if(@boolean.include?(key))
			['false', 'true']
		end
	}
end

#validate(key, value) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/sbsm/validator.rb', line 96

def validate(key, value)
			value = value.pop if value.is_a? Array
			return nil if value.nil?
  # SBSM.info("validate #{key} #{value.class} #{value}")
  if value.is_a?(StringIO)
if(@files.include?(key))
	return validate_file(key, value)
else
	begin
		value = value.read
	rescue StandardError => e
		p e
	end
end
			elsif(value.is_a?(Array)) # TODO::
value = value[0]
if(@files.include?(key))
	return validate_file(key, value)
else
	begin
		value = value.read
	rescue StandardError => e
		#p e
	end
end
			end
  perform_validation(key, value)
end