MarkMark - add sha256 hashing (+update HTML renderer to insert IDs), update MD renderer to include dates, add syndication for bookmarks

This commit is contained in:
2024-12-31 13:50:54 -05:00
parent 832190f875
commit b5450c6100
9 changed files with 153 additions and 10 deletions

View File

@@ -1,14 +1,16 @@
import {isNamedSection, MarkMark} from './types'
export class MarkMarkRenderer {
public render(mm: MarkMark): string {
public render(mm: MarkMark, frontmatter: boolean = true): string {
let mmLines: string[] = ['\n']
// Write the frontmatter
mmLines.push(`[//]: #(markmark-syntax: ${mm.frontmatter.syntax})`)
if ( mm.frontmatter.authorName ) mmLines.push(`[//]: #(markmark-author-name: ${mm.frontmatter.authorName})`)
if ( mm.frontmatter.authorEmail ) mmLines.push(`[//]: #(markmark-author-email: ${mm.frontmatter.authorEmail})`)
if ( mm.frontmatter.authorHref ) mmLines.push(`[//]: #(markmark-author-href: ${mm.frontmatter.authorHref})`)
if ( frontmatter ) {
mmLines.push(`[//]: #(markmark-syntax: ${mm.frontmatter.syntax})`)
if (mm.frontmatter.authorName) mmLines.push(`[//]: #(markmark-author-name: ${mm.frontmatter.authorName})`)
if (mm.frontmatter.authorEmail) mmLines.push(`[//]: #(markmark-author-email: ${mm.frontmatter.authorEmail})`)
if (mm.frontmatter.authorHref) mmLines.push(`[//]: #(markmark-author-href: ${mm.frontmatter.authorHref})`)
}
for ( const section of mm.sections ) {
mmLines.push('\n')
@@ -23,6 +25,11 @@ export class MarkMarkRenderer {
for ( const link of section.links ) {
let linkTitle = `- ${link.title}`
if ( link.date ) {
linkTitle += ` (${this.formatDate(link.date)})`
}
if ( link.tags.length ) {
linkTitle += ` ${link.tags.map(x => '#' + x).join(' ')}`
}
@@ -37,4 +44,11 @@ export class MarkMarkRenderer {
return mmLines.join('\n')
}
private formatDate(date: Date): string {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
}