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



11
12
13
14
# File 'lib/pdd/rule/roles.rb', line 11

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

Instance Method Details

#errorsObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pdd/rule/roles.rb', line 16

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