feat(a11y): allow trusted markdown (FAQ) to set any custom attributes in img
This commit is contained in:
parent
bb89c03679
commit
efa5122ce0
3 changed files with 26 additions and 3 deletions
|
@ -34,8 +34,26 @@ module Redcarpet
|
|||
end
|
||||
end
|
||||
|
||||
def image(link, title, alt)
|
||||
view_context.image_tag(link, title:, alt:, loading: :lazy)
|
||||
def image(link, title, alt_text)
|
||||
# Extrait les attributs personnalisés s'ils existent sous la forme { aria-hidden=true } dans les []
|
||||
custom_attributes = {}
|
||||
if alt_text =~ /\s*\{(.+)\}$/
|
||||
attr_string = Regexp.last_match(1)
|
||||
alt_text = alt_text.sub(/\s*\{.+\}$/, '').strip
|
||||
attr_string.split(' ').each do |attr|
|
||||
key, value = attr.split('=')
|
||||
custom_attributes[key.strip] = value.strip.delete('"')
|
||||
end
|
||||
end
|
||||
|
||||
# Combine les attributs standard et personnalisés
|
||||
image_options = {
|
||||
alt: alt_text,
|
||||
title:,
|
||||
loading: :lazy
|
||||
}.merge(custom_attributes)
|
||||
|
||||
view_context.image_tag(link, image_options)
|
||||
end
|
||||
|
||||
# rubocop:disable Rails/OutputSafety
|
||||
|
|
|
@ -21,7 +21,7 @@ Pour appliquer un filtre à une liste de dossiers :
|
|||
4. Sélectionnez ensuite la valeur à filtrer.
|
||||
5. Cliquez enfin sur **« Ajouter le filtre »**.
|
||||
|
||||
![Capture d’écran de l’interface de saisie d’un filtre](faq/instructeur-filtres-dropdown.png)
|
||||
![Capture d’écran de l’interface de saisie d’un filtre {aria-hidden="true"}](faq/instructeur-filtres-dropdown.png)
|
||||
|
||||
![Capture d’écran de toutes les colonnes filtres](faq/instructeur-filtres-list.png)
|
||||
|
||||
|
|
|
@ -19,6 +19,11 @@ RSpec.describe Redcarpet::TrustedRenderer do
|
|||
markdown = "![A cute cat](http://example.com/cat.jpg)"
|
||||
expect(renderer.render(markdown)).to include('<img alt="A cute cat" loading="lazy" src="http://example.com/cat.jpg" />')
|
||||
end
|
||||
|
||||
it 'renders additional attribute' do
|
||||
markdown = "![A cute cat { aria-hidden=\"true\" }](http://example.com/cat.jpg)"
|
||||
expect(renderer.render(markdown)).to include('<img alt="A cute cat" loading="lazy" aria-hidden="true" src="http://example.com/cat.jpg" />')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when autolinking' do
|
||||
|
|
Loading…
Reference in a new issue