(dst jsWriter, src *Reader)
| 299 | } |
| 300 | |
| 301 | func rwExtension(dst jsWriter, src *Reader) (n int, err error) { |
| 302 | et, err := src.peekExtensionType() |
| 303 | if err != nil { |
| 304 | return 0, err |
| 305 | } |
| 306 | |
| 307 | // registered extensions can override |
| 308 | // the JSON encoding |
| 309 | if j, ok := extensionReg[et]; ok { |
| 310 | var bts []byte |
| 311 | e := j() |
| 312 | err = src.ReadExtension(e) |
| 313 | if err != nil { |
| 314 | return |
| 315 | } |
| 316 | bts, err = json.Marshal(e) |
| 317 | if err != nil { |
| 318 | return |
| 319 | } |
| 320 | return dst.Write(bts) |
| 321 | } |
| 322 | |
| 323 | e := RawExtension{} |
| 324 | e.Type = et |
| 325 | err = src.ReadExtension(&e) |
| 326 | if err != nil { |
| 327 | return |
| 328 | } |
| 329 | |
| 330 | var nn int |
| 331 | err = dst.WriteByte('{') |
| 332 | if err != nil { |
| 333 | return |
| 334 | } |
| 335 | n++ |
| 336 | |
| 337 | nn, err = dst.WriteString(`"type":`) |
| 338 | n += nn |
| 339 | if err != nil { |
| 340 | return |
| 341 | } |
| 342 | |
| 343 | src.scratch = strconv.AppendInt(src.scratch[0:0], int64(e.Type), 10) |
| 344 | nn, err = dst.Write(src.scratch) |
| 345 | n += nn |
| 346 | if err != nil { |
| 347 | return |
| 348 | } |
| 349 | |
| 350 | nn, err = dst.WriteString(`,"data":"`) |
| 351 | n += nn |
| 352 | if err != nil { |
| 353 | return |
| 354 | } |
| 355 | |
| 356 | enc := base64.NewEncoder(base64.StdEncoding, dst) |
| 357 | |
| 358 | nn, err = enc.Write(e.Data) |
nothing calls this directly
no test coverage detected
searching dependent graphs…