Class: PDD::Rule::Roles::Available

Inherits:
Object
  • Object
show all
Defined in:
lib/pdd/rule/roles.rb

Overview

Rule for available roles checking.

Instance Method Summary collapse

Constructor Details

#initialize(xml, roles) ⇒ Available

Ctor.

xml

XML with puzzles



28
29
30
31
# File 'lib/pdd/rule/roles.rb', line 28

def initialize(xml, roles)
  @xml = xml
  @roles = roles.split(',')
end

Instance Method Details

#errorsObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/pdd/rule/roles.rb', line 33

def errors
  @xml.xpath('//puzzle').map do |p|
    role = p.xpath('role/text()').to_s
    next nil if @roles.include?(role)

    "puzzle #{p.xpath('file/text()')}:#{p.xpath('lines/text()')}" +
      if role.empty?
        " doesn't define any role"\
        ", while one of these roles is required: #{@roles}"
      else
        " defines role #{role}"\
        ", while only these roles are allowed: #{@roles}"
      end
  end.compact
end