in yaml/scannerc.go [1738:1794]
func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {
var handle_value, prefix_value []byte
// Eat whitespaces.
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
return false
}
for is_blank(parser.buffer, parser.buffer_pos) {
skip(parser)
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
return false
}
}
// Scan a handle.
if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {
return false
}
// Expect a whitespace.
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
return false
}
if !is_blank(parser.buffer, parser.buffer_pos) {
yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
start_mark, "did not find expected whitespace")
return false
}
// Eat whitespaces.
for is_blank(parser.buffer, parser.buffer_pos) {
skip(parser)
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
return false
}
}
// Scan a prefix.
if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {
return false
}
// Expect a whitespace or line break.
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
return false
}
if !is_blankz(parser.buffer, parser.buffer_pos) {
yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
start_mark, "did not find expected whitespace or line break")
return false
}
*handle = handle_value
*prefix = prefix_value
return true
}