code: func read_line(parser *yaml_parser_t, s []byte) []byte {
  	buf := parser.buffer
  	pos := parser.buffer_pos
  	switch {
  	case buf[pos] == '\r' && buf[pos+1] == '\n':
  		// CR LF . LF
  		s = append(s, '\n')
  		parser.buffer_pos += 2
  		parser.mark.index++
  		parser.unread--
  	case buf[pos] == '\r' || buf[pos] == '\n':
  		// CR|LF . LF
  		s = append(s, '\n')
  		parser.buffer_pos += 1
  	case buf[pos] == '\xC2' && buf[pos+1] == '\x85':
  		// NEL . LF
  		s = append(s, '\n')
  		parser.buffer_pos += 2
  	case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'):
  		// LS|PS . LS|PS
  		s = append(s, buf[parser.buffer_pos:pos+3]...)
  		parser.buffer_pos += 3
  	default:
  		return s
  	}
  	parser.mark.index++
  	parser.mark.column = 0
  	parser.mark.line++
  	parser.unread--
  	return s
  }
docs: // Copy a line break character to a string buffer and advance pointers.