bbcode - bbcodehtml/img.go
1 package bbcodehtml
2
3 import (
4 "bytes"
5 "fmt"
6 "html/template"
7 nurl "net/url"
8 "strings"
9
10 "vimagination.zapto.org/bbcode"
11 )
12
13 var (
14 imgOpen = []byte("<img")
15 altOpen = []byte(" alt=\"")
16 )
17
18 type img struct{}
19
20 func (img) Name() string {
21 return "img"
22 }
23
24 func (img) Handle(p *bbcode.Processor, attr string) {
25 if u, err := nurl.Parse(p.GetContents("img")); err == nil {
26 switch strings.ToLower(u.Scheme) {
27 case "http", "https":
28 p.Write(imgOpen)
29 if attr != "" {
30 p.Write(altOpen)
31 var b bytes.Buffer
32 template.HTMLEscape(&b, []byte(attr))
33 p.Write(b.Bytes())
34 p.Write(attrClose)
35 }
36 fmt.Fprintf(p, " src=%q />", u)
37 }
38 }
39 }
40