@@ -225,6 +225,7 @@ var allowElems = []string{
225
225
"mark" ,
226
226
"ol" ,
227
227
"p" ,
228
+ "picture" ,
228
229
"pre" ,
229
230
"q" ,
230
231
"rp" ,
@@ -234,6 +235,7 @@ var allowElems = []string{
234
235
"samp" ,
235
236
"section" ,
236
237
"small" ,
238
+ "source" ,
237
239
"span" ,
238
240
"strike" ,
239
241
"strong" ,
@@ -292,6 +294,8 @@ var allowAttrs = []allowAttr{
292
294
{"p" , "width" , flexiblewidth }, // pkgsite allows all values
293
295
{"q" , "cite" , validURL },
294
296
{"time" , "datetime" , iso8601 },
297
+ {"source" , "media" , mediaQuery },
298
+ {"source" , "srcset" , validURL },
295
299
{"ol" , "type" , re (`(?i)^(circle|disc|square|a|A|i|I|1)$` )},
296
300
{"ul" , "type" , re (`(?i)^(circle|disc|square|a|A|i|I|1)$` )},
297
301
{"li" , "type" , re (`(?i)^(circle|disc|square|a|A|i|I|1)$` )},
@@ -352,8 +356,9 @@ var allowAttrs = []allowAttr{
352
356
// roundtripAttrs is a map from attribute keys which should be checked
353
357
// against roundtripURL to maps of tags which are allowed to have them.
354
358
var roundtripAttrs = map [string ]map [string ]bool {
355
- "src" : {"img" : true },
356
- "href" : {"a" : true },
359
+ "src" : {"img" : true },
360
+ "srcset" : {"source" : true },
361
+ "href" : {"a" : true },
357
362
"cite" : {
358
363
"blockquote" : true ,
359
364
"del" : true ,
@@ -385,6 +390,8 @@ var integer = re(`^[0-9]+$`)
385
390
var iso8601 = re (`^[0-9]{4}(-[0-9]{2}(-[0-9]{2}([ T][0-9]{2}(:[0-9]{2}){1,2}(.[0-9]{1,6})` +
386
391
`?Z?([\+-][0-9]{2}:[0-9]{2})?)?)?)?$` )
387
392
393
+ var mediaQuery = re (`^[\(\)\s\w\-:./]+$` )
394
+
388
395
func re (rx string ) func (string ) bool {
389
396
return regexp .MustCompile (rx ).MatchString
390
397
}
0 commit comments