Files
donniemarko/internal/note/note.go
adminoo 9d1254244f feat(release): v0.1.0
commit 06ed2c3cbe
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 11:34:24 2026 +0100

    fix: changed detected by scanner but no updated by render layer

commit 01dcaf882a
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 10:19:05 2026 +0100

    feat: VERSION bumb

commit 229223f77a
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:53:08 2026 +0100

    feat: filter and search by tag

commit cb11e34798
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:41:03 2026 +0100

    feat: tag system

commit 3f5cf0d673
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:15:29 2026 +0100

    feat: sqlite storage draft

commit d6617cec02
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:04:11 2026 +0100

    feat: metadata draft

commit 7238d02a13
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 10:18:42 2026 +0100

    fix: body overflowing

commit 16ff836274
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 10:09:01 2026 +0100

    feat: tests for http handlers and render package

commit 36ac3f03aa
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 09:45:29 2026 +0100

    feat: Dark theme, placeholder metadata panel

commit e6923fa4f5
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 18:26:59 2026 +0100

    fix: uneeded func + uneeded bogus note creation logic

commit 4458ba2d15
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 18:26:21 2026 +0100

    feat: log when changing note states

commit 92a6f84540
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 16:55:40 2026 +0100

    possibly first working draft

commit e27aadc603
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 11:55:16 2026 +0100

    draft shits
2026-02-03 12:01:17 +01:00

75 lines
1.6 KiB
Go

package note
import (
"crypto/sha256"
"fmt"
"strings"
"time"
)
type Note struct {
ID string
Path string
Title string
Content string
Size int64
// HTMLContent string
// Directly in Note
Tags []string
UpdatedAt time.Time
Published bool
}
func NewNote() *Note {
return &Note{}
}
func formatDateRep(date time.Time) string {
return date.Format("2006-01-02 15:04:05")
}
func (n *Note) GetUpdateDateRep() string {
return formatDateRep(n.UpdatedAt)
}
// ExtractTitle return the first level heading content ('# title')
func ExtractTitle(mkd string) string {
if mkd == "" {
return ""
}
lines := strings.Split(mkd, "\n")
for _, line := range lines {
line = strings.TrimSpace(line)
if strings.HasPrefix(line, "# ") {
// Extract title from # heading
title := strings.TrimPrefix(line, "# ")
title = strings.TrimSpace(title)
// Remove common markdown formatting
title = removeMarkdownFormatting(title)
return title
}
}
return ""
}
// removeMarkdownFormatting removes common markdown formatting from text
func removeMarkdownFormatting(text string) string {
// Remove **bold** and *italic* formatting
result := text
result = strings.ReplaceAll(result, "**", "")
result = strings.ReplaceAll(result, "*", "")
result = strings.ReplaceAll(result, "_", "")
result = strings.ReplaceAll(result, "`", "")
result = strings.ReplaceAll(result, "~~", "")
// Clean up multiple spaces
result = strings.Join(strings.Fields(result), " ")
return result
}
func GenerateNoteID(path string) string {
return fmt.Sprintf("%x", sha256.Sum256([]byte(path)))[:10]
}