Module: Eye::Dsl::Validation

Included in:
Checker, Notify, Trigger
Defined in:
lib/eye/dsl/validation.rb

Defined Under Namespace

Classes: Error

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#defaultsObject

Returns the value of attribute defaults.



11
12
13
# File 'lib/eye/dsl/validation.rb', line 11

def defaults
  @defaults
end

#should_besObject

Returns the value of attribute should_bes.



11
12
13
# File 'lib/eye/dsl/validation.rb', line 11

def should_bes
  @should_bes
end

#validatesObject

Returns the value of attribute validates.



11
12
13
# File 'lib/eye/dsl/validation.rb', line 11

def validates
  @validates
end

#variantsObject

Returns the value of attribute variants.



11
12
13
# File 'lib/eye/dsl/validation.rb', line 11

def variants
  @variants
end

Instance Method Details

#inherited(subclass) ⇒ Object



4
5
6
7
8
9
# File 'lib/eye/dsl/validation.rb', line 4

def inherited(subclass)
  subclass.validates = self.validates.clone
  subclass.should_bes = self.should_bes.clone
  subclass.defaults = self.defaults.clone
  subclass.variants = self.variants.clone
end

#param(param, types = [], should_be = false, default = nil, _variants = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/eye/dsl/validation.rb', line 18

def param(param, types = [], should_be = false, default = nil, _variants = nil)
  param = param.to_sym

  validates[param] = types
  should_bes << param if should_be
  defaults[param] = default
  variants[param] = _variants

  return if param == :do

  define_method "#{param}" do
    @options[param] || default
  end
end

#validate(options = {}) ⇒ Object



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
# File 'lib/eye/dsl/validation.rb', line 33

def validate(options = {})
  options.each do |param, value|
    param = param.to_sym
    types = validates[param]
    unless types
      if param != :type
        raise Error, "#{self.name} unknown param :#{param} value #{value.inspect}"
      end
    end

    if self.variants[param]
      if value && !value.is_a?(Proc)
        if value.is_a?(Array)
          if (value - self.variants[param]).present?
            raise Error, "#{value.inspect} should within #{self.variants[param].inspect}"
          end
        elsif !self.variants[param].include?(value)
          raise Error, "#{value.inspect} should within #{self.variants[param].inspect}"
        end
      end
    end

    next if types.blank?

    types = Array(types)
    good = types.any?{|type| value.is_a?(type) }
    raise Error, "#{self.name} bad param :#{param} value #{value.inspect}, type #{types.inspect}" unless good
  end

  should_bes.each do |param|
    raise Error, "#{self.name} for param :#{param} value should be" unless options[param.to_sym] || defaults[param.to_sym]
  end
end