Skip to content

Instantly share code, notes, and snippets.

@yinyin
Created August 19, 2020 04:04
Show Gist options
  • Save yinyin/4903b0bcb2a20fe1d7af31b8754695eb to your computer and use it in GitHub Desktop.
Save yinyin/4903b0bcb2a20fe1d7af31b8754695eb to your computer and use it in GitHub Desktop.
Print content of libyaml `yaml_event_t` structure
#include <stdio.h>
#include "yaml.h"
static void print_yaml_event(yaml_event_t *event)
{
char *event_type;
switch (event->type)
{
case YAML_NO_EVENT:
event_type = "YAML_NO_EVENT";
break;
case YAML_STREAM_START_EVENT:
event_type = "YAML_STREAM_START_EVENT";
break;
case YAML_STREAM_END_EVENT:
event_type = "YAML_STREAM_END_EVENT";
break;
case YAML_DOCUMENT_START_EVENT:
event_type = "YAML_DOCUMENT_START_EVENT";
break;
case YAML_DOCUMENT_END_EVENT:
event_type = "YAML_DOCUMENT_END_EVENT";
break;
case YAML_ALIAS_EVENT:
event_type = "YAML_ALIAS_EVENT";
break;
case YAML_SCALAR_EVENT:
event_type = "YAML_SCALAR_EVENT";
break;
case YAML_SEQUENCE_START_EVENT:
event_type = "YAML_SEQUENCE_START_EVENT";
break;
case YAML_SEQUENCE_END_EVENT:
event_type = "YAML_SEQUENCE_END_EVENT";
break;
case YAML_MAPPING_START_EVENT:
event_type = "YAML_MAPPING_START_EVENT";
break;
case YAML_MAPPING_END_EVENT:
event_type = "YAML_MAPPING_END_EVENT";
break;
default:
event_type = "UnknownYAMLEvent";
}
printf("--\nEventType: %s\n", event_type);
switch (event->type)
{
case YAML_SCALAR_EVENT:
if (event->data.scalar.anchor != NULL)
{
printf("scalar.anchor = [%s]\n", event->data.scalar.anchor);
}
if (event->data.scalar.tag != NULL)
{
printf("scalar.tag = [%s]\n", event->data.scalar.tag);
}
if (event->data.scalar.value != NULL)
{
printf("scalar.value = [%s]\n", event->data.scalar.value);
}
printf("scalar.length = %d\n", (int)(event->data.scalar.length));
break;
case YAML_SEQUENCE_START_EVENT:
if (event->data.sequence_start.anchor != NULL)
{
printf("sequence_start.anchor = [%s]\n", event->data.sequence_start.anchor);
}
if (event->data.sequence_start.tag != NULL)
{
printf("sequence_start.tag = [%s]\n", event->data.sequence_start.tag);
}
break;
case YAML_MAPPING_START_EVENT:
if (event->data.mapping_start.anchor != NULL)
{
printf("mapping_start.anchor = [%s]\n", event->data.mapping_start.anchor);
}
if (event->data.mapping_start.tag != NULL)
{
printf("mapping_start.tag = [%s]\n", event->data.mapping_start.tag);
}
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment