MCPcopy Create free account
hub / github.com/gogs/gogs / wrapImgWithLink

Function wrapImgWithLink

internal/markup/markup.go:180–241  ·  view source on GitHub ↗

wrapImgWithLink warps link to standalone tags.

(urlPrefix string, buf *bytes.Buffer, token html.Token)

Source from the content-addressed store, hash-verified

178
179// wrapImgWithLink warps link to standalone <img> tags.
180func wrapImgWithLink(urlPrefix string, buf *bytes.Buffer, token html.Token) {
181 // Extract "src" and "alt" attributes
182 var src, alt string
183 for i := range token.Attr {
184 switch token.Attr[i].Key {
185 case "src":
186 src = token.Attr[i].Val
187 case "alt":
188 alt = token.Attr[i].Val
189 }
190 }
191
192 // Skip in case the "src" is empty
193 if src == "" {
194 buf.WriteString(token.String())
195 return
196 }
197
198 // Skip in case the "src" is data url
199 if strings.HasPrefix(src, "data:") {
200 buf.WriteString(token.String())
201 return
202 }
203
204 // Prepend repository base URL for internal links
205 needPrepend := !isLink([]byte(src))
206 if needPrepend {
207 urlPrefix = strings.Replace(urlPrefix, "/src/", "/raw/", 1)
208 if src[0] != '/' {
209 urlPrefix += "/"
210 }
211 }
212
213 buf.WriteString(`<a href="`)
214 if needPrepend {
215 buf.WriteString(urlPrefix)
216 buf.WriteString(src)
217 } else {
218 buf.WriteString(src)
219 }
220 buf.WriteString(`">`)
221
222 if needPrepend {
223 src = strings.ReplaceAll(urlPrefix+src, " ", "%20")
224 buf.WriteString(`<img src="`)
225 buf.WriteString(src)
226 buf.WriteString(`"`)
227
228 if len(alt) > 0 {
229 buf.WriteString(` alt="`)
230 buf.WriteString(alt)
231 buf.WriteString(`"`)
232 }
233
234 buf.WriteString(`>`)
235
236 } else {
237 buf.WriteString(token.String())

Callers 1

postProcessHTMLFunction · 0.85

Calls 3

isLinkFunction · 0.85
ReplaceAllMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected