MCPcopy
hub / github.com/go-yaml/yaml / yaml_emitter_analyze_scalar

Function yaml_emitter_analyze_scalar

emitterc.go:1255–1406  ·  view source on GitHub ↗

Check if a scalar is valid.

(emitter *yaml_emitter_t, value []byte)

Source from the content-addressed store, hash-verified

1253
1254// Check if a scalar is valid.
1255func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {
1256 var (
1257 block_indicators = false
1258 flow_indicators = false
1259 line_breaks = false
1260 special_characters = false
1261 tab_characters = false
1262
1263 leading_space = false
1264 leading_break = false
1265 trailing_space = false
1266 trailing_break = false
1267 break_space = false
1268 space_break = false
1269
1270 preceded_by_whitespace = false
1271 followed_by_whitespace = false
1272 previous_space = false
1273 previous_break = false
1274 )
1275
1276 emitter.scalar_data.value = value
1277
1278 if len(value) == 0 {
1279 emitter.scalar_data.multiline = false
1280 emitter.scalar_data.flow_plain_allowed = false
1281 emitter.scalar_data.block_plain_allowed = true
1282 emitter.scalar_data.single_quoted_allowed = true
1283 emitter.scalar_data.block_allowed = false
1284 return true
1285 }
1286
1287 if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {
1288 block_indicators = true
1289 flow_indicators = true
1290 }
1291
1292 preceded_by_whitespace = true
1293 for i, w := 0, 0; i < len(value); i += w {
1294 w = width(value[i])
1295 followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)
1296
1297 if i == 0 {
1298 switch value[i] {
1299 case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`':
1300 flow_indicators = true
1301 block_indicators = true
1302 case '?', ':':
1303 flow_indicators = true
1304 if followed_by_whitespace {
1305 block_indicators = true
1306 }
1307 case '-':
1308 if followed_by_whitespace {
1309 flow_indicators = true
1310 block_indicators = true
1311 }
1312 }

Callers 1

Calls 7

widthFunction · 0.85
is_blankFunction · 0.85
is_printableFunction · 0.85
is_asciiFunction · 0.85
is_spaceFunction · 0.85
is_breakFunction · 0.85
is_blankzFunction · 0.85

Tested by

no test coverage detected