Check if a scalar is valid.
(emitter *yaml_emitter_t, value []byte)
| 1253 | |
| 1254 | // Check if a scalar is valid. |
| 1255 | func 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 | } |
no test coverage detected