Fix author names as arrays in linked data. (#30957)
parent
f1300ad284
commit
fa8e972722
|
@ -62,7 +62,8 @@ class LinkDetailsExtractor
|
||||||
end
|
end
|
||||||
|
|
||||||
def author_name
|
def author_name
|
||||||
author['name']
|
name = author['name']
|
||||||
|
name.is_a?(Array) ? name.join(', ') : name
|
||||||
end
|
end
|
||||||
|
|
||||||
def author_url
|
def author_url
|
||||||
|
@ -294,7 +295,7 @@ class LinkDetailsExtractor
|
||||||
def html_entities_decode(string)
|
def html_entities_decode(string)
|
||||||
return if string.nil?
|
return if string.nil?
|
||||||
|
|
||||||
unicode_string = string.encode('UTF-8')
|
unicode_string = string.to_s.encode('UTF-8')
|
||||||
raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding?
|
raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding?
|
||||||
|
|
||||||
html_entities.decode(unicode_string)
|
html_entities.decode(unicode_string)
|
||||||
|
|
|
@ -192,6 +192,35 @@ RSpec.describe LinkDetailsExtractor do
|
||||||
|
|
||||||
include_examples 'structured data'
|
include_examples 'structured data'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with author names as array' do
|
||||||
|
let(:ld_json) do
|
||||||
|
{
|
||||||
|
'@context' => 'https://schema.org',
|
||||||
|
'@type' => 'NewsArticle',
|
||||||
|
'headline' => 'A lot of authors',
|
||||||
|
'description' => 'But we decided to cram them into one',
|
||||||
|
'author' => {
|
||||||
|
'@type' => 'Person',
|
||||||
|
'name' => ['Author 1', 'Author 2'],
|
||||||
|
},
|
||||||
|
}.to_json
|
||||||
|
end
|
||||||
|
let(:html) { <<~HTML }
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<script type="application/ld+json">
|
||||||
|
#{ld_json}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
HTML
|
||||||
|
|
||||||
|
it 'joins author names' do
|
||||||
|
expect(subject.author_name).to eq 'Author 1, Author 2'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when Open Graph protocol data is present' do
|
context 'when Open Graph protocol data is present' do
|
||||||
|
|
Loading…
Reference in New Issue