lib/cc/analyzer/validator.rb (32 lines of code) (raw):
module CC
module Analyzer
module Validator
attr_reader :error
def initialize(document)
@document = document
validate
end
def validate
return @valid unless @valid.nil?
if document && invalid_messages.any?
@error = {
message: "#{invalid_messages.join("; ")}: `#{document}`.",
document: document,
}
@valid = false
else
@valid = true
end
end
alias valid? validate
private
attr_reader :document
def invalid_messages
@invalid_messages ||= self.class.validations.each_with_object([]) do |check, result|
validator = check.new(document)
result << validator.message unless validator.valid?
end
end
end
end
end