diff --git a/clib/printf.cpp b/clib/printf.cpp index 6c23832..3c56067 100644 --- a/clib/printf.cpp +++ b/clib/printf.cpp @@ -14,6 +14,11 @@ std::string mini_sprintf_format(bool left_align, bool sign, bool space_on_left, if (specifier == 's') { return value.as_string(); } + if (specifier == 'c') { + std::ostringstream stream_str; + stream_str << (char) value.as_int(); + return stream_str.str(); + } if (specifier == 'i' || specifier == 'd') { int ival = value.as_int(); is_positive = ival >= 0; @@ -96,6 +101,7 @@ std::string mini_sprintf(const std::string &format_str, const std::vector= format_str.end()) return output_str; // invalid end of string - if (*si == 'i' || *si == 'd' || *si == 'f' || *si == 's') { // TODO more specifiers + if (*si == 'i' || *si == 'd' || *si == 'f' || *si == 's' || *si == 'c') { // TODO more specifiers std::string s = mini_sprintf_format(left_align, sign, space_on_left, padding_by_zero, width, precision, length, *si, parameters[arg_position]); arg_position++; output_str += s; diff --git a/ml_string.h b/ml_string.h index 64bb8ae..0a11ced 100644 --- a/ml_string.h +++ b/ml_string.h @@ -6,7 +6,6 @@ #include #include -// Replace a substring with a replacement string in a source string void replace_substring(std::string &src, const std::string &substr, const std::string &replacement); // Returns true if where contains regex @@ -22,4 +21,4 @@ std::string string_padd(const std::string & str, int pad_len, char fill_char, bo std::string string_substring(const std::string & str, long pos, long count); -size_t string_find_substr(const std::string & str, const std::string & pattern, long pos); \ No newline at end of file +size_t string_find_substr(const std::string & str, const std::string & pattern, long pos); diff --git a/stdlib/stdlib.lsp b/stdlib/stdlib.lsp index 6fd241e..537a8b3 100644 --- a/stdlib/stdlib.lsp +++ b/stdlib/stdlib.lsp @@ -39,6 +39,7 @@ rslt )) +(defun itok (ascii) (sprintf "%c" (list ascii))) ; pause for interval of seconds (defun sleep (time) diff --git a/tests/test.lsp b/tests/test.lsp index 394a881..092581b 100644 --- a/tests/test.lsp +++ b/tests/test.lsp @@ -71,6 +71,9 @@ (ut::define-test "result of (string-find \" long long int;\" \"o\")" '(ut::assert-equal 2 (string-find " long long int;" "o"))) (ut::define-test "result of (string-find \" long long int;\" \"float\")" '(ut::assert-nil (string-find " long long int;" "float"))) +(ut::define-test "result of (itok 65)" '(ut::assert-equal "A" (itok 65))) +(ut::define-test "result of (itok 48)" '(ut::assert-equal "0" (itok 48))) + (ut::define-test "result of (write-file \"/tmp/file\" \"write-file test\")" '(ut::assert-equal 1 (write-file "/tmp/file" "write-file test\n"))) (ut::define-test "result of (is-file? \"/tmp/file\")" '(ut::assert-true (is-file? "/tmp/file"))) (ut::define-test "result of (is-file? \"/tmp/file_whichnotex_ists\")" '(ut::assert-false (is-file? "/tmp/file_whichnotex_ists")))