Class: Dcc::Validate::Schematron::Rules::LanguageCodeDedup
- Inherits:
-
Base
- Object
- Dcc::Validate::Schematron::Rule
- Base
- Dcc::Validate::Schematron::Rules::LanguageCodeDedup
- Defined in:
- lib/dcc/validate/schematron/rules/language_code_dedup.rb
Overview
Errors on duplicate language codes in dcc:usedLangCodeISO639_1.
Instance Method Summary collapse
Methods inherited from Dcc::Validate::Schematron::Rule
Instance Method Details
#check_on(dcc) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/dcc/validate/schematron/rules/language_code_dedup.rb', line 10 def check_on(dcc) return [] unless Dcc::TypeGuards.has_attribute?(dcc, :administrative_data) core = safe_attr(dcc.administrative_data, :core_data) return [] if core.nil? used = Dcc::TypeGuards.has_attribute?(core, :used_lang_code_iso_639_1) ? Array(core.used_lang_code_iso_639_1) : [] used_strings = used.map(&:to_s) duplicates = used_strings.group_by(&:itself).select { |_k, v| v.size > 1 }.keys duplicates.map do |dup| issue( severity: :error, message: "dcc:usedLangCodeISO639_1 contains duplicate '#{dup}'", ) end end |