diff --git a/README.md b/README.md index a6c4706..27d13a6 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Currently missing big features (TODOs) are: - ~~Unary operators~~ - ~~Floats~~ (DONE) - ~~Type casting~~ (DONE) -- Built-in Int/Float division and modulo +- ~~Built-in Int/Float division and modulo~~ - Loops - Debug Information (PARTIALLY DONE) - Ability to specify types in literals and variable definitions diff --git a/examples/hello_world.reid b/examples/hello_world.reid index cf7661d..fac2c9d 100644 --- a/examples/hello_world.reid +++ b/examples/hello_world.reid @@ -10,7 +10,7 @@ fn main() -> i32 { add_char(&mut test, '!'); set_char(&mut test, 'B', 0); - add_num_to_str(&mut test, 7); + add_num_to_str(&mut test, 1234); print(&test); diff --git a/reid/lib/std.reid b/reid/lib/std.reid index ae3e13a..01ef3a0 100644 --- a/reid/lib/std.reid +++ b/reid/lib/std.reid @@ -93,14 +93,19 @@ fn str_length(string: *char, position: u32) -> u32 { } pub fn add_num_to_str(string: &mut String, num: u64) { - if num == 0 { add_char(string, '0'); } - else if num == 1 { add_char(string, '1'); } - else if num == 2 { add_char(string, '2'); } - else if num == 3 { add_char(string, '3'); } - else if num == 4 { add_char(string, '4'); } - else if num == 5 { add_char(string, '5'); } - else if num == 6 { add_char(string, '6'); } - else if num == 7 { add_char(string, '7'); } - else if num == 8 { add_char(string, '8'); } - else if num == 9 { add_char(string, '9'); } + if num > 10 { + add_num_to_str(string, num / 10) + } + let rem = num % 10; + + if rem == 0 { add_char(string, '0'); } + else if rem == 1 { add_char(string, '1'); } + else if rem == 2 { add_char(string, '2'); } + else if rem == 3 { add_char(string, '3'); } + else if rem == 4 { add_char(string, '4'); } + else if rem == 5 { add_char(string, '5'); } + else if rem == 6 { add_char(string, '6'); } + else if rem == 7 { add_char(string, '7'); } + else if rem == 8 { add_char(string, '8'); } + else if rem == 9 { add_char(string, '9'); } } \ No newline at end of file