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/LuaScriptInterface.cpp | |
| parent | d25384c36c427d4afd71f87f8282b1a981c4b563 (diff) | |
| download | powder-afe9e061e1d173731d8a5122c397a2caf4fe61ab.zip powder-afe9e061e1d173731d8a5122c397a2caf4fe61ab.tar.gz | |
Better names for sort, allow showing own saves
Diffstat (limited to 'src/cat/LuaScriptInterface.cpp')
| -rw-r--r-- | src/cat/LuaScriptInterface.cpp | 61 |
1 files changed, 60 insertions, 1 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() { |
