diff --git a/pkg/cat/cater.go b/pkg/cat/cater.go index 08f9ece..3659039 100644 --- a/pkg/cat/cater.go +++ b/pkg/cat/cater.go @@ -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 diff --git a/pkg/cat/markdown.go b/pkg/cat/markdown.go new file mode 100644 index 0000000..276f53b --- /dev/null +++ b/pkg/cat/markdown.go @@ -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() +} diff --git a/pkg/cat/internal.go b/pkg/cat/read.go similarity index 81% rename from pkg/cat/internal.go rename to pkg/cat/read.go index f68cff8..d7cc735 100644 --- a/pkg/cat/internal.go +++ b/pkg/cat/read.go @@ -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 +} diff --git a/pkg/cat/typst.go b/pkg/cat/typst.go new file mode 100644 index 0000000..f11460f --- /dev/null +++ b/pkg/cat/typst.go @@ -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() +}