Browse Source

blog updated

master
silberengel 8 months ago
parent
commit
5822c087a6
  1. 2
      src/lib/components/cards/BlogHeader.svelte
  2. 37
      src/lib/parser.ts

2
src/lib/components/cards/BlogHeader.svelte

@ -68,7 +68,7 @@ @@ -68,7 +68,7 @@
class="ArticleBoxImage flex justify-center items-center p-2 h-40 -mt-2"
in:scale={{ start: 0.8, duration: 500, delay: 100, easing: quintOut }}
>
{#if image && active}
{#if image}
<LazyImage
src={image}
alt={title || "Publication image"}

37
src/lib/parser.ts

@ -906,6 +906,13 @@ export default class Pharos { @@ -906,6 +906,13 @@ export default class Pharos {
["#d", nodeId],
...this.extractAndNormalizeWikilinks(content!),
];
// Extract image from content if present
const imageUrl = this.extractImageFromContent(content!);
if (imageUrl) {
event.tags.push(["image", imageUrl]);
}
event.created_at = Date.now();
event.pubkey = pubkey;
@ -1182,6 +1189,36 @@ export default class Pharos { @@ -1182,6 +1189,36 @@ export default class Pharos {
return wikilinks;
}
/**
* Extracts the first image URL from AsciiDoc content.
* @param content The AsciiDoc content to search for images.
* @returns The first image URL found, or null if no images are present.
*/
private extractImageFromContent(content: string): string | null {
// Look for AsciiDoc image syntax: image::url[alt text]
const imageRegex = /image::([^\s\[]+)/g;
let match = imageRegex.exec(content);
if (match) {
return match[1];
}
// Look for AsciiDoc image syntax: image:url[alt text]
const inlineImageRegex = /image:([^\s\[]+)/g;
match = inlineImageRegex.exec(content);
if (match) {
return match[1];
}
// Look for markdown-style image syntax: ![alt](url)
const markdownImageRegex = /!\[([^\]]*)\]\(([^)]+)\)/g;
match = markdownImageRegex.exec(content);
if (match) {
return match[2];
}
return null;
}
// TODO: Add search-based wikilink resolution.
// #endregion

Loading…
Cancel
Save