class PDD::Rule::MaxDuplicates
Rule
for max duplicates.
Public Class Methods
new(xml, max)
click to toggle source
Ctor.
xml
-
XML with puzzles
# File lib/pdd/rule/duplicates.rb, line 27 def initialize(xml, max) @xml = xml @max = max.to_i end
Public Instance Methods
errors()
click to toggle source
# File lib/pdd/rule/duplicates.rb, line 32 def errors @xml .xpath('//puzzle') .group_by { |p| p.xpath('body/text()').to_s } .map do |_, puzzles| next nil if puzzles.count <= @max "there are #{puzzles.count} duplicate(s) of the same puzzle: " + puzzles.map do |p| "#{p.xpath('file/text()')}:#{p.xpath('lines/text()')}" end.join(', ') + ", while maximum #{@max} duplicate is allowed" end.compact end