mirror of
https://github.com/TECHNOFAB11/docsonnet.git
synced 2025-12-14 23:33:56 +01:00
refactor(render): filewriting in render pkg
This commit is contained in:
parent
f284bff4e5
commit
14e9fc8f3f
7 changed files with 68 additions and 285 deletions
32
pkg/render/fs.go
Normal file
32
pkg/render/fs.go
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package render
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/sh0rez/docsonnet/pkg/docsonnet"
|
||||
)
|
||||
|
||||
func To(api, out string) error {
|
||||
pkg, err := docsonnet.Load(api)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := os.MkdirAll(out, os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Println("Rendering .md files")
|
||||
data := Render(*pkg)
|
||||
for k, v := range data {
|
||||
if err := ioutil.WriteFile(filepath.Join(out, k), []byte(v), 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("Success! Rendered %v packages from '%s' to '%s'", len(data), api, out)
|
||||
return nil
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
package render
|
||||
|
||||
import (
|
||||
"github.com/sh0rez/docsonnet/pkg/docsonnet"
|
||||
)
|
||||
|
||||
func Paths(pkg docsonnet.Package) map[string]docsonnet.Package {
|
||||
p := paths(pkg)
|
||||
return p
|
||||
}
|
||||
|
||||
func paths(pkg docsonnet.Package) map[string]docsonnet.Package {
|
||||
pkgs := make(map[string]docsonnet.Package)
|
||||
pkgs[pkg.Name+".md"] = pkg
|
||||
|
||||
if len(pkg.Sub) == 0 {
|
||||
return pkgs
|
||||
}
|
||||
|
||||
for _, sub := range pkg.Sub {
|
||||
for k, v := range paths(sub) {
|
||||
v.Name = pkg.Name + "/" + k
|
||||
pkgs[pkg.Name+"-"+k] = v
|
||||
}
|
||||
}
|
||||
|
||||
return pkgs
|
||||
}
|
||||
|
|
@ -15,7 +15,6 @@ func Render(pkg docsonnet.Package) map[string]string {
|
|||
}
|
||||
|
||||
func render(pkg docsonnet.Package, parents []string, root bool) map[string]string {
|
||||
fmt.Println("render", pkg.Name)
|
||||
link := "/" + strings.Join(append(parents, pkg.Name), "/")
|
||||
if root {
|
||||
link = "/"
|
||||
|
|
@ -27,20 +26,32 @@ func render(pkg docsonnet.Package, parents []string, root bool) map[string]strin
|
|||
"permalink": link,
|
||||
}),
|
||||
md.Headline(1, "package "+pkg.Name),
|
||||
md.CodeBlock("jsonnet", fmt.Sprintf(`local %s = import "%s"`, pkg.Name, pkg.Import)),
|
||||
md.Text(pkg.Help),
|
||||
}
|
||||
if pkg.Import != "" {
|
||||
elems = append(elems, md.CodeBlock("jsonnet", fmt.Sprintf(`local %s = import "%s"`, pkg.Name, pkg.Import)))
|
||||
}
|
||||
elems = append(elems, md.Text(pkg.Help))
|
||||
|
||||
if len(pkg.Sub) > 0 {
|
||||
elems = append(elems, md.Headline(2, "Subpackages"))
|
||||
var items []md.Elem
|
||||
|
||||
keys := make([]string, 0, len(pkg.Sub))
|
||||
for _, s := range pkg.Sub {
|
||||
keys = append(keys, s.Name)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
var items []md.Elem
|
||||
for _, k := range keys {
|
||||
s := pkg.Sub[k]
|
||||
|
||||
link := strings.Join(append(parents, pkg.Name, s.Name), "-")
|
||||
if root {
|
||||
link = strings.Join(append(parents, s.Name), "-")
|
||||
}
|
||||
items = append(items, md.Link(md.Text(s.Name), link+".md"))
|
||||
}
|
||||
|
||||
elems = append(elems, md.List(items...))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue