Module: Numerics

Defined in:
lib/LIVR/Rules/Numerics.rb

Class Method Summary collapse

Class Method Details

.decimal(args) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/LIVR/Rules/Numerics.rb', line 20

def self.decimal(args)
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'NOT_DECIMAL' unless value.to_s =~ /^(?:\-?(?:[0-9]+\.[0-9]+)|(?:[0-9]+))$/
  end
end

.integers(args) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/LIVR/Rules/Numerics.rb', line 4

def self.integers(args)
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'NOT_INTEGER' unless value.to_s =~ /^\-?\d+$/
  end
end

.max_number(args) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/LIVR/Rules/Numerics.rb', line 36

def self.max_number(args)
  max_number = args.shift.to_f
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'TOO_HIGH' if value.to_f > max_number
  end
end

.min_number(args) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/LIVR/Rules/Numerics.rb', line 45

def self.min_number(args)
  min_number = args.shift.to_f
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'TOO_LOW' if value.to_f < min_number
  end
end

.number_between(args) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/LIVR/Rules/Numerics.rb', line 54

def self.number_between(args)
  min_number, max_number = args
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'TOO_LOW' if value.to_f < min_number
    return 'TOO_HIGH' if value.to_f > max_number
  end
end

.positive_decimal(args) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/LIVR/Rules/Numerics.rb', line 28

def self.positive_decimal(args)
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'NOT_POSITIVE_DECIMAL' unless value.to_s =~ /^(?:(?:[0-9]*\.[0-9]+)|(?:[1-9][0-9]*))$/
  end
end

.positive_integer(args) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/LIVR/Rules/Numerics.rb', line 12

def self.positive_integer(args)
  lambda do |value, unuse, unuse_|
    return if value.nil? or value.eql?('')
    return 'FORMAT_ERROR' unless Util.is_string_or_number?(value)
    return 'NOT_POSITIVE_INTEGER' unless value.to_s =~ /^\d+$/ and value.to_i > 0
  end
end