Import wcag 2.2 import

This commit is contained in:
david 2024-10-28 22:39:01 +01:00
parent 2a4100a7a9
commit 41dc3281ad

View file

@ -3,56 +3,40 @@ URL = "https://outline-rocks.github.io/wcag/translations/WCAG21-de/"
WCAG_22_EN_URL ="https://www.w3.org/TR/WCAG22/" WCAG_22_EN_URL ="https://www.w3.org/TR/WCAG22/"
def import_wcag22en def import_wcag22en
puts "import_wcag22en"
doc = Nokogiri::HTML5(URI.open(WCAG_22_EN_URL)) doc = Nokogiri::HTML5(URI.open(WCAG_22_EN_URL))
standards = [Standard.find_by(name_de: "WCAG 2.2"), Standard.find_by(name_de: "EN 301 549")]
standard = Standard.find_by(name_de: "WCAG 2.2")
doc.css("section.principle").each do |principle_node| doc.css("section.principle").each do |principle_node|
_principle_id = principle_node.attributes["id"].value _principle_id = principle_node.attributes["id"].value
principle_title = principle_node.css("h2").first.content.scan(/([a-zA-Z]+)/) principle_title = principle_node.css("h2").first.content.scan(/([a-zA-Z]+)/)
puts principle_title
principle = Principle.find_by!(name_en: principle_title) principle = Principle.find_by!(name_en: principle_title)
principle_node.css("section.guideline").each do |guideline_node| principle_node.css("section.guideline").each do |guideline_node|
# puts guideline_node.attr("id")
# puts guideline_node.css("h3").size
# next unless guideline_node.css("h3").first
puts "> guideline"
# debugger
# guideline_title = guideline_node.css("h3 bdi").first&.content
# guideline_text = guideline_node.css("p").first
# guideline_number = guideline_title.scan(/Guideline \d+\.(\d+).*/).first.last
# guideline = principle.guidelines.find_or_create_by(number: guideline_number)
# guideline.title = guideline_title.scan(/Richtlinie \d+\.\d+(.*)/).first.last
# guideline.text = guideline_text
# guideline.save!
guideline_node.css("section.guideline").each do |sc| guideline_node.css("section.guideline").each do |sc|
sc_title = sc.css("h4").first.content.scan(/Success Criterion \d+\.\d+\.\d+ (.*)/).first.last sc_number, sc_title = sc.css("h4")
sc_number = sc.css("h4").first.content.scan(/Success Criterion (\d+\.\d+\.\d+).*/).first.last .first
puts sc_number .content
sc_level = sc.css("p").first&.content&.scan(/\(Level (A+)\)/)&.first&.last .scan(/Success Criterion (\d+\.\d+\.\d+) (.*)/)
.first
sc_level = sc.css("p.conformance-level").first&.content&.scan(/\(Level (A+)\)/)&.first&.last
sc_url = sc.css("a.self-link").first.attr("href") sc_url = sc.css("a.self-link").first.attr("href")
sc_conformity_notice = sc.css("div.note p").to_a.map{"<p>#{_1.content}</p>"}.join("\n") sc_conformity_notice = sc.css("div.note p").to_a.map(&:to_s).join("\n")
text = "<div>#{sc.css('p').to_a[1..].map{"<p>#{_1.content}</p>"}.join}" full_text = sc.children
text += "<p>#{sc.css('dl').first&.to_s}</p>" if sc.css("dl").first .select { _1.class == Nokogiri::XML::Element }
.select { _1.attr("class").nil? || _1.attr("class") == "note" }
.reduce("") { |str, node| str + node.to_s }
# _sc_number = sc_title.scan(/Erfolgskriterium \d+\.\d+\.(\d+).*/).first.last
check = Check.find_or_initialize_by(external_number: sc_number) check = Check.find_or_initialize_by(external_number: sc_number)
check.name_de = sc_title new_standards = Set.new(check.standards)
check.principle = principle new_standards += standards
check.standards << standard unless check.standards.include?(standard) check.name_de = sc_title
check.applicable_to_app = check.applicable_to_web = true check.name_en = sc_title
check.external_number = sc_number check.principle = principle
check.external_url = "#{WCAG_22_EN_URL}#{sc_url}" check.standards = new_standards
check.conformity_level = sc_level&.to_sym check.applicable_to_app = check.applicable_to_web = true
check.external_number = sc_number
check.external_url = "#{WCAG_22_EN_URL}#{sc_url}"
check.conformity_level = sc_level&.to_sym
check.conformity_notice_de = sc_conformity_notice check.conformity_notice_de = sc_conformity_notice
check.criterion_de = "#{text}</div>".gsub('href="#', %(href="#{WCAG_22_EN_URL}#)) check.criterion_de = "<div>#{full_text}</div>".gsub('href="#', %(href="#{WCAG_22_EN_URL}#))
check.save! check.save!
end end
end end
@ -130,4 +114,11 @@ namespace :import do
# raise ActiveRecord::Rollback # raise ActiveRecord::Rollback
end end
end end
desc "Import EN 301 549"
task en301549de: :environment do
Check.transaction do
import_en301549de
end
end
end end