better suffix check
This commit is contained in:
@ -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
39
pkg/cat/markdown.go
Normal 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()
|
||||
}
|
@ -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
42
pkg/cat/typst.go
Normal 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()
|
||||
}
|
Reference in New Issue
Block a user