end
end
+ LINK_REL_TRANSFORMER = lambda do |env|
+ return unless env[:node_name] == 'a'
+
+ node = env[:node]
+
+ rel = (node['rel'] || '').split(' ') & ['tag']
+ node['rel'] = (['nofollow', 'noopener', 'noreferrer'] + rel).join(' ')
+ end
+
UNSUPPORTED_HREF_TRANSFORMER = lambda do |env|
return unless env[:node_name] == 'a'
add_attributes: {
'a' => {
- 'rel' => 'nofollow noopener tag noreferrer',
'target' => '_blank',
},
},
transformers: [
CLASS_WHITELIST_TRANSFORMER,
IMG_TAG_TRANSFORMER,
+ LINK_REL_TRANSFORMER,
UNSUPPORTED_HREF_TRANSFORMER,
]
)
end
it 'keeps a with href' do
- expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener tag noreferrer" target="_blank">Test</a>'
+ expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer" target="_blank">Test</a>'
+ end
+
+ it 'keeps a with href and rel tag' do
+ expect(Sanitize.fragment('<a href="http://example.com" rel="tag">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer tag" target="_blank">Test</a>'
end
end
end