Sha256: 5dbfb7837fa0636d4d6c47fd26ba47ceff513cfc316cbf12ddde38ae93bd41ff

Contents?: true

Size: 593 Bytes

Versions: 2

Compression:

Stored size: 593 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 { |_| aria_elements << "title" }
      doc.search("svg desc").each { |_| aria_elements << "desc" }
      aria_elements.uniq!

      if aria_elements.any?
        svg["aria-labelledby"] = aria_elements.join(" ")
      end

      doc
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inline_svg-0.8.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-0.7.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb