Copy a line break character to a string buffer and advance pointers.
(parser *yaml_parser_t, s []byte)
| 566 | |
| 567 | // Copy a line break character to a string buffer and advance pointers. |
| 568 | func read_line(parser *yaml_parser_t, s []byte) []byte { |
| 569 | buf := parser.buffer |
| 570 | pos := parser.buffer_pos |
| 571 | switch { |
| 572 | case buf[pos] == '\r' && buf[pos+1] == '\n': |
| 573 | // CR LF . LF |
| 574 | s = append(s, '\n') |
| 575 | parser.buffer_pos += 2 |
| 576 | parser.mark.index++ |
| 577 | parser.unread-- |
| 578 | case buf[pos] == '\r' || buf[pos] == '\n': |
| 579 | // CR|LF . LF |
| 580 | s = append(s, '\n') |
| 581 | parser.buffer_pos += 1 |
| 582 | case buf[pos] == '\xC2' && buf[pos+1] == '\x85': |
| 583 | // NEL . LF |
| 584 | s = append(s, '\n') |
| 585 | parser.buffer_pos += 2 |
| 586 | case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): |
| 587 | // LS|PS . LS|PS |
| 588 | s = append(s, buf[parser.buffer_pos:pos+3]...) |
| 589 | parser.buffer_pos += 3 |
| 590 | default: |
| 591 | return s |
| 592 | } |
| 593 | parser.mark.index++ |
| 594 | parser.mark.column = 0 |
| 595 | parser.mark.line++ |
| 596 | parser.unread-- |
| 597 | parser.newlines++ |
| 598 | return s |
| 599 | } |
| 600 | |
| 601 | // Get the next token. |
| 602 | func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { |
no outgoing calls
no test coverage detected