Started building out the site.
This commit is contained in:
parent
f119683b57
commit
b62458d7cd
14 changed files with 368 additions and 31 deletions
25
cmd/gendocs/frame.tmpl
Normal file
25
cmd/gendocs/frame.tmpl
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
|
||||
<link rel="stylesheet" href="/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>UCL</h1>
|
||||
<nav>
|
||||
<a href="/">Home</a>
|
||||
<a href="/core/">Core</a>
|
||||
<a href="/playground/">Playground</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{{.Body}}
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<p>By Leon Mika. Terminal control using <a href="https://xtermjs.org">xterm.js</a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
61
cmd/gendocs/main.go
Normal file
61
cmd/gendocs/main.go
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"flag"
|
||||
"github.com/yuin/goldmark"
|
||||
"github.com/yuin/goldmark/parser"
|
||||
"go.abhg.dev/goldmark/frontmatter"
|
||||
"html/template"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
//go:embed frame.tmpl
|
||||
var frameTmpl embed.FS
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
if flag.NArg() != 1 {
|
||||
log.Fatalln("usage: gendocs [markdown]")
|
||||
}
|
||||
|
||||
md := goldmark.New(goldmark.WithExtensions(&frontmatter.Extender{}))
|
||||
|
||||
mdData, err := os.ReadFile(flag.Arg(0))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
ctx := parser.NewContext()
|
||||
|
||||
var buf bytes.Buffer
|
||||
if err := md.Convert(mdData, &buf, parser.WithContext(ctx)); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var frontMatter struct {
|
||||
Title string `yaml:"title"`
|
||||
}
|
||||
if fm := frontmatter.Get(ctx); fm != nil {
|
||||
if err := fm.Decode(&frontMatter); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
frameTmpls, err := template.ParseFS(frameTmpl, "*.tmpl")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
var res bytes.Buffer
|
||||
if err := frameTmpls.ExecuteTemplate(&res, "frame.tmpl", map[string]interface{}{
|
||||
"Title": frontMatter.Title,
|
||||
"Body": template.HTML(buf.Bytes()),
|
||||
}); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
os.Stdout.Write(res.Bytes())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue