better suffix check

This commit is contained in:
u80864958
2025-05-07 14:30:59 +02:00
parent 8eebdc0d38
commit 6e63af80a6
4 changed files with 100 additions and 75 deletions

View File

@ -67,75 +67,6 @@ func (c Cater) ToString(delemiter string) string {
return sb.String()
}
func (c Cater) ToMarkdown() string {
var sb strings.Builder
write := func(e entry, lvl int) {
for range lvl {
sb.WriteString("#")
}
sb.WriteString(fmt.Sprintf(" %s (`%s`)\n", e.name, e.fqname))
if len(e.content) > 0 {
prts := strings.Split(e.name, ".")
sb.WriteString(
fmt.Sprintf(
"```%s\n%s\n```\n\n",
prts[len(prts)-1],
strings.ReplaceAll(
e.content,
"```",
"\\`\\`\\`",
),
),
)
}
}
for _, e := range c {
e.traverse(1, write)
}
return sb.String()
}
func (c Cater) ToTypst() string {
var sb strings.Builder
write := func(e entry, lvl int) {
for range lvl {
sb.WriteString("=")
}
sb.WriteString(fmt.Sprintf(" %s (`%s`)\n", e.name, e.fqname))
if len(e.content) > 0 {
prts := strings.Split(e.name, ".")
sb.WriteString(
fmt.Sprintf(
"```%s\n%s\n```\n\n",
prts[len(prts)-1],
strings.ReplaceAll(
e.content,
"```",
"\\`\\`\\`",
),
),
)
}
}
for _, e := range c {
sb.WriteString("= Export\n")
sb.WriteString("#outline()\n")
e.traverse(1, write)
}
return sb.String()
}
type ignorer interface {
// Ignore() returns true when the given path shall be Ignored.
Ignore(path string) bool

39
pkg/cat/markdown.go Normal file
View File

@ -0,0 +1,39 @@
package cat
import (
"fmt"
"strings"
)
func (c Cater) ToMarkdown() string {
var sb strings.Builder
write := func(e entry, lvl int) {
for range lvl {
sb.WriteString("#")
}
sb.WriteString(fmt.Sprintf(" %s (`%s`)\n", e.name, e.fqname))
if len(e.content) > 0 {
prts := strings.Split(e.name, ".")
sb.WriteString(
fmt.Sprintf(
"```%s\n%s\n```\n\n",
prts[len(prts)-1],
strings.ReplaceAll(
e.content,
"```",
"\\`\\`\\`",
),
),
)
}
}
for _, e := range c {
e.traverse(1, write)
}
return sb.String()
}

View File

@ -8,6 +8,15 @@ import (
"strings"
)
var INVALID_SUFFIXES = []string{
"png",
"jpg",
"jpeg",
"webp",
"ico",
"ttf",
}
func (c Cater) dir(dir string) (e entry, err error) {
files, err := os.ReadDir(dir)
if err != nil {
@ -27,12 +36,7 @@ func (c Cater) dir(dir string) (e entry, err error) {
var ent entry
if !file.IsDir() {
if strings.HasSuffix(path, "png") || // ignore images but hacky :)
strings.HasSuffix(path, "jpg") ||
strings.HasSuffix(path, "jpeg") ||
strings.HasSuffix(path, "ico") ||
strings.HasSuffix(path, "ttf") ||
strings.HasSuffix(path, "webp") {
if !validSuffix(file.Name()) {
continue
}
@ -82,3 +86,12 @@ func name(name string) string {
ps := strings.Split(name, "/")
return ps[len(ps)-1]
}
func validSuffix(name string) bool {
for _, s := range INVALID_SUFFIXES {
if strings.HasSuffix(name, s) {
return false
}
}
return true
}

42
pkg/cat/typst.go Normal file
View File

@ -0,0 +1,42 @@
package cat
import (
"fmt"
"strings"
)
func (c Cater) ToTypst() string {
var sb strings.Builder
write := func(e entry, lvl int) {
for range lvl {
sb.WriteString("=")
}
sb.WriteString(fmt.Sprintf(" %s (`%s`)\n", e.name, e.fqname))
if len(e.content) > 0 {
prts := strings.Split(e.name, ".")
sb.WriteString(
fmt.Sprintf(
"```%s\n%s\n```\n\n",
prts[len(prts)-1],
strings.ReplaceAll(
e.content,
"```",
"\\`\\`\\`",
),
),
)
}
}
for _, e := range c {
sb.WriteString("= Export\n")
sb.WriteString("#outline()\n")
e.traverse(1, write)
}
return sb.String()
}