Sha256: e82a3d5a5af75652da292f86e7bc28db26d3a24ff42319f41b84302f93a7b0d2

Contents?: true

Size: 881 Bytes

Versions: 16

Compression:

Stored size: 881 Bytes

Contents

module InlineSvg::TransformPipeline::Transformations
  class AriaAttributes < Transformation
    def transform(doc)
      with_svg(doc) do |svg|
        # Add role
        svg["role"] = "img"

        # Build aria-labelledby string
        aria_elements = []
        svg.search("title").each do |element|
          aria_elements << element["id"] = element_id_for("title", element)
        end

        svg.search("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
      end
    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

16 entries across 16 versions & 2 rubygems

Version Path
inline_svg-1.10.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.9.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.8.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
rails_mini_profiler-0.2.0 vendor/bundle/ruby/3.0.0/gems/inline_svg-1.7.2/lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.7.2 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.7.1 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.7.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.6.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.5.2 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.5.1 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.5.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.4.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.3.1 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.3.0 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.2.3 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb
inline_svg-1.2.2 lib/inline_svg/transform_pipeline/transformations/aria_attributes.rb