• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mlange-42 / modo / 12729582532

12 Jan 2025 02:14AM CUT coverage: 12.644%. Remained the same
12729582532

Pull #19

github

web-flow
Merge e5dfae079 into 66b79d212
Pull Request #19: Navigation and top-level headings use inline code style

0 of 6 new or added lines in 1 file covered. (0.0%)

33 of 261 relevant lines covered (12.64%)

0.8 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/format/mdbook.go
1
package format
2

3
import (
4
        "fmt"
5
        "os"
6
        "path"
7
        "strings"
8
        "text/template"
9

10
        "github.com/mlange-42/modo/document"
11
)
12

13
type MdBookFormatter struct{}
14

15
func (f *MdBookFormatter) WriteAuxiliary(p *document.Package, dir string, t *template.Template) error {
×
16
        if err := f.writeSummary(p, dir, t); err != nil {
×
17
                return err
×
18
        }
×
19
        if err := f.writeToml(p, dir, t); err != nil {
×
20
                return err
×
21
        }
×
22
        return nil
×
23
}
24

25
type summary struct {
26
        Summary  string
27
        Packages string
28
        Modules  string
29
}
30

31
func (f *MdBookFormatter) writeSummary(p *document.Package, dir string, t *template.Template) error {
×
32
        summaryPath := path.Join(dir, p.GetName(), "SUMMARY.md")
×
33

×
34
        s := summary{}
×
35

×
NEW
36
        s.Summary = fmt.Sprintf("[`%s`](./_index.md)", p.GetName())
×
37

×
38
        pkgs := strings.Builder{}
×
39
        for _, p := range p.Packages {
×
40
                f.renderPackage(p, []string{}, &pkgs)
×
41
        }
×
42
        s.Packages = pkgs.String()
×
43

×
44
        mods := strings.Builder{}
×
45
        for _, m := range p.Modules {
×
46
                f.renderModule(m, []string{}, &mods)
×
47
        }
×
48
        s.Modules = mods.String()
×
49

×
50
        b := strings.Builder{}
×
51
        if err := t.ExecuteTemplate(&b, "mdbook_summary.md", &s); err != nil {
×
52
                return err
×
53
        }
×
54

55
        if err := os.WriteFile(summaryPath, []byte(b.String()), 0666); err != nil {
×
56
                return err
×
57
        }
×
58
        return nil
×
59
}
60

61
func (f *MdBookFormatter) renderPackage(pkg *document.Package, linkPath []string, out *strings.Builder) {
×
62
        newPath := append([]string{}, linkPath...)
×
63
        newPath = append(newPath, pkg.GetName())
×
NEW
64
        fmt.Fprintf(out, "%-*s- [`%s`](./%s/_index.md))\n", 2*len(linkPath), "", pkg.GetName(), path.Join(newPath...))
×
65
        for _, p := range pkg.Packages {
×
66
                f.renderPackage(p, newPath, out)
×
67
        }
×
68
        for _, m := range pkg.Modules {
×
69
                f.renderModule(m, newPath, out)
×
70
        }
×
71
}
72

73
func (f *MdBookFormatter) renderModule(mod *document.Module, linkPath []string, out *strings.Builder) {
×
74
        newPath := append([]string{}, linkPath...)
×
75
        newPath = append(newPath, mod.GetName())
×
76
        pathStr := path.Join(newPath...)
×
NEW
77
        fmt.Fprintf(out, "%-*s- [`%s`](./%s/_index.md)\n", 2*len(linkPath), "", mod.GetName(), pathStr)
×
78

×
79
        for _, s := range mod.Structs {
×
NEW
80
                fmt.Fprintf(out, "%-*s- [`%s`](./%s/%s.md)\n", 2*len(linkPath)+2, "", s.GetName(), pathStr, s.GetName())
×
81
        }
×
82
        for _, t := range mod.Traits {
×
NEW
83
                fmt.Fprintf(out, "%-*s- [`%s`](./%s/%s.md)\n", 2*len(linkPath)+2, "", t.GetName(), pathStr, t.GetName())
×
84
        }
×
85
        for _, f := range mod.Functions {
×
NEW
86
                fmt.Fprintf(out, "%-*s- [`%s`](./%s/%s.md)\n", 2*len(linkPath)+2, "", f.GetName(), pathStr, f.GetName())
×
87
        }
×
88
}
89

90
func (f *MdBookFormatter) writeToml(p *document.Package, dir string, t *template.Template) error {
×
91
        tomlPath := path.Join(dir, "book.toml")
×
92

×
93
        b := strings.Builder{}
×
94
        if err := t.ExecuteTemplate(&b, "book.toml", p); err != nil {
×
95
                return err
×
96
        }
×
97
        if err := os.WriteFile(tomlPath, []byte(b.String()), 0666); err != nil {
×
98
                return err
×
99
        }
×
100
        return nil
×
101
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc