better suffix check
This commit is contained in:
@ -67,75 +67,6 @@ func (c Cater) ToString(delemiter string) string {
|
|||||||
return sb.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 {
|
type ignorer interface {
|
||||||
// Ignore() returns true when the given path shall be Ignored.
|
// Ignore() returns true when the given path shall be Ignored.
|
||||||
Ignore(path string) bool
|
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"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var INVALID_SUFFIXES = []string{
|
||||||
|
"png",
|
||||||
|
"jpg",
|
||||||
|
"jpeg",
|
||||||
|
"webp",
|
||||||
|
"ico",
|
||||||
|
"ttf",
|
||||||
|
}
|
||||||
|
|
||||||
func (c Cater) dir(dir string) (e entry, err error) {
|
func (c Cater) dir(dir string) (e entry, err error) {
|
||||||
files, err := os.ReadDir(dir)
|
files, err := os.ReadDir(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -27,12 +36,7 @@ func (c Cater) dir(dir string) (e entry, err error) {
|
|||||||
|
|
||||||
var ent entry
|
var ent entry
|
||||||
if !file.IsDir() {
|
if !file.IsDir() {
|
||||||
if strings.HasSuffix(path, "png") || // ignore images but hacky :)
|
if !validSuffix(file.Name()) {
|
||||||
strings.HasSuffix(path, "jpg") ||
|
|
||||||
strings.HasSuffix(path, "jpeg") ||
|
|
||||||
strings.HasSuffix(path, "ico") ||
|
|
||||||
strings.HasSuffix(path, "ttf") ||
|
|
||||||
strings.HasSuffix(path, "webp") {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,3 +86,12 @@ func name(name string) string {
|
|||||||
ps := strings.Split(name, "/")
|
ps := strings.Split(name, "/")
|
||||||
return ps[len(ps)-1]
|
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