namespace :import do desc 'Import WCAG2.1 in german' task wcag21de: :environment do URL = 'https://outline-rocks.github.io/wcag/translations/WCAG21-de/' doc = Nokogiri::HTML5(URI.open(URL)) # standard = Standard.find_or_create_by(url: URL) # standard.name = 'WCAG 2.1' # standard.description = doc.css('#abstract p').map(&:to_s).join # standard.save! doc.css('section.principle').each do |principle_node| _principle_id = principle_node.attributes['id'].value _principle_title = principle_node.css('h2').first.content # principle = standard.principles.find_or_create_by(code: principle_id) # principle.name = principle_title.scan(/\d+\. (.*)/).first.last # principle.number = principle_title.scan(/(\d+)\..*/).first.last # principle.save! principle_node.css('section').each do |guideline_node| next unless guideline_node.css('h3').first guideline_title = guideline_node.css('h3').first.content guideline_text = guideline_node.css('p').first _guideline_number = guideline_title.scan(/Richtlinie \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').each do |sc| sc_title = sc.css('h4').first.content.scan(/Erfolgskriterium \d+\.\d+\.\d+(.*)/).first.last sc_level = sc.css('p').first.content.scan(/\(Stufe (A+)\)/).first.last # sc_hints = sc.css('div p').map { ReverseMarkdown.convert(_1.to_s) } # _sc_number = sc_title.scan(/Erfolgskriterium \d+\.\d+\.(\d+).*/).first.last success_criterion = Check.find_or_create_by(name: sc_title) success_criterion.name = sc_title text = "
#{guideline_text}
#{sc.css('p')[1]}" text += "

#{sc.css('dl').first&.to_s}

" if sc.css('dl').first success_criterion.success_criterion_html = "#{text}
".gsub('href="#', %(href="#{URL}#)) success_criterion.level = sc_level success_criterion.save! end end end @output end end