typetui 0.2.1

A terminal-based typing test.
Documentation
main :: () {
    x: int = 10;
    y := 20;
    name: string = "Hello, Jai!";
    
    print("x = %, y = %\n", x, y);
    print("%\n", name);
    
    i8_val: s8 = -128;
    i16_val: s16 = -32768;
    i32_val: s32 = -2147483648;
    i64_val: s64 = -9223372036854775808;
    
    u8_val: u8 = 255;
    u16_val: u16 = 65535;
    u32_val: u32 = 4294967295;
    u64_val: u64 = 18446744073709551615;
    
    f32_val: float32 = 3.14159;
    f64_val: float64 = 3.141592653589793;
    
    flag: bool = true;
    
    arr: [5]int = .[1, 2, 3, 4, 5];
    print("Array: %\n", arr);
    
    dynamic: [..]int;
    array_add(*dynamic, 10);
    array_add(*dynamic, 20);
    array_add(*dynamic, 30);
    print("Dynamic array: %\n", dynamic);
    
    str1: string = "Hello";
    str2 := " World";
    combined := tprint("% %", str1, str2);
    print("Combined: %\n", combined);
    
    if x > 5 {
        print("x is greater than 5\n");
    } else if x == 5 {
        print("x equals 5\n");
    } else {
        print("x is less than 5\n");
    }
    
    for i: 0..10 {
        print("% ", i);
    }
    print("\n");
    
    for arr {
        print("% ", it);
    }
    print("\n");
    
    count := 0;
    while count < 5 {
        print("Count: %\n", count);
        count += 1;
    }
    
    result := add(5, 3);
    print("5 + 3 = %\n", result);
    
    print_value(42);
    print_value("Hello");
    print_value(3.14);
    
    person := Person.{"Alice", 30};
    print_person(person);
    
    val := 42;
    ptr := *val;
    print("Value: %, Pointer: %, Deref: %\n", val, ptr, ptr.*);
    
    f_val: float64 = 3.7;
    i_val := cast(int) f_val;
    print("Cast % to int: %\n", f_val, i_val);
}

add :: (a: int, b: int) -> int {
    return a + b;
}

divide :: (a: int, b: int) -> (int, bool) {
    if b == 0 return 0, false;
    return a / b, true;
}

print_value :: (x: int) {
    print("Integer: %\n", x);
}

print_value :: (x: string) {
    print("String: %\n", x);
}

print_value :: (x: float64) {
    print("Float: %\n", x);
}

Person :: struct {
    name: string;
    age: int;
}

print_person :: (p: Person) {
    print("Person: %, age %\n", p.name, p.age);
}

Color :: enum {
    RED;
    GREEN;
    BLUE;
}

PI :: 3.14159265359;
MAX_SIZE :: 100;

#import "Basic";