Sha256: 659cd1cd523ebfac6bad0ecae5281a78752d6880c8946a7b3cce6a56b1d5b52e
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
require 'rltk' require 'rltk/ast' module ::Rubiks # == Rubiks ValidatedNode # # Provides a basic validation framework to ASTNodes. # # A minimal implementation could be: # # class NamedNode < ::Rubiks::ValidatedNode # name :name, String # # validates :name_present # # def name_present # errors << "Name required on NamedNode" if self.name.blank? # end # # def parse_name(name_value) # return if name_value.nil? # # self.name = name_value.to_s # end # end # # Which provides you with the following behavior: # # name_node = nameNode.new # name_node.valid? # => false # name_node.errors # => ["Name required on NamedNode"] # # name_node.name = 7 # name_node.valid? # => true # class ValidatedNode < ::RLTK::ASTNode class << self attr_accessor :validators alias_method :validator_methods, :validators end def self.validates(*validator_symbols) @validators ||= [] @validators << validator_symbols.flatten @validators.flatten! @validators.compact! @validators.uniq! return @validators end def self.inherited(klass) super klass.validators = self.validators.nil? ? [] : self.validators.dup end def errors @errors ||= [] end def valid? validate if errors.empty? return errors.empty? end def validate self.class.validator_methods.each do |validator_method| self.__send__(validator_method) if respond_to?(validator_method) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubiks-0.0.6 | lib/rubiks/nodes/validated_node.rb |
rubiks-0.0.5 | lib/rubiks/nodes/validated_node.rb |