Sha256: 9b5e324f2016e92ec40ac3b9514268a12afb9d63c847b21bea354ad251f7ff1d
Contents?: true
Size: 921 Bytes
Versions: 8
Compression:
Stored size: 921 Bytes
Contents
module InlineSvg::TransformPipeline::Transformations class AriaAttributes < Transformation def transform(doc) doc = Nokogiri::XML::Document.parse(doc.to_html) svg = doc.at_css("svg") # Add role svg["role"] = "img" # Build aria-labelledby string aria_elements = [] doc.search("svg title").each do |element| aria_elements << element['id'] = element_id_for("title", element) end doc.search("svg desc").each do |element| aria_elements << element['id'] = element_id_for("desc", element) end if aria_elements.any? svg["aria-labelledby"] = aria_elements.join(" ") end doc end def element_id_for(base, element) if element['id'].nil? InlineSvg::IdGenerator.generate(base, element.text) else InlineSvg::IdGenerator.generate(element['id'], element.text) end end end end
Version data entries
8 entries across 8 versions & 1 rubygems