55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { render } from "gfm";
 | |
| import "https://esm.sh/prismjs@1.29.0/components/prism-typescript?no-check";
 | |
| import "https://esm.sh/prismjs@1.29.0/components/prism-bash?no-check";
 | |
| import "https://esm.sh/prismjs@1.29.0/components/prism-rust?no-check";
 | |
| 
 | |
| export type Document = {
 | |
|   name: string;
 | |
|   lastModified: number;
 | |
|   contentType: string;
 | |
|   content: string | null;
 | |
|   size: number;
 | |
|   perm: string;
 | |
| };
 | |
| 
 | |
| function removeFrontmatter(doc: string) {
 | |
|   if (doc.trim().startsWith("---")) {
 | |
|     return doc.trim().split("---").filter((s) => s.length).slice(1).join("---");
 | |
|   }
 | |
|   return doc;
 | |
| }
 | |
| 
 | |
| export function removeImage(doc: string, imageUrl?: string) {
 | |
|   if (!imageUrl) {
 | |
|     return doc;
 | |
|   }
 | |
|   // Remove image from content
 | |
|   const first = doc.slice(0, 500);
 | |
|   const second = doc.slice(500);
 | |
| 
 | |
|   // Regex pattern to match the image Markdown syntax with the specific URL
 | |
|   const pattern = new RegExp(
 | |
|     `!\\[.*?\\]\\(${imageUrl.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\)`,
 | |
|     "g",
 | |
|   );
 | |
| 
 | |
|   // Remove the matched image
 | |
|   const updatedMarkdown = first.replace(pattern, "");
 | |
|   return updatedMarkdown + second;
 | |
| }
 | |
| 
 | |
| export function renderMarkdown(doc: string) {
 | |
|   return render(removeFrontmatter(doc), {
 | |
|     baseUrl: "https://max-richter.dev",
 | |
|     allowMath: true,
 | |
|   });
 | |
| }
 | |
| 
 | |
| export function createDocument(
 | |
|   path: string,
 | |
|   entry: string,
 | |
|   mimetype = "image/jpeg",
 | |
| ) {
 | |
|   console.log("creating", { path, entry, mimetype });
 | |
| }
 |