UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

34 lines (28 loc) 742 B
export interface InternalUrl { obj_id: string; query?: string; hash?: string; } export const OBJ_ID_PATTERN = /\bobjid:[a-f0-9]{16}\b/g; const INTERNAL_LINK_URL_PATTERN = new RegExp( `${OBJ_ID_PATTERN.source}[^"']*`, 'g' ); export function formatInternalLinks( htmlString: string, format: (url: InternalUrl) => string | null ): string { return htmlString.replace( INTERNAL_LINK_URL_PATTERN, (internalLinkUrl) => format(parseInternalUrl(internalLinkUrl)) ?? internalLinkUrl ); } function parseInternalUrl(internalLinkUrl: string): InternalUrl { const url = new URL(internalLinkUrl); return { obj_id: internalLinkUrl.slice(6, 22), query: url.search.slice(1), hash: url.hash.slice(1), }; }