示例#1
0
文件: cdiff.c 项目: rfloresx/corto
void cdiff_file_write(
    cdiff_file file, 
    char *fmt, 
    ...) 
{
    corto_assert(file != NULL, "NULL specified for file");

    if (file->newLine && file->indent) {
        int i;
        for (i = 0; i < file->indent * 4; i++) {
            corto_buffer_appendstrn(&file->writeBuffer, " ", 1);
        }
    }

    va_list args;
    va_start(args, fmt);
    corto_buffer_vappend(&file->writeBuffer, fmt, args);
    va_end(args);

    /* If no element specified for writing, write to new text element. */
    if (!file->cur && file->isNew) {
        cdiff_elem *el = corto_calloc(sizeof(cdiff_elem));
        el->kind = CDIFF_TEXT;
        el->body = corto_buffer_str(&file->writeBuffer);
        if (!file->elements) {
            file->elements = corto_ll_new();
        }
        corto_ll_append(file->elements, el);
        file->writeBuffer = CORTO_BUFFER_INIT;
    }

    file->newLine = fmt[strlen(fmt) - 1] == '\n';
}
示例#2
0
文件: cdiff.c 项目: rfloresx/corto
void cdiff_file_writeBuffer(
    cdiff_file file,
    corto_buffer *buffer)
{
    char *str = corto_buffer_str(buffer);
    cdiff_file_write(file, "%s", str);
    free(str);
}
示例#3
0
文件: cdiff.c 项目: rfloresx/corto
void cdiff_file_bodyEnd(cdiff_file file) {
    corto_assert(file != NULL, "NULL specified for file");
    corto_assert(file->writeTo == 2, "not writing to body");

    file->cur->body = corto_buffer_str(&file->writeBuffer);

    file->writeTo = 0;
    file->isChanged = TRUE;
}
示例#4
0
文件: cdiff.c 项目: rfloresx/corto
static corto_ll cdiff_parse(char *src) {
    corto_ll elements = corto_ll_new();
    corto_id id;
    char *ptr = src;

    corto_buffer header = CORTO_BUFFER_INIT, body = CORTO_BUFFER_INIT;
    id[0] = '\0';

    while ((ptr = cdiff_parseElem(ptr, id, &header, &body)) && *ptr) {
        char *h = corto_buffer_str(&header);
        char *b = corto_buffer_str(&body);
        cdiff_addElem(elements, id[0] ? strdup(id) : NULL, h, b);
    }

    char *h = corto_buffer_str(&header);
    char *b = corto_buffer_str(&body);
    cdiff_addElem(elements, id[0] ? strdup(id) : NULL, h, b);

    return elements;
}
示例#5
0
文件: cdiff.c 项目: rfloresx/corto
void cdiff_file_headerEnd(cdiff_file file) {
    corto_assert(file != NULL, "NULL specified for file");
    corto_assert(file->writeTo == 1, "not writing to header");

    char *header = corto_buffer_str(&file->writeBuffer);
    if (!file->cur->header) {
        file->cur->header = header;
    } else if (strcmp(header, file->cur->header)) {
        corto_ptr_setstr(&file->cur->header, header);
        file->isChanged = TRUE;
    }

    file->writeTo = 0;
}
示例#6
0
文件: value.c 项目: rfloresx/corto
corto_string corto_value_str(corto_value* v, corto_uint32 maxLength) {
    corto_string_ser_t serData;
    corto_walk_opt s;

    serData.buffer = CORTO_BUFFER_INIT;
    serData.buffer.max = maxLength;
    serData.compactNotation = TRUE;
    serData.prefixType = FALSE;
    serData.enableColors = FALSE;

    s = corto_string_ser(CORTO_LOCAL, CORTO_NOT, CORTO_WALK_TRACE_NEVER);
    corto_walk_value(&s, v, &serData);
    corto_string result = corto_buffer_str(&serData.buffer);
    corto_walk_deinit(&s, &serData);
    return result;
}
示例#7
0
文件: Buffer.c 项目: daltonwang/corto
 * Only code written between the begin and end tags will be preserved
 * when the file is regenerated.
 */

#include <test.h>

corto_void _test_Buffer_tc_append(
    test_Buffer this)
{
/* $begin(test/Buffer/tc_append) */
    corto_buffer b = CORTO_BUFFER_INIT;

    corto_bool proceed = corto_buffer_append(&b, "Foo");
    test_assert(proceed == TRUE);

    corto_string str = corto_buffer_str(&b);
    test_assert(str != NULL);
    test_assertstr(str, "Foo");

/* $end */
}

corto_void _test_Buffer_tc_appendEmpty(
    test_Buffer this)
{
/* $begin(test/Buffer/tc_appendEmpty) */
    corto_buffer b = CORTO_BUFFER_INIT;

    corto_bool proceed = corto_buffer_append(&b, "");
    test_assert(proceed == TRUE);