Exemple #1
0
void set_with_selector__formatSource(caValue* source, Term* term)
{
    Term* selector = term->input(1);
    if (selector->function != FUNCS.selector) {
        format_term_source_default_formatting(source, term);
        return;
    }

    // Don't call format_name_binding here

    format_source_for_input(source, term, 0, "", "");

    selector_format_source(source, selector);

    append_phrase(source, term->stringProp("syntax:preEqualsSpace",""), term, tok_Whitespace);

    if (term->hasProperty("syntax:rebindOperator")) {
        append_phrase(source, term->stringProp("syntax:rebindOperator",""), term, tok_Equals);
        append_phrase(source, term->stringProp("syntax:postEqualsSpace",""), term, tok_Whitespace);
        format_source_for_input(source, term->input(2), 1, "", "");
    } else {
        append_phrase(source, "=", term, tok_Equals);
        append_phrase(source, term->stringProp("syntax:postEqualsSpace",""), term, tok_Whitespace);
        format_source_for_input(source, term, 2, "", "");
    }
}
Exemple #2
0
 void formatSource(caValue* source, Term* term)
 {
     if (term->boolProp("syntax:brackets", false)) {
         format_name_binding(source, term);
         format_source_for_input(source, term, 0);
         append_phrase(source, "[", term, tok_LBracket);
         format_source_for_input(source, term, 1);
         append_phrase(source, "]", term, tok_LBracket);
     } else {
         format_term_source_default_formatting(source, term);
     }
 }
Exemple #3
0
 void switch_formatSource(caValue* source, Term* term)
 {
     format_name_binding(source, term);
     append_phrase(source, "switch ", term, name_Keyword);
     format_source_for_input(source, term, 0);
     format_branch_source(source, nested_contents(term), term);
 }
Exemple #4
0
 void format_heading(StyledSource* source, Term* term)
 {
     format_name_binding(source, term);
     append_phrase(source, "for ", term, phrase_type::KEYWORD);
     append_phrase(source, for_loop_get_iterator_name(term),
             term, phrase_type::UNDEFINED);
     append_phrase(source, " in ", term, phrase_type::KEYWORD);
     format_source_for_input(source, term, 0);
 }
Exemple #5
0
    void formatSource(caValue* source, Term* term)
    {
        format_name_binding(source, term);

        Block* contents = nested_contents(term);

        int index = 0;
        while (contents->get(index)->function == FUNCS.input)
            index++;

        bool firstCase = true;

        for (; index < contents->length(); index++) {
            Term* caseTerm = contents->get(index);

            if (caseTerm->function != FUNCS.case_func)
                break;

            if (is_hidden(caseTerm))
                continue;

            append_phrase(source,
                    caseTerm->stringProp("syntax:preWhitespace", ""),
                    caseTerm, tok_Whitespace);

            if (firstCase) {
                append_phrase(source, "if ", caseTerm, sym_Keyword);
                format_source_for_input(source, caseTerm, 0);
                firstCase = false;
            } else if (caseTerm->input(0) != NULL) {
                append_phrase(source, "elif ", caseTerm, sym_Keyword);
                format_source_for_input(source, caseTerm, 0);
            }
            else
                append_phrase(source, "else", caseTerm, sym_None);

            // whitespace following the if/elif/else
            append_phrase(source,
                    caseTerm->stringProp("syntax:lineEnding", ""),
                    caseTerm, tok_Whitespace);

            format_block_source(source, nested_contents(caseTerm), caseTerm);
        }
    }
Exemple #6
0
void get_with_selector__formatSource(caValue* source, Term* term)
{
    Term* selector = term->input(1);
    if (selector->function != FUNCS.selector) {
        // Unusual case; bail out with default formatting.
        format_term_source_default_formatting(source, term);
        return;
    }

    format_name_binding(source, term);
    format_source_for_input(source, term, 0, "", "");
    selector_format_source(source, selector);
}
Exemple #7
0
void selector_format_source(caValue* source, Term* term)
{
    // Append subscripts for each selector element
    for (int i=0; i < term->numInputs(); i++) {
        Term* input = term->input(i);

        if (is_value(input) && is_string(term_value(input))) {
            append_phrase(source, ".", input, tok_Dot);
            append_phrase(source, as_string(term_value(input)),
                    input, tok_Identifier);

        } else {
            append_phrase(source, "[", term, tok_LBracket);
            format_source_for_input(source, term, i, "", "");
            append_phrase(source, "]", term, tok_LBracket);
        }
    }
}
Exemple #8
0
 void case_formatSource(caValue* source, Term* term)
 {
     append_phrase(source, "case ", term, name_Keyword);
     format_source_for_input(source, term, 0);
     format_branch_source(source, nested_contents(term), term);
 }
Exemple #9
0
 void formatSource(StyledSource* source, Term* term)
 {
     append_phrase(source, "-", term, phrase_type::INFIX_OPERATOR);
     format_source_for_input(source, term, 0);
 }