| {{define "entirepage" -}} |
| {{with .doc -}} |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>{{.Title}}</title> |
| <meta charset='utf-8'> |
| <script> |
| var notesEnabled = {{$.NotesEnabled}}; |
| </script> |
| <script src='/talks/static/slides.js'></script> |
| |
| {{if $.NotesEnabled}} |
| <script> |
| var sections = {{.Sections}}; |
| var titleNotes = {{.TitleNotes}} |
| </script> |
| <script src='/talks/static/notes.js'></script> |
| {{end}} |
| |
| <script> |
| // Initialize Google Analytics tracking code on production site only. |
| if (window["location"] && window["location"]["hostname"] == "go.dev/talks") { |
| var _gaq = _gaq || []; |
| _gaq.push(["_setAccount", "UA-11222381-6"]); |
| _gaq.push(["b._setAccount", "UA-49880327-6"]); |
| window.trackPageview = function() { |
| _gaq.push(["_trackPageview", location.pathname+location.hash]); |
| _gaq.push(["b._trackPageview", location.pathname+location.hash]); |
| }; |
| window.trackPageview(); |
| window.trackEvent = function(category, action, opt_label, opt_value, opt_noninteraction) { |
| _gaq.push(["_trackEvent", category, action, opt_label, opt_value, opt_noninteraction]); |
| _gaq.push(["b._trackEvent", category, action, opt_label, opt_value, opt_noninteraction]); |
| }; |
| } |
| </script> |
| </head> |
| |
| <body style='display: none'> |
| |
| <section class='slides layout-widescreen'> |
| |
| <article> |
| <h1>{{.Title}}</h1> |
| {{with .Subtitle}}<h3>{{.}}</h3>{{end}} |
| {{if not .Time.IsZero}}<h3>{{.Time.Format "2 January 2006"}}</h3>{{end}} |
| {{range .Authors}} |
| <div class="presenter"> |
| {{range .TextElem}}{{fmt .}}{{end}} |
| </div> |
| {{end}} |
| </article> |
| |
| {{range $i, $s := .Sections}} |
| <!-- start of slide {{$s.Number}} --> |
| <article {{$s.HTMLAttributes}}> |
| {{if $s.Elem}} |
| <h3>{{$s.Title}}</h3> |
| {{range $s.Elem}}{{fmt .}}{{end}} |
| {{else}} |
| <h2>{{$s.Title}}</h2> |
| {{end}} |
| <span class="pagenumber">{{pagenum $s 1}}</span> |
| </article> |
| <!-- end of slide {{$s.Number}} --> |
| {{end}}{{/* of Slide block */}} |
| |
| <article> |
| <h3>Thank you</h3> |
| {{range .Authors}} |
| <div class="presenter"> |
| {{range .Elem}}{{fmt .}}{{end}} |
| </div> |
| {{end}} |
| </article> |
| |
| </section> |
| |
| <div id="help"> |
| Use the left and right arrow keys or click the left and right |
| edges of the page to navigate between slides.<br> |
| (Press 'H' or navigate to hide this message.) |
| </div> |
| |
| {{if $.PlayEnabled}} |
| <script src='/talks/static/play.js'></script> |
| {{end}} |
| |
| <script> |
| (function() { |
| // Load Google Analytics tracking code on production site only. |
| if (window["location"] && window["location"]["hostname"] == "go.dev/talks") { |
| var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true; |
| ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; |
| var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s); |
| } |
| })(); |
| </script> |
| </body> |
| </html> |
| {{end}} |
| {{end}} |
| |
| {{define "newline"}} |
| <br> |
| {{end}} |
| |
| {{define "pagenum s offset" -}} |
| {{if len .s.Number -}} |
| {{add (index .s.Number 0) .offset -}} |
| {{else -}} |
| {{.offset -}} |
| {{end -}} |
| {{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"}}{{template "html" . -}} {{/* Work around https://github.com/rsc/tmplfunc/issues/1. */ -}} |
| {{else if eq $kind "caption"}}{{caption . -}} |
| {{else}}???{{$kind}}??? |
| {{- end -}} |
| {{end}} |
| |
| {{define "section"}} |
| <h{{len .Number}} id="TOC_{{.FormattedNumber}}">{{.FormattedNumber}} {{.Title}}</h{{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}}{{style $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}} |