This repository has been archived by the owner. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathformatter.go
89 lines (72 loc) · 1.51 KB
/
formatter.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package iglo
import (
"bytes"
"html/template"
"io"
"strings"
"bitbucket.org/pkg/inflect"
bf "github.com/russross/blackfriday"
)
func labelize(method string) string {
switch method {
case "GET":
return "primary"
case "POST":
return "success"
case "PUT":
return "info"
case "PATCH":
return "warning"
case "DELETE":
return "danger"
}
return "default"
}
func markdownize(str string) template.HTML {
b := bf.MarkdownCommon([]byte(str))
return template.HTML(string(b))
}
func HTML(w io.Writer, api *API) error {
return HTMLCustom(Tmpl, w, api)
}
func HTMLCustom(s string, w io.Writer, api *API) error {
funcMap := template.FuncMap{
"dasherize": inflect.Dasherize,
"trim": strings.Trim,
"labelize": labelize,
"markdownize": markdownize,
}
tmpl, err := template.New("html").Funcs(funcMap).Parse(s)
if err != nil {
return err
}
err = tmpl.Execute(w, api.AST)
if err != nil {
return err
}
return nil
}
func MarkdownToHTML(w io.Writer, r io.Reader) error {
return MarkdownToHTMLCustom(Tmpl, w, r)
}
func MarkdownToHTMLCustom(s string, w io.Writer, r io.Reader) error {
data, err := ParseMarkdown(r)
if err != nil {
return err
}
err = JSONToHTMLCustom(s, w, bytes.NewBuffer(data))
if err != nil {
return err
}
return nil
}
func JSONToHTML(w io.Writer, r io.Reader) error {
return JSONToHTMLCustom(Tmpl, w, r)
}
func JSONToHTMLCustom(s string, w io.Writer, r io.Reader) error {
api, err := ParseJSON(r)
if err != nil {
return err
}
return HTMLCustom(s, w, api)
}