| {/* This is the article template. It defines how articles are formatted. */} |
| {{define "layout"}} |
| {{with .doc}} |
| <article class="Talks Article"> |
| <div id="topbar" class="wide"> |
| <h1>{{.Title}}</h1> |
| {{with .Subtitle}} |
| <h2 class="subtitle">{{.Subtitle}}</h2> |
| {{end}} |
| {{range .Authors}} |
| <div class="author"> |
| {{range .Elem}}{{fmt .}}{{end}} |
| </div> |
| {{end}} |
| </div> |
| |
| {{/* The Table of Contents is automatically inserted in this <div>. |
| Do not delete this <div>. */}} |
| <div id="nav" class="TOC"></div> |
| |
| {{range .Sections}} |
| {{fmt .}} |
| {{end}}{{/* of Section block */}} |
| |
| <script src='/talks/static/play.js'></script> |
| </article> |
| {{end}} |
| {{end}} |
| |
| {{define "TOC"}} |
| <ul class="toc-outer"> |
| {{range .}} |
| <li><a href="#TOC_{{.FormattedNumber}}">{{.Title}}</a></li> |
| {{with .Sections}}{{template "TOC-Inner" .}}{{end}} |
| {{end}} |
| </ul> |
| {{end}} |
| |
| {{define "TOC-Inner"}} |
| <ul class="toc-inner"> |
| {{range .}} |
| <li><a href="#TOC_{{.FormattedNumber}}">{{.Title}}</a></li> |
| {{with .Sections}}{{template "TOC-Inner" .}}{{end}} |
| {{end}} |
| </ul> |
| {{end}} |
| |
| {{define "newline"}} |
| {{/* No automatic line break. Paragraphs are free-form. */}} |
| {{end}} |
| |
| {{define "fmt" -}} |
| {{$kind := .TemplateName -}} |
| {{if eq $kind "section"}}{{section . -}} |
| {{else if eq $kind "list"}}{{list . -}} |
| {{else if eq $kind "text"}}{{text . -}} |
| {{else if eq $kind "code"}}{{code . -}} |
| {{else if eq $kind "image"}}{{image . -}} |
| {{else if eq $kind "video"}}{{video . -}} |
| {{else if eq $kind "background"}}{{background . -}} |
| {{else if eq $kind "iframe"}}{{iframe . -}} |
| {{else if eq $kind "link"}}{{link . -}} |
| {{else if eq $kind "html"}}{{html . -}} |
| {{else if eq $kind "caption"}}{{caption . -}} |
| {{else}}???{{$kind}}??? |
| {{- end -}} |
| {{end}} |
| |
| {{define "section"}} |
| <h{{add 1 (len .Number)}} id="TOC_{{.FormattedNumber}}">{{.FormattedNumber}} {{.Title}}</h{{add 1 (len .Number)}}> |
| {{range .Elem}}{{fmt .}}{{end}} |
| {{end}} |
| |
| {{define "list"}} |
| <ul> |
| {{range .Bullet}} |
| <li>{{style .}}</li> |
| {{end}} |
| </ul> |
| {{end}} |
| |
| {{define "text"}} |
| {{if .Pre}} |
| <div class="code"><pre>{{range .Lines}}{{.}}{{end}}</pre></div> |
| {{else}} |
| <p> |
| {{range $i, $l := .Lines}}{{if $i}}{{template "newline"}} |
| {{end}}{{presentStyle $l}}{{end}} |
| </p> |
| {{end}} |
| {{end}} |
| |
| {{define "code"}} |
| <div class="code{{if eq .Ext ".go"}} playground{{end}}" {{if .Edit}}contenteditable="true" spellcheck="false"{{end}}>{{raw .Text}}</div> |
| {{end}} |
| |
| {{define "image"}} |
| <div class="image"> |
| <img src="{{.URL}}"{{with .Height}} height="{{.}}"{{end}}{{with .Width}} width="{{.}}"{{end}}> |
| </div> |
| {{end}} |
| |
| {{define "video"}} |
| <div class="video"> |
| <video {{with .Height}} height="{{.}}"{{end}}{{with .Width}} width="{{.}}"{{end}} controls> |
| <source src="{{.URL}}" type="{{.SourceType}}"> |
| </video> |
| </div> |
| {{end}} |
| |
| {{define "background"}} |
| <div class="background"> |
| <img src="{{.URL}}"> |
| </div> |
| {{end}} |
| |
| {{define "iframe"}} |
| <iframe src="{{.URL}}"{{with .Height}} height="{{.}}"{{end}}{{with .Width}} width="{{.}}"{{end}}></iframe> |
| {{end}} |
| |
| {{define "link"}}<p class="link"><a href="{{.URL}}" target="_blank">{{style .Label}}</a></p>{{end}} |
| |
| {{define "html"}}{{.HTML}}{{end}} |
| |
| {{define "caption"}}<figcaption>{{style .Text}}</figcaption>{{end}} |
| |
| {{define "style" -}} |
| {{presentStyle . -}} |
| {{end}} |