From 1f11670461adc682f4bf0e94a8c67f87c96a4f2c Mon Sep 17 00:00:00 2001 From: komi Date: Fri, 24 Jan 2025 14:09:00 -0300 Subject: [PATCH] tiny now accept arguments when running --- .gitignore | 4 +++ main.cpp | 43 ++++++++++++++++++++++---------- term.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ term.h | 52 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 158 insertions(+), 13 deletions(-) create mode 100644 .gitignore create mode 100644 term.cpp create mode 100644 term.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9993b8b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +a.exe +test.tmk +tiny +tiny.tmk diff --git a/main.cpp b/main.cpp index 910aaba..4325c50 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,7 @@ #include std::string get(std::string); std::map variables; +std::map functions; #define CALL "" #ifdef _WIN32 @@ -20,48 +21,63 @@ std::map variables; #undef CALL #define CALL "exec" #endif - +#include "term.h" int call( std::string lines){ std::string com; com.append(CALL); - printf("command:%s\n\nexecuting\n\n\n",lines.c_str()); + success("command:%s\nexecuting\n\n",lines.c_str()); com.append(lines.c_str()); system(com.c_str()); - printf("\n\n\n"); + success("\n\n"); return 0; } - +ErrorLevel level(1); int set(std::string setter){ std::string name=setter.substr(setter.find_first_of(" ")+1,setter.find("=")-4); std::string value=setter.substr(setter.find("=")+1); - variables[name.c_str()]=value.c_str(); - printf("key %s set as value %s\n\n",name.c_str(),value.c_str()); - //printf("\nvar: %s\n",variables[name].c_str()); + variables[name]=value; + warning("key %s set as value %s\n\n",name.c_str(),value.c_str()); + //success("\nvar: %s\n",variables[name].c_str()); + return 0; } +int fn(std::string setter,int pos){ + std::string name=setter.substr(setter.find_first_of(":")+1); + functions[name]=pos; + warning("function %s set in position %i\n\n",name.c_str(),pos); + //success("\nvar: %s\n",variables[name].c_str()); + return 0; +} std::string get(std::string key){ std::string k=key.substr(key.find_first_of('%')+1,key.find_last_of('%')-1); std::string var=variables[k]; if (var==""){ - printf("\ncould not get variable with key \"%s\"\n",k.c_str()); + error("\ncould not get variable with key \"%s\"\n",k.c_str()); exit(1); } - //printf("\ngetting variable \"%s\" with key \"%s\"\n",var.c_str(),k.c_str()); + //success("\ngetting variable \"%s\" with key \"%s\"\n",var.c_str(),k.c_str()); return var; } int main(int argc, char *argv[]){ - printf("tiny runner v0.5\n\n\n"); + for (int i=2;i +#include +#include +#include + + + + +void echo(char * info,...){ + if (level.value==4) + { + va_list arg; + std::string mixer=info; + mixer.append("\n"); + const char * finalinfo=mixer.c_str(); + va_start (arg, finalinfo); + vfprintf (stdout, finalinfo, arg); + va_end (arg);} +} +void warning( char * info,...){ + if (level.value>=1) + { + va_list arg; + std::string mixer=YELLOW; + mixer.append(info); mixer.append("\033[0m\n"); + const char * finalinfo=mixer.c_str(); + va_start (arg, finalinfo); + vfprintf (stdout, finalinfo, arg); + va_end (arg);} +} +void error( char * info,...){ + if (level.value>=0) + { + va_list arg; + std::string mixer=BOLDRED; + mixer.append(info); mixer.append("\033[0m\n"); + const char * finalinfo=mixer.c_str(); + va_start (arg, finalinfo); + vfprintf (stdout, finalinfo, arg); + va_end (arg); +}} +void success(char * info , ...){ + if (level.value>=2) + { + va_list arg; + std::string mixer=GREEN; + mixer.append(info); mixer.append("\033[0m\n"); + const char * finalinfo=mixer.c_str(); + va_start (arg, finalinfo); + vfprintf (stdout, finalinfo, arg); + va_end (arg);} +} +void message(char * info , ...){ + if (level.value>=3) + { + va_list arg; + std::string mixer=BOLDWHITE; + mixer.append(info); mixer.append("\033[0m\n"); + const char * finalinfo=mixer.c_str(); + va_start (arg, finalinfo); + vfprintf (stdout, finalinfo, arg); + va_end (arg);} +} +void startup(char* game,char*version){ + + echo("%s %s",game,version); + warning("be warned that"); + error("ERRORS MIGHT OCCUR!!!"); + success("but dont worry"); + message("this is not an error"); +} \ No newline at end of file diff --git a/term.h b/term.h new file mode 100644 index 0000000..668ec3e --- /dev/null +++ b/term.h @@ -0,0 +1,52 @@ +#pragma once +void echo(char* info,...); +void warning( char * info,...); +void error( char * info,...); +void success(char * info , ...); +void message(char * info , ...); +void startup(char* game,char*version); +struct ErrorLevel { + int value; + ErrorLevel(int var){ + + this->value=var; + } + void setvalue(int var){ + this->value=var; + } +}; +extern ErrorLevel level; +/* +-1: none +0: error +1: success +2: warning +3: message +4: echo +*/ + + + + + + + + + +#define WHITE "\033[0m" /* White */ +#define BLACK "\033[30m" /* Black */ +#define RED "\033[31m" /* Red */ +#define GREEN "\033[32m" /* Green */ +#define YELLOW "\033[33m" /* Yellow */ +#define BLUE "\033[34m" /* Blue */ +#define MAGENTA "\033[35m" /* Magenta */ +#define CYAN "\033[36m" /* Cyan */ +#define WHITE "\033[37m" /* White */ +#define BOLDBLACK "\033[1m\033[30m" /* Bold Black */ +#define BOLDRED "\033[1m\033[31m" /* Bold Red */ +#define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ +#define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ +#define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */ +#define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ +#define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */ +#define BOLDWHITE "\033[1m\033[37m" /* Bold White */ \ No newline at end of file