lib/itamae/node.rb in itamae-1.1.22 vs lib/itamae/node.rb in itamae-1.1.23
- old
+ new
@@ -1,11 +1,14 @@
require 'itamae'
require 'hashie'
require 'json'
+require 'schash'
module Itamae
class Node < Hashie::Mash
+ ValidationError = Class.new(StandardError)
+
def reverse_merge(other_hash)
Hashie::Mash.new(other_hash).merge(self)
end
def reverse_merge!(other_hash)
@@ -20,9 +23,19 @@
rescue NotImplementedError, NameError
val = nil
end
end
val
+ end
+
+ def validate!(&block)
+ errors = Schash::Validator.new(&block).validate(self)
+ unless errors.empty?
+ errors.each do |error|
+ Logger.error "'#{error.position.join('->')}' #{error.message}"
+ end
+ raise ValidationError
+ end
end
end
end