readCData reads a CDATA section (until `]]>`).
()
| 517 | |
| 518 | // readCData reads a CDATA section (until `]]>`). |
| 519 | func (d *Decoder) readCData() ([]byte, bool) { |
| 520 | if !d.checkAndDiscardPrefix(cdataStart) { |
| 521 | if d.err == nil { |
| 522 | d.setSyntaxErrorf("invalid sequence <![ not part of <![CDATA[") |
| 523 | } |
| 524 | return nil, false |
| 525 | } |
| 526 | |
| 527 | d.buf.Reset() |
| 528 | |
| 529 | // Read until ']]>' |
| 530 | for { |
| 531 | if !d.mustReadUntil('>') { |
| 532 | return nil, false |
| 533 | } |
| 534 | |
| 535 | if d.buf.HasSuffix(cdataEnd) { |
| 536 | break |
| 537 | } |
| 538 | } |
| 539 | |
| 540 | // Trim the trailing ']]>' |
| 541 | d.buf.Remove(len(cdataEnd)) |
| 542 | |
| 543 | return d.buf.Bytes(), true |
| 544 | } |
| 545 | |
| 546 | // readDoctype reads a directive (until `>`). |
| 547 | func (d *Decoder) readDoctype() ([]byte, bool) { |
no test coverage detected