Class: Lore::Validation::Type_Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/lore/validation/type_validator.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#typecheck(code, value, nil_allowed = true) ⇒ Object



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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/lore/validation/type_validator.rb', line 11

def typecheck(code, value, nil_allowed=true)

	case code

	# bool
	when Lore::PG_BOOL
		if value == 't' || value == 'f' || 
		   value == '' && nil_allowed || value.nil? && nil_allowed
		then true else false end
	# bytea
	when Lore::PG_BYTEA
      true
	# int
	when Lore::PG_INT 
		if value.kind_of?(Integer) or 
			value.to_i.to_s == value or 
			value.nil? && nil_allowed or
			value == '' && nil_allowed
		then true else false end
	# smallint
	when Lore::PG_SMALLINT 
		if ((value.kind_of?(Integer) or value.to_i.to_s == value or 
			value.nil? && nil_allowed || value == '' && nil_allowed)) and
			value.to_i < 1024 and value.to_i > -1024
		then true else false end
	# decimal
	when Lore::PG_DECIMAL
		if ((value.kind_of?(Integer) or value.to_f.to_s == value or 
			value.nil? && nil_allowed || value == '' && nil_allowed)) 
		then true else false end
	# text
	when Lore::PG_TEXT 
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# varchar
	when Lore::PG_CHAR 
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# varchar
	when Lore::PG_CHARACTER
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# varchar
	when Lore::PG_VARCHAR 
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# timestamp
	when Lore::PG_TIME
		# TODO
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# timestamp with timezone
	when Lore::PG_TIMESTAMP
		# TODO
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# timestamp with timezone
	when Lore::PG_TIMESTAMP_TIMEZONE 
		# TODO
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end
	# date
	when Lore::PG_DATE
		# TODO
		if nil_allowed || !nil_allowed && !value.nil? && value != '' 
		then true else false end

    # character varying[]
    when Lore::PG_VCHAR_LIST
      true

	else 
      raise ::Exception.new('Unknown type code (' << code.inspect + ') for value ' << value.inspect + '. See README on how to add new types. ')
	end
	
end