예제 #1
0
파일: json.c 프로젝트: kevinbirch/kanabo
bool emit_json(const nodelist *list)
{
    log_debug(component, "emitting...");
    size_t count = 0;
    QEMIT("[");
    bool result = nodelist_iterate(list, emit_json_sequence_item, &count);
    QEMIT("]");
    QEMIT("\n");

    return result;
}
예제 #2
0
파일: yaml.c 프로젝트: kazufusa/kanabo
static bool emit_nodelist(const nodelist *list, yaml_emitter_t *emitter)
{
    log_trace(component, "emitting nodelist");
    yaml_event_t event;

    log_trace(component, "seqence start");
    yaml_sequence_start_event_initialize(&event, NULL, (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG, 1, YAML_BLOCK_SEQUENCE_STYLE);
    if (!yaml_emitter_emit(emitter, &event))
        return false;

    if(!nodelist_iterate(list, emit_sequence_item, emitter))
    {
        return false;
    }

    log_trace(component, "seqence end");
    yaml_sequence_end_event_initialize(&event);
    if (!yaml_emitter_emit(emitter, &event))
        return false;

    return true;
}
예제 #3
0
파일: zsh.c 프로젝트: kevinbirch/kanabo
bool emit_zsh(const nodelist *list)
{
    log_debug("zsh", "emitting...");
    emit_context context =
        {
            .emit_mapping_item = emit_mapping_item,
            .wrap_collections = false
        };

    return nodelist_iterate(list, emit_node, &context);
}

static bool emit_mapping_item(Node *key, Node *value, void * context __attribute__((unused)))
{
    if(is_scalar(value))
    {
        log_trace("zsh", "emitting mapping item");
        if(!emit_scalar(scalar(key)))
        {
            log_error("zsh", "uh oh! couldn't emit mapping key");
            return false;
        }
        EMIT(" ");
        if(!emit_scalar(scalar(value)))
        {
            log_error("zsh", "uh oh! couldn't emit mapping value");
            return false;
        }
        EMIT(" ");
    }
    else
    {
        log_trace("zsh", "skipping mapping item");
    }

    return true;
}