Skip to content

Commit 42a13e1

Browse files
committed
support og:image:alt from discovered images
1 parent 8ae79f6 commit 42a13e1

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
lines changed

src/project/types/website/listing/website-listing-feed.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export async function createFeed(
163163

164164
// Add any image metadata
165165
const image = options.image || format.metadata[kImage] as string ||
166-
websiteImage(project.config);
166+
websiteImage(project.config)?.src;
167167
if (image) {
168168
feed.image = {
169169
title: feedTitle,

src/project/types/website/util/discover-meta.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,16 @@ export function findDescription(doc: Document): string | undefined {
4141

4242
export function findPreviewImg(
4343
doc: Document,
44-
): string | undefined {
44+
): { src: string; alt?: string } | undefined {
4545
const imgEl = findPreviewImgEl(doc);
4646
if (imgEl) {
4747
const src = getDecodedAttribute(imgEl, "src");
48+
const alt = getDecodedAttribute(imgEl, "alt");
4849
if (src !== null) {
49-
return src;
50+
return {
51+
src,
52+
alt: alt ?? undefined,
53+
};
5054
} else {
5155
return undefined;
5256
}

src/project/types/website/website-config.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import { join } from "../../../deno_ral/path.ts";
5050
type WebsiteConfigKey =
5151
| "title"
5252
| "image"
53+
| "image-alt"
5354
| "description"
5455
| "favicon"
5556
| "site-url"
@@ -173,8 +174,16 @@ export function websiteBaseurl(project?: ProjectConfig): string | undefined {
173174
return websiteConfigString(kSiteUrl, project);
174175
}
175176

176-
export function websiteImage(project?: ProjectConfig): string | undefined {
177-
return websiteConfigString(kImage, project);
177+
export function websiteImage(
178+
project?: ProjectConfig,
179+
): { src: string; alt?: string } | undefined {
180+
const src = websiteConfigString(kImage, project);
181+
if (src) {
182+
const alt = websiteConfigString("image-alt", project);
183+
return { src, alt };
184+
} else {
185+
return undefined;
186+
}
178187
}
179188

180189
export function websiteDescription(

src/project/types/website/website-meta.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,9 @@ export function metadataHtmlPostProcessor(
180180

181181
// find a preview image if one is not provided
182182
if (metadata[kImage] === undefined && format.metadata[kImage] !== false) {
183-
metadata[kImage] = findPreviewImg(doc) ||
184-
websiteImage(project.config);
183+
const previewImg = findPreviewImg(doc) || websiteImage(project.config);
184+
metadata[kImage] = previewImg ? previewImg.src : undefined;
185+
metadata[kImageAlt] = previewImg ? previewImg.alt : undefined;
185186
}
186187

187188
// cook up a description if one is not provided

0 commit comments

Comments
 (0)