[Feature] Markdown Checklist-renderingtags/v1.2.0-rc1
| @@ -142,6 +142,16 @@ func (r *CustomRender) AutoLink(out *bytes.Buffer, link []byte, kind int) { | |||||
| r.Renderer.AutoLink(out, link, kind) | r.Renderer.AutoLink(out, link, kind) | ||||
| } | } | ||||
| func (options *CustomRender) ListItem(out *bytes.Buffer, text []byte, flags int) { | |||||
| switch { | |||||
| case bytes.HasPrefix(text, []byte("[ ] ")): | |||||
| text = append([]byte(`<input type="checkbox" disabled="" />`), text[3:]...) | |||||
| case bytes.HasPrefix(text, []byte("[x] ")): | |||||
| text = append([]byte(`<input type="checkbox" disabled="" checked="" />`), text[3:]...) | |||||
| } | |||||
| options.Renderer.ListItem(out, text, flags) | |||||
| } | |||||
| var ( | var ( | ||||
| svgSuffix = []byte(".svg") | svgSuffix = []byte(".svg") | ||||
| svgSuffixWithMark = []byte(".svg?") | svgSuffixWithMark = []byte(".svg?") | ||||
| @@ -31,7 +31,16 @@ import ( | |||||
| "github.com/gogits/gogs/modules/setting" | "github.com/gogits/gogs/modules/setting" | ||||
| ) | ) | ||||
| var Sanitizer = bluemonday.UGCPolicy().AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code") | |||||
| func BuildSanitizer() (p *bluemonday.Policy) { | |||||
| p = bluemonday.UGCPolicy() | |||||
| p.AllowAttrs("class").Matching(regexp.MustCompile(`[\p{L}\p{N}\s\-_',:\[\]!\./\\\(\)&]*`)).OnElements("code") | |||||
| p.AllowAttrs("type").Matching(regexp.MustCompile(`^checkbox$`)).OnElements("input") | |||||
| p.AllowAttrs("checked", "disabled").OnElements("input") | |||||
| return p | |||||
| } | |||||
| var Sanitizer = BuildSanitizer() | |||||
| // EncodeMD5 encodes string to md5 hex value. | // EncodeMD5 encodes string to md5 hex value. | ||||
| func EncodeMD5(str string) string { | func EncodeMD5(str string) string { | ||||