Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / plugins / mcollective / validator / typecheck_validator.rb
diff --git a/plugins/mcollective/validator/typecheck_validator.rb b/plugins/mcollective/validator/typecheck_validator.rb
new file mode 100644 (file)
index 0000000..1664aa9
--- /dev/null
@@ -0,0 +1,28 @@
+module MCollective
+  module Validator
+    class TypecheckValidator
+      def self.validate(validator, validation_type)
+        raise ValidatorError, "value should be a #{validation_type.to_s}" unless check_type(validator, validation_type)
+      end
+
+      def self.check_type(validator, validation_type)
+        case validation_type
+          when Class
+            validator.is_a?(validation_type)
+          when :integer
+            validator.is_a?(Fixnum)
+          when :float
+            validator.is_a?(Float)
+          when :number
+            validator.is_a?(Numeric)
+          when :string
+            validator.is_a?(String)
+          when :boolean
+            [TrueClass, FalseClass].include?(validator.class)
+          else
+            false
+        end
+      end
+    end
+  end
+end