コード例 #1
0
ファイル: bogo.c プロジェクト: hainp/bogo-c
/*
Apply all transformations in a list of transformations into a result string.

input_list = [{
    type: TRANS_APPEND,
    key: "a"
},
{
    type: TRANS_TONE,
    key: "s",
    effect: TONE_ACUTE,
    targets: [input_list[0]]
}]

output = "á"
*/
void flatten(bgstr output,
             struct List *transList)
{
    int output_index = 0;

    struct ListItem *iterator = transList->first;
    while (iterator != NULL) {

        struct TransT trans = *((struct TransT *) iterator->item);

        switch (trans.rule->type) {
        case TRANS_APPEND:
            bgstrAssign(output + output_index, trans.rule->key);
            trans.dest_index = output_index;
            output_index++;  // Only TRANS_APPEND creates a new char
            break;
        case TRANS_TONE:
            addToneToChar(output + trans.target->dest_index,
                          trans.rule->transMethod.tone);
            break;
        case TRANS_MARK:
            addMarkToChar(output + trans.target->dest_index,
                          trans.rule->transMethod.mark);
            break;
        }

        iterator = iterator->next;
    }
}
コード例 #2
0
ファイル: test_tone_and_mark.c プロジェクト: sokomo/bogo-c
int testAddMarkToChar(void) {
    initTestCase("Add mark to char");

    bgstr target = "a";
    addMarkToChar(target, MARK_HAT);
    assertStr("â", target);

    // Char should stay the same if non-compatible mark is applied
    bgstrAssign(target, "a");
    addMarkToChar(target, MARK_DASH);
    assertStr("a", target);

    // Should change/remove mark
    bgstrAssign(target, "â");
    addMarkToChar(target, MARK_NONE);
    assertStr("a", target);

    // Should work with upper case chars
    bgstrAssign(target, "D");
    addMarkToChar(target, MARK_DASH);
    assertStr("Đ", target);

    return finishTestCase();
}
コード例 #3
0
ファイル: utils.cpp プロジェクト: ano-qml/BoGoEngine
 ustring addMarkToChar (guint ch, Marks mark) {
     return addMarkToChar (_(ch), mark);
 }
コード例 #4
0
ファイル: utils.cpp プロジェクト: ano-qml/BoGoEngine
 ustring addMarkToChar (const gchar *ch, Marks mark) {
     return addMarkToChar (_(ch), mark);
 }