Class: Ask::Skills::Validator

Inherits:
Object
  • Object
show all
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

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_allObject



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