From 3e9d3d0df384e7911b1167761eee284e8872af38 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Tue, 18 Jun 2024 05:58:28 +0800 Subject: [PATCH] zz --- pkg/render/page.go | 3 ++ pkg/render/page_talk.go | 42 ++++++++++++++- pkg/render/tmpl/talk.html | 107 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 pkg/render/tmpl/talk.html diff --git a/pkg/render/page.go b/pkg/render/page.go index 003de25..496684b 100644 --- a/pkg/render/page.go +++ b/pkg/render/page.go @@ -24,6 +24,9 @@ import ( //go:embed tmpl/page.html var tmplPage string +//go:embed tmpl/talk.html +var tmplTalk string + //go:embed tmpl/print.html var tmplPrintPage string diff --git a/pkg/render/page_talk.go b/pkg/render/page_talk.go index 624fe33..a26163e 100644 --- a/pkg/render/page_talk.go +++ b/pkg/render/page_talk.go @@ -4,6 +4,16 @@ package render +import ( + "bytes" + "html/template" + "os" + "path/filepath" + "strings" + + "github.com/wa-lang/mnbook/pkg/mntalk/present" +) + func (p *BookRendor) renderAllTalkPages() error { if len(p.Book.Talks) == 0 { return nil @@ -18,6 +28,36 @@ func (p *BookRendor) renderAllTalkPages() error { return nil } -func (p *BookRendor) renderTalkPages(path string) error { +func (p *BookRendor) renderTalkPages(name string) error { + content, err := os.ReadFile(name) + if err != nil { + return err + } + + doc, err := present.Parse(bytes.NewReader(content), name, 0) + if err != nil { + return err + } + + var fnMap = template.FuncMap{} + t := template.Must(template.New("").Funcs(fnMap).Parse(tmplTalk)) + + var buf bytes.Buffer + if err = doc.Render(&buf, t); err != nil { + return err + } + + relpath := name + dstAbsPath := filepath.Join(p.Book.Root, "book", relpath) + if ext := filepath.Ext(dstAbsPath); strings.EqualFold(ext, ".md") { + dstAbsPath = dstAbsPath[:len(dstAbsPath)-len(".md")] + } + dstAbsPath += ".html" + + os.MkdirAll(filepath.Dir(dstAbsPath), 0777) + if err := os.WriteFile(dstAbsPath, buf.Bytes(), 0666); err != nil { + return err + } + return nil } diff --git a/pkg/render/tmpl/talk.html b/pkg/render/tmpl/talk.html new file mode 100644 index 0000000..03945d2 --- /dev/null +++ b/pkg/render/tmpl/talk.html @@ -0,0 +1,107 @@ +{/* This is the slide template. It defines how presentations are formatted. */} + +{{define "root"}} + + + + {{.Title}} + + + + + {{if .NotesEnabled}} + + + {{end}} + + + + + + +
+ +
+

{{.Title}}

+ {{with .Subtitle}}

{{.}}

{{end}} + {{if not .Time.IsZero}}

{{.Time.Format "2 January 2006"}}

{{end}} + {{range .Authors}} +
+ {{range .TextElem}}{{elem $.Template .}}{{end}} +
+ {{end}} +
+ + {{range $i, $s := .Sections}} + +
+ {{if $s.Elem}} +

{{$s.Title}}

+ {{range $s.Elem}}{{elem $.Template .}}{{end}} + {{else}} +

{{$s.Title}}

+ {{end}} + {{pagenum $s 1}} +
+ + {{end}}{{/* of Slide block */}} + +
+

Thank you

+ {{range .Authors}} +
+ {{range .Elem}}{{elem $.Template .}}{{end}} +
+ {{end}} +
+ +
+ +
+ Use the left and right arrow keys or click the left and right + edges of the page to navigate between slides.
+ (Press 'H' or navigate to hide this message.) +
+ + {{if .PlayEnabled}} + + {{end}} + + + + +{{end}} + +{{define "newline"}} +
+{{end}}