diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-02-12 16:47:01 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-02-12 16:47:01 (GMT) |
| commit | afe9e061e1d173731d8a5122c397a2caf4fe61ab (patch) | |
| tree | f045221d8718c44b8af516cb58bdb45c3c74114b /src/cat | |
| parent | d25384c36c427d4afd71f87f8282b1a981c4b563 (diff) | |
| download | powder-afe9e061e1d173731d8a5122c397a2caf4fe61ab.zip powder-afe9e061e1d173731d8a5122c397a2caf4fe61ab.tar.gz | |
Better names for sort, allow showing own saves
Diffstat (limited to 'src/cat')
| -rw-r--r-- | src/cat/LuaScriptInterface.cpp | 61 | ||||
| -rw-r--r-- | src/cat/TPTScriptInterface.cpp | 37 |
2 files changed, 61 insertions, 37 deletions
diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index 3591d3d..f007a9f 100644 --- a/src/cat/LuaScriptInterface.cpp +++ b/src/cat/LuaScriptInterface.cpp @@ -201,6 +201,7 @@ tpt.partsdata = nil"); { lua_el_mode[i] = 0; } + } void LuaScriptInterface::Tick() @@ -216,7 +217,65 @@ int LuaScriptInterface::Command(std::string command) std::string LuaScriptInterface::FormatCommand(std::string command) { - return command; + //char ** keywords = {"and", "break", "do", "else", "elseif", "end", "false", "for", "function", "if", "in", "local", "nil", "not", "or", "repeat", "return", "then", "true", "until", "while", NULL}; + //char ** functions = {"_VERSION", "assert", "collectgarbage", "dofile", "error", "gcinfo", "loadfile", "loadstring", "print", "tonumber", "tostring", "type", "unpack", "_ALERT", "_ERRORMESSAGE", "_INPUT", "_PROMPT", "_OUTPUT", "_STDERR", "_STDIN", "_STDOUT", "call", "dostring", "foreach", "foreachi", "getn", "globals", "newtype", "rawget", "rawset", "require", "sort", "tinsert", "tremove", "_G", "getfenv", "getmetatable", "ipairs", "loadlib", "next", "pairs", "pcall", "rawegal", "rawget", "rawset", "require", "setfenv", "setmetatable", "xpcall", "string", "table", "math", "coroutine", "io", "os", "debug"}; + char * rawText = (char*)command.c_str(); + char * outputData = (char *)calloc(command.length()*6, 1); + char lastWord[command.length()]; + int lastWordChar = 0; + lastWord[0] = 0; + int rawTextLoc = 0; + int outputDataLoc = 0; + std::stack<char> pstack; + while(rawText[rawTextLoc]) + { + switch(rawText[rawTextLoc]) + { + case '\\': + outputData[outputDataLoc++] = rawText[rawTextLoc++]; + if(rawText[rawTextLoc]) + outputData[outputDataLoc++] = rawText[rawTextLoc++]; + break; + case '"': + if(pstack.size() && pstack.top() == '"') + { + pstack.pop(); + outputData[outputDataLoc++] = rawText[rawTextLoc++]; + outputData[outputDataLoc++] = '\b'; + outputData[outputDataLoc++] = 'w'; + } + else + { + pstack.push('"'); + outputData[outputDataLoc++] = '\b'; + outputData[outputDataLoc++] = 'o'; + outputData[outputDataLoc++] = rawText[rawTextLoc++]; + } + break; + case '(': + pstack.push('('); + outputData[outputDataLoc++] = '\b'; + outputData[outputDataLoc++] = 't'; + strcpy(outputData+(outputDataLoc++), lastWord); + outputData[outputDataLoc++] = '\b'; + outputData[outputDataLoc++] = 'w'; + lastWord[0] = 0; + lastWordChar = 0; + break; + default: + if(pstack.top()!='"') + { + lastWord[lastWordChar++] = rawText[rawTextLoc++]; + lastWord[lastWordChar] = 0; + } + else + { + outputData[outputDataLoc++] = rawText[rawTextLoc++]; + } + break; + } + } + return outputData; } LuaScriptInterface::~LuaScriptInterface() { diff --git a/src/cat/TPTScriptInterface.cpp b/src/cat/TPTScriptInterface.cpp index f758438..a3f468c 100644 --- a/src/cat/TPTScriptInterface.cpp +++ b/src/cat/TPTScriptInterface.cpp @@ -137,7 +137,7 @@ std::string TPTScriptInterface::FormatCommand(std::string command) currentWord = ++currentCommand; } words.push_back(std::string(currentWord)); - + free(rawCommand); while(!words.empty()) { ValueType cType = testType(words.front()); @@ -160,41 +160,6 @@ std::string TPTScriptInterface::FormatCommand(std::string command) outputData += words.front() + " "; words.pop_front(); } - /*char * rawText = (char*)command.c_str(); - char * outputData = (char *)calloc(command.length()*6, 1); - int rawTextLoc = 0; - int outputDataLoc = 0; - std::stack<char> pstack; - while(rawText[rawTextLoc]) - { - switch(rawText[rawTextLoc]) - { - case '\\': - outputData[outputDataLoc++] = rawText[rawTextLoc++]; - if(rawText[rawTextLoc]) - outputData[outputDataLoc++] = rawText[rawTextLoc++]; - break; - case '"': - if(pstack.size() && pstack.top() == '"') - { - pstack.pop(); - outputData[outputDataLoc++] = rawText[rawTextLoc++]; - outputData[outputDataLoc++] = '\b'; - outputData[outputDataLoc++] = 'w'; - } - else - { - pstack.push('"'); - outputData[outputDataLoc++] = '\b'; - outputData[outputDataLoc++] = 'o'; - outputData[outputDataLoc++] = rawText[rawTextLoc++]; - } - break; - default: - outputData[outputDataLoc++] = rawText[rawTextLoc++]; - break; - } - }*/ return outputData; } |
