added escape sequences to arbitrary strings; reworked callback system
This commit is contained in:
@@ -1,15 +1,4 @@
|
||||
|
||||
function lualogic_escapelogicfunction(%text){
|
||||
%text = strReplace(%text, "\\", "\\/");
|
||||
|
||||
%text = strReplace(%text, "\r", "\\r");
|
||||
%text = strReplace(%text, "\n", "\\n");
|
||||
%text = strReplace(%text, "\t", "\\t");
|
||||
%text = strReplace(%text, ";" , "\\:");
|
||||
|
||||
return %text;
|
||||
}
|
||||
|
||||
function lualogic_registergatedefinition(%data){
|
||||
//lualogic_registergatedefinition_auto(%data);
|
||||
|
||||
@@ -36,9 +25,9 @@ function lualogic_registergatedefinition_auto(%data)
|
||||
%def = %id @ ";" @
|
||||
%data.logicUIName @ ";" @
|
||||
%data.logicUIDesc @ ";" @
|
||||
lualogic_escapelogicfunction(%data.logicInit) @ ";" @
|
||||
lualogic_escapelogicfunction(%data.logicUpdate) @ ";" @
|
||||
lualogic_escapelogicfunction(%data.logicInput) @ ";" @
|
||||
lualogic_expandescape(%data.logicInit) @ ";" @
|
||||
lualogic_expandescape(%data.logicUpdate) @ ";" @
|
||||
lualogic_expandescape(%data.logicInput) @ ";" @
|
||||
(%ports = %data.numLogicPorts)
|
||||
;
|
||||
|
||||
@@ -141,7 +130,7 @@ function lualogic_sendinput(%gate, %argc, %arg0, %arg1, %arg2, %arg3, %arg4, %ar
|
||||
{
|
||||
%args = %arg0;
|
||||
for(%i = 1; %i < %argc; %i++)
|
||||
%args = %args @ ";" @ %arg[%i];
|
||||
%args = %args @ ";" @ lualogic_expandescape(%arg[%i]);
|
||||
|
||||
if(%argc > 0)
|
||||
lualogic_send("IN;" @ %gate.getID() @ ";" @ %argc @ ";" @ %args);
|
||||
@@ -244,3 +233,55 @@ function lualogic_readfile(%filename){
|
||||
|
||||
return %filestr;
|
||||
}
|
||||
|
||||
$LuaLogic::EscapeCount = 0;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\\"; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "b"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\t"; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "t"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\n"; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "n"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\r"; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "r"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\'"; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "a"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = "\""; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "q"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = ";" ; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "s"; $LuaLogic::EscapeCount++;
|
||||
$LuaLogic::EscapeIn[$LuaLogic::EscapeCount] = ":" ; $LuaLogic::EscapeOut[$LuaLogic::EscapeCount] = "c"; $LuaLogic::EscapeCount++;
|
||||
|
||||
function lualogic_expandescape(%str){
|
||||
%ostr = "";
|
||||
|
||||
%len = strLen(%str);
|
||||
for(%i=0; %i<%len; %i++){
|
||||
%ci = getSubStr(%str, %i, 1);
|
||||
|
||||
%co = %ci;
|
||||
for(%j=0; %j<$LuaLogic::EscapeCount; %j++){
|
||||
if(%ci$=$LuaLogic::EscapeIn[%j]){ %co = "\\" @ $LuaLogic::EscapeOut[%j]; }
|
||||
}
|
||||
|
||||
%ostr = %ostr @ %co;
|
||||
}
|
||||
|
||||
return %ostr;
|
||||
}
|
||||
|
||||
function lualogic_collapseescape(%str){
|
||||
%ostr = "";
|
||||
|
||||
%i = 0;
|
||||
%len = strLen(%str);
|
||||
while(%i<%len){
|
||||
%ci = getSubStr(%str, %i, 1);
|
||||
|
||||
%co = %ci;
|
||||
if(%ci=="\\" && %i<%len-1){
|
||||
%i++;
|
||||
%ci = getSubStr(%str, %i, 1);
|
||||
for(%j=0; %j<$LuaLogic::EscapeCount; %j++){
|
||||
if(%ci$=$LuaLogic::EscapeOut[%j]){ %co = $LuaLogic::EscapeIn[%j]; }
|
||||
}
|
||||
}
|
||||
|
||||
%ostr = %ostr @ %co;
|
||||
%i++;
|
||||
}
|
||||
|
||||
return %ostr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user