forked from gobuffalo/buffalo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
html.go
50 lines (45 loc) · 1.74 KB
/
html.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package render
import (
"html"
"github.com/gobuffalo/plush"
"github.com/shurcooL/github_flavored_markdown"
)
// HTML renders the named files using the 'text/html'
// content type and the github.com/gobuffalo/plush
// package for templating. If more than 1 file is provided
// the second file will be considered a "layout" file
// and the first file will be the "content" file which will
// be placed into the "layout" using "<%= yield %>".
func HTML(names ...string) Renderer {
e := New(Options{})
return e.HTML(names...)
}
// HTML renders the named files using the 'text/html'
// content type and the github.com/gobuffalo/plush
// package for templating. If more than 1 file is provided
// the second file will be considered a "layout" file
// and the first file will be the "content" file which will
// be placed into the "layout" using "<%= yield %>". If no
// second file is provided and an `HTMLLayout` is specified
// in the options, then that layout file will be used
// automatically.
func (e *Engine) HTML(names ...string) Renderer {
if e.HTMLLayout != "" && len(names) == 1 {
names = append(names, e.HTMLLayout)
}
hr := templateRenderer{
Engine: e,
contentType: "text/html",
names: names,
}
return hr
}
// MDTemplateEngine runs the input through github flavored markdown before sending it to the Plush engine.
func MDTemplateEngine(input string, data map[string]interface{}, helpers map[string]interface{}) (string, error) {
if ct, ok := data["contentType"].(string); ok && ct == "text/plain" {
return plush.BuffaloRenderer(string(input), data, helpers)
}
source := github_flavored_markdown.Markdown([]byte(input))
source = []byte(html.UnescapeString(string(source)))
return plush.BuffaloRenderer(string(source), data, helpers)
}