Class: Ask::Skills::Validator
- Inherits:
-
Object
- Object
- Ask::Skills::Validator
- Defined in:
- lib/ask/skills/validator.rb
Defined Under Namespace
Classes: ValidationError
Constant Summary collapse
- NAME_PATTERN =
/\A[a-z0-9_.-]+\z/
Instance Method Summary collapse
-
#initialize(skills) ⇒ Validator
constructor
A new instance of Validator.
- #validate(skill) ⇒ Object
- #validate_all ⇒ Object
Constructor Details
#initialize(skills) ⇒ Validator
Returns a new instance of Validator.
8 9 10 |
# File 'lib/ask/skills/validator.rb', line 8 def initialize(skills) @skills = skills end |
Instance Method Details
#validate(skill) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ask/skills/validator.rb', line 25 def validate(skill) errors = [] errors << ValidationError.new(skill.name, "Name is empty") if skill.name.empty? errors << ValidationError.new(skill.name, "Description is empty") if skill.description.empty? errors << ValidationError.new(skill.name, "Instructions are empty") if skill.instructions.strip.empty? if !skill.name.empty? && skill.name !~ NAME_PATTERN errors << ValidationError.new(skill.name, "Name must be lowercase, with only letters, numbers, dots, hyphens, underscores") end errors end |
#validate_all ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/ask/skills/validator.rb', line 12 def validate_all errors = [] names = {} @skills.each do |skill| errors.concat(validate(skill)) if names[skill.name] errors << ValidationError.new(skill.name, "Duplicate skill name from #{names[skill.name]} and #{skill.source}") end names[skill.name] = skill.source end errors end |