#include "misc.h"
#include "repl.h"

bool str_startswith_word(const char *str, const char *head) {
    int i;
    for (i = 0; str[i] && head[i]; i++) {
        if (str[i] != head[i]) {
            return false;
        }
    }
    return head[i] == '\0' && (str[i] == '\0' || !g_unichar_isalpha(str[i]));
}

bool py_repl_is_compound_stmt(const char *line) {
    // compound if line starts with a certain keyword
    if (
           str_startswith_word(line, "if")
        || str_startswith_word(line, "while")
        || str_startswith_word(line, "for")
        || str_startswith_word(line, "true")
        || str_startswith_word(line, "with")
        || str_startswith_word(line, "def")
        || str_startswith_word(line, "class")
        || str_startswith_word(line, "@")
       ) {
        return true;
    }

    // also "compound" if unmatched open bracket
    int n_paren = 0;
    int n_brack = 0;
    int n_brace = 0;
    for (const char *l = line; *l; l++) {
        switch (*l) {
            case '(': n_paren += 1; break;
            case ')': n_paren -= 1; break;
            case '[': n_brack += 1; break;
            case ']': n_brack -= 1; break;
            case '{': n_brace += 1; break;
            case '}': n_brace -= 1; break;
        }
    }
    return n_paren > 0 || n_brack > 0 || n_brace > 0;
}
