1
1
Fork 0
mirror of https://github.com/boxgaming/qbjs.git synced 2024-09-19 20:14:58 +00:00

Extended support for $If metacommand, fixed issue when a negative number is used in an array initializer with format "x To y"

This commit is contained in:
boxgaming 2023-05-12 07:09:56 -05:00
parent 5f6aa252f2
commit 2211501f5c
2 changed files with 93 additions and 49 deletions

110
qb2js.js
View file

@ -207,6 +207,8 @@ if (QB.halted()) { return; }
typeMode = False;
var jsMode = 0; /* INTEGER */
jsMode = False;
var ignoreMode = 0; /* INTEGER */
ignoreMode = False;
var i = 0; /* INTEGER */
var indent = 0; /* INTEGER */
var tempIndent = 0; /* INTEGER */
@ -239,11 +241,20 @@ if (QB.halted()) { return; }
first = (QB.func_UCase( QB.arrayValue(parts, [ 1]).value));
if ( jsMode == True) {
if ( first == "$END" ) {
jsMode = False;
await sub_AddJSLine( 0, "//-------- END JS native code block --------");
if ( jsMode) {
jsMode = False;
await sub_AddJSLine( 0, "//-------- END JS native code block --------");
}
} else {
await sub_AddJSLine( i, QB.arrayValue(lines, [ i]).value .text);
}
} else if ( ignoreMode == True) {
if ( first == "$END" ) {
ignoreMode = False;
}
} else if ( first == "$END" ) {
} else if ( first == "$ELSE" || first == "$ELSEIF" ) {
ignoreMode = True;
} else if ( typeMode == True) {
if ( first == "END" ) {
var second = ''; /* STRING */
@ -390,6 +401,8 @@ if (QB.halted()) { return; }
if ((QB.func_UCase( QB.arrayValue(parts, [ 2]).value)) == "JAVASCRIPT" ) {
jsMode = True;
js = "//-------- BEGIN JS native code block --------";
} else if ((QB.func_UCase( QB.arrayValue(parts, [ 2]).value)) != "WEB" ) {
ignoreMode = True;
}
}
} else if ( first == "DO" ) {
@ -1514,7 +1527,16 @@ var FormatArraySize = null;
if ( scount == 1) {
sizeParams = sizeParams + "{l:0,u:" + QB.arrayValue(subparts, [ 1]).value + "}";
} else {
sizeParams = sizeParams + "{l:" + QB.arrayValue(subparts, [ 1]).value + ",u:" + QB.arrayValue(subparts, [ 3]).value + "}";
var toIndex = 0; /* INTEGER */
var ___v2637929 = 0; for ( toIndex= 0; toIndex <= scount; toIndex= toIndex + 1) { if (QB.halted()) { return; } ___v2637929++; if (___v2637929 % 100 == 0) { await QB.autoLimit(); }
if ("TO" == (QB.func_UCase( QB.arrayValue(subparts, [ toIndex]).value)) ) {
break;
}
}
var lb = ''; /* STRING */ var ub = ''; /* STRING */
lb = (await func_Join( subparts , 1, toIndex - 1, " "));
ub = (await func_Join( subparts , toIndex + 1, - 1, " "));
sizeParams = sizeParams + "{l:" + lb + ",u:" + ub + "}";
}
}
FormatArraySize = sizeParams;
@ -1535,7 +1557,7 @@ var InitTypeValue = null;
var typeId = 0; /* INTEGER */
typeId = (await func_FindTypeId( vtype));
var i = 0; /* INTEGER */
var ___v2637929 = 0; for ( i= 1; i <= (QB.func_UBound( typeVars)); i= i + 1) { if (QB.halted()) { return; } ___v2637929++; if (___v2637929 % 100 == 0) { await QB.autoLimit(); }
var ___v2793420 = 0; for ( i= 1; i <= (QB.func_UBound( typeVars)); i= i + 1) { if (QB.halted()) { return; } ___v2793420++; if (___v2793420 % 100 == 0) { await QB.autoLimit(); }
if ( typeId == QB.arrayValue(typeVars, [ i]).value .typeId) {
value = value + QB.arrayValue(typeVars, [ i]).value .name + ":" + (await func_InitTypeValue( QB.arrayValue(typeVars, [ i]).value .type)) + ",";
}
@ -1551,7 +1573,7 @@ var FindTypeId = null;
var id = 0; /* INTEGER */
id = - 1;
var i = 0; /* INTEGER */
var ___v2793420 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v2793420++; if (___v2793420 % 100 == 0) { await QB.autoLimit(); }
var ___v8298016 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v8298016++; if (___v8298016 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(types, [ i]).value .name == typeName) {
id = i;
break;
@ -1573,7 +1595,7 @@ var ConvertExpression = null;
var stringLiteral = 0; /* INTEGER */
var i = 0; /* INTEGER */
i = 1;
var ___v8298016 = 0; while ( i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v8298016++; if (___v8298016 % 100 == 0) { await QB.autoLimit(); }
var ___v8246022 = 0; while ( i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v8246022++; if (___v8246022 % 100 == 0) { await QB.autoLimit(); }
c = (QB.func_Mid( ex, i, 1));
if ( c == (QB.func_Chr( 34)) ) {
js = js + c;
@ -1637,7 +1659,7 @@ var ConvertExpression = null;
var stringLiteral2 = 0; /* INTEGER */
stringLiteral2 = False;
i = i + 1;
var ___v8246022 = 0; while (! done && i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v8246022++; if (___v8246022 % 100 == 0) { await QB.autoLimit(); }
var ___v5891630 = 0; while (! done && i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v5891630++; if (___v5891630 % 100 == 0) { await QB.autoLimit(); }
c2 = (QB.func_Mid( ex, i, 1));
if ( c2 == (QB.func_Chr( 34)) ) {
stringLiteral2 = ! stringLiteral2;
@ -1695,7 +1717,7 @@ var ConvertMethodParams = null;
var argc = 0; /* INTEGER */
argc = (await func_ListSplit( args, params));
var i = 0; /* INTEGER */
var ___v5891630 = 0; for ( i= 1; i <= argc; i= i + 1) { if (QB.halted()) { return; } ___v5891630++; if (___v5891630 % 100 == 0) { await QB.autoLimit(); }
var ___v9860932 = 0; for ( i= 1; i <= argc; i= i + 1) { if (QB.halted()) { return; } ___v9860932++; if (___v9860932 % 100 == 0) { await QB.autoLimit(); }
if ( i > 1) {
js = js + ",";
}
@ -1727,7 +1749,7 @@ var FindVariable = null;
var i = 0; /* INTEGER */
var fvarname = ''; /* STRING */
fvarname = (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( varname))))));
var ___v9860932 = 0; for ( i= 1; i <= (QB.func_UBound( localVars)); i= i + 1) { if (QB.halted()) { return; } ___v9860932++; if (___v9860932 % 100 == 0) { await QB.autoLimit(); }
var ___v9109643 = 0; for ( i= 1; i <= (QB.func_UBound( localVars)); i= i + 1) { if (QB.halted()) { return; } ___v9109643++; if (___v9109643 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(localVars, [ i]).value .isArray == isArray && (QB.func_UCase( QB.arrayValue(localVars, [ i]).value .name)) == fvarname) {
found = True;
bvar.type = QB.arrayValue(localVars, [ i]).value .type;
@ -1741,7 +1763,7 @@ var FindVariable = null;
}
}
if (! found) {
var ___v9109643 = 0; for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v9109643++; if (___v9109643 % 100 == 0) { await QB.autoLimit(); }
var ___v2268660 = 0; for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v2268660++; if (___v2268660 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(globalVars, [ i]).value .isArray == isArray && (QB.func_UCase( QB.arrayValue(globalVars, [ i]).value .name)) == fvarname) {
found = True;
bvar.type = QB.arrayValue(globalVars, [ i]).value .type;
@ -1764,7 +1786,7 @@ var FindMethod = null;
var found = 0; /* INTEGER */
found = False;
var i = 0; /* INTEGER */
var ___v2268660 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v2268660++; if (___v2268660 % 100 == 0) { await QB.autoLimit(); }
var ___v6951155 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6951155++; if (___v6951155 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(methods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) && QB.arrayValue(methods, [ i]).value .type == t) {
found = True;
m.line = QB.arrayValue(methods, [ i]).value .line;
@ -1780,7 +1802,7 @@ var FindMethod = null;
}
}
if (! found) {
var ___v6951155 = 0; for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v6951155++; if (___v6951155 % 100 == 0) { await QB.autoLimit(); }
var ___v9800032 = 0; for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v9800032++; if (___v9800032 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(exportMethods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) && QB.arrayValue(exportMethods, [ i]).value .type == t) {
found = True;
m.line = QB.arrayValue(exportMethods, [ i]).value .line;
@ -1803,7 +1825,7 @@ async function sub_ConvertMethods() {
if (QB.halted()) { return; }
await sub_AddJSLine( 0, "");
var i = 0; /* INTEGER */
var ___v9800032 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v9800032++; if (___v9800032 % 100 == 0) { await QB.autoLimit(); }
var ___v2439314 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v2439314++; if (___v2439314 % 100 == 0) { await QB.autoLimit(); }
if ((QB.arrayValue(methods, [ i]).value .line != 0) ) {
var lastLine = 0; /* INTEGER */
lastLine = QB.arrayValue(methods, [ i + 1]).value .line - 1;
@ -1818,7 +1840,7 @@ if (QB.halted()) { return; }
var c = 0; /* INTEGER */
c = (await func_Split( QB.arrayValue(methods, [ i]).value .args, "," , args));
var a = 0; /* INTEGER */
var ___v2439314 = 0; for ( a= 1; a <= c; a= a + 1) { if (QB.halted()) { return; } ___v2439314++; if (___v2439314 % 100 == 0) { await QB.autoLimit(); }
var ___v5338731 = 0; for ( a= 1; a <= c; a= a + 1) { if (QB.halted()) { return; } ___v5338731++; if (___v5338731 % 100 == 0) { await QB.autoLimit(); }
var v = 0; /* INTEGER */
var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */
v = (await func_Split( QB.arrayValue(args, [ a]).value , ":" , parts));
@ -1851,7 +1873,7 @@ if (QB.halted()) { return; }
await sub_AddJSLine( lastLine, "}");
}
}
var ___v5338731 = 0; for ( i= 1; i <= (QB.func_UBound( exportLines)); i= i + 1) { if (QB.halted()) { return; } ___v5338731++; if (___v5338731 % 100 == 0) { await QB.autoLimit(); }
var ___v1063697 = 0; for ( i= 1; i <= (QB.func_UBound( exportLines)); i= i + 1) { if (QB.halted()) { return; } ___v1063697++; if (___v1063697 % 100 == 0) { await QB.autoLimit(); }
await sub_AddJSLine( i, QB.arrayValue(exportLines, [ i]).value);
}
QB.resizeArray(exportLines, [{l:0,u:0}], '', false); /* STRING */
@ -1862,13 +1884,13 @@ if (QB.halted()) { return; }
var lineIndex = 0; /* INTEGER */
var rawJS = 0; /* SINGLE */
QB.sub_Open(filename, QB.INPUT, 1);
var ___v1063697 = 0; while (!((QB.func_EOF( 1)))) { if (QB.halted()) { return; }___v1063697++; if (___v1063697 % 100 == 0) { await QB.autoLimit(); }
var ___v9994146 = new Array(1); await QB.sub_LineInputFromFile(1, ___v9994146); fline = ___v9994146[0];
var ___v9994146 = 0; while (!((QB.func_EOF( 1)))) { if (QB.halted()) { return; }___v9994146++; if (___v9994146 % 100 == 0) { await QB.autoLimit(); }
var ___v6761759 = new Array(1); await QB.sub_LineInputFromFile(1, ___v6761759); fline = ___v6761759[0];
lineIndex = lineIndex + 1;
if ((QB.func__Trim( fline)) != "" ) {
var ___v6761759 = 0; while ((await func_EndsWith( fline, " _"))) { if (QB.halted()) { return; }___v6761759++; if (___v6761759 % 100 == 0) { await QB.autoLimit(); }
var ___v157039 = 0; while ((await func_EndsWith( fline, " _"))) { if (QB.halted()) { return; }___v157039++; if (___v157039 % 100 == 0) { await QB.autoLimit(); }
var nextLine = ''; /* STRING */
var ___v157039 = new Array(1); await QB.sub_LineInputFromFile(1, ___v157039); nextLine = ___v157039[0];
var ___v5751838 = new Array(1); await QB.sub_LineInputFromFile(1, ___v5751838); nextLine = ___v5751838[0];
fline = (QB.func_Left( fline, (QB.func_Len( fline)) - 1)) + nextLine;
}
rawJS = (await func_ReadLine( lineIndex, fline, rawJS));
@ -1883,13 +1905,13 @@ if (QB.halted()) { return; }
var lcount = 0; /* INTEGER */
var i = 0; /* INTEGER */
lcount = (await func_Split( sourceText, await func_LF(), sourceLines));
var ___v5751838 = 0; for ( i= 1; i <= lcount; i= i + 1) { if (QB.halted()) { return; } ___v5751838++; if (___v5751838 % 100 == 0) { await QB.autoLimit(); }
var ___v1000522 = 0; for ( i= 1; i <= lcount; i= i + 1) { if (QB.halted()) { return; } ___v1000522++; if (___v1000522 % 100 == 0) { await QB.autoLimit(); }
var fline = ''; /* STRING */
fline = QB.arrayValue(sourceLines, [ i]).value;
if ((QB.func__Trim( fline)) != "" ) {
var lineIndex = 0; /* INTEGER */
lineIndex = i;
if ((await func_StartsWith( (QB.func_UCase( fline)) , "IMPORT")) ) {
if ((await func_StartsWith( (QB.func_LTrim( (QB.func_UCase( fline)))) , "IMPORT")) ) {
var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */
var pcount = 0; /* INTEGER */
pcount = (await func_SLSplit( fline, parts , False));
@ -1907,7 +1929,7 @@ if (QB.halted()) { return; }
continue;
}
}
var ___v1000522 = 0; while ((await func_EndsWith( fline, "_"))) { if (QB.halted()) { return; }___v1000522++; if (___v1000522 % 100 == 0) { await QB.autoLimit(); }
var ___v1030226 = 0; while ((await func_EndsWith( fline, "_"))) { if (QB.halted()) { return; }___v1030226++; if (___v1030226 % 100 == 0) { await QB.autoLimit(); }
i = i + 1;
var nextLine = ''; /* STRING */
nextLine = QB.arrayValue(sourceLines, [ i]).value;
@ -1923,7 +1945,7 @@ var ReadLine = null;
var quoteDepth = 0; /* INTEGER */
quoteDepth = 0;
var i = 0; /* INTEGER */
var ___v1030226 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v1030226++; if (___v1030226 % 100 == 0) { await QB.autoLimit(); }
var ___v7988844 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v7988844++; if (___v7988844 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */ var c4 = ''; /* STRING */
c = (QB.func_Mid( fline, i, 1));
c4 = (QB.func_UCase( (QB.func_Mid( fline, i, 4))));
@ -1983,7 +2005,7 @@ var ReadLine = null;
var dcount = 0; /* INTEGER */
var de = QB.initArray([{l:0,u:0}], ''); /* STRING */
dcount = (await func_ListSplit( dstr, de));
var ___v7988844 = 0; for ( i= 1; i <= dcount; i= i + 1) { if (QB.halted()) { return; } ___v7988844++; if (___v7988844 % 100 == 0) { await QB.autoLimit(); }
var ___v2844803 = 0; for ( i= 1; i <= dcount; i= i + 1) { if (QB.halted()) { return; } ___v2844803++; if (___v2844803 % 100 == 0) { await QB.autoLimit(); }
index = (QB.func_UBound( dataArray)) + 1;
QB.resizeArray(dataArray, [{l:0,u:index}], '', true); /* STRING */
QB.arrayValue(dataArray, [ index]).value = QB.arrayValue(de, [ i]).value;
@ -1991,7 +2013,7 @@ var ReadLine = null;
return ReadLine;
}
var ifIdx = 0; /* INTEGER */ var thenIdx = 0; /* INTEGER */ var elseIdx = 0; /* INTEGER */
var ___v2844803 = 0; for ( i= 1; i <= wcount; i= i + 1) { if (QB.halted()) { return; } ___v2844803++; if (___v2844803 % 100 == 0) { await QB.autoLimit(); }
var ___v456492 = 0; for ( i= 1; i <= wcount; i= i + 1) { if (QB.halted()) { return; } ___v456492++; if (___v456492 % 100 == 0) { await QB.autoLimit(); }
word = (QB.func_UCase( QB.arrayValue(words, [ i]).value));
if ( word == "IF" ) {
ifIdx = i;
@ -2021,7 +2043,7 @@ if (QB.halted()) { return; }
var quoteDepth = 0; /* INTEGER */
quoteDepth = 0;
var i = 0; /* INTEGER */
var ___v456492 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v456492++; if (___v456492 % 100 == 0) { await QB.autoLimit(); }
var ___v2957728 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v2957728++; if (___v2957728 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */
c = (QB.func_Mid( fline, i, 1));
if ( c == (QB.func_Chr( 34)) ) {
@ -2045,7 +2067,7 @@ if (QB.halted()) { return; }
var pcount = 0; /* INTEGER */
var rawJS = 0; /* INTEGER */
var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */
var ___v2957728 = 0; for ( i= 1; i <= (QB.func_UBound( lines)); i= i + 1) { if (QB.halted()) { return; } ___v2957728++; if (___v2957728 % 100 == 0) { await QB.autoLimit(); }
var ___v3820107 = 0; for ( i= 1; i <= (QB.func_UBound( lines)); i= i + 1) { if (QB.halted()) { return; } ___v3820107++; if (___v3820107 % 100 == 0) { await QB.autoLimit(); }
pcount = (await func_Split( QB.arrayValue(lines, [ i]).value .text, " " , parts));
var word = ''; /* STRING */
word = (QB.func_UCase( QB.arrayValue(parts, [ 1]).value));
@ -2089,7 +2111,7 @@ if (QB.halted()) { return; }
var a = 0; /* INTEGER */
var args = ''; /* STRING */
args = "";
var ___v3820107 = 0; for ( a= 1; a <= m.argc; a= a + 1) { if (QB.halted()) { return; } ___v3820107++; if (___v3820107 % 100 == 0) { await QB.autoLimit(); }
var ___v3009705 = 0; for ( a= 1; a <= m.argc; a= a + 1) { if (QB.halted()) { return; } ___v3009705++; if (___v3009705 % 100 == 0) { await QB.autoLimit(); }
var aparts = QB.initArray([{l:0,u:0}], ''); /* STRING */
var apcount = 0; /* INTEGER */
var argname = ''; /* STRING */
@ -2125,7 +2147,7 @@ var Split = null;
if ( delimiter == " " ) {
cstr = (QB.func_RTrim( (QB.func_LTrim( cstr))));
p = (QB.func_InStr( cstr, " "));
var ___v3009705 = 0; while ( p > 0) { if (QB.halted()) { return; }___v3009705++; if (___v3009705 % 100 == 0) { await QB.autoLimit(); }
var ___v9485711 = 0; while ( p > 0) { if (QB.halted()) { return; }___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); }
cstr = (QB.func_Mid( cstr, 1, p - 1)) + (QB.func_Mid( cstr, p + 1));
p = (QB.func_InStr( cstr, " "));
}
@ -2133,7 +2155,7 @@ var Split = null;
curpos = 1;
arrpos = 0;
dpos = (QB.func_InStr( curpos, cstr, delimiter));
var ___v9485711 = 0; while (!( dpos == 0)) { if (QB.halted()) { return; }___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); }
var ___v9798294 = 0; while (!( dpos == 0)) { if (QB.halted()) { return; }___v9798294++; if (___v9798294 % 100 == 0) { await QB.autoLimit(); }
arrpos = arrpos + 1;
QB.resizeArray(results, [{l:0,u:arrpos}], '', true); /* STRING */
QB.arrayValue(results, [ arrpos]).value = (QB.func_Mid( cstr, curpos, dpos - curpos));
@ -2158,7 +2180,7 @@ var SLSplit = null;
var result = ''; /* STRING */
var count = 0; /* INTEGER */
var i = 0; /* INTEGER */
var ___v9798294 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v9798294++; if (___v9798294 % 100 == 0) { await QB.autoLimit(); }
var ___v4013744 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v4013744++; if (___v4013744 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */ var c2 = ''; /* STRING */
c = (QB.func_Mid( cstr, i, 1));
c2 = (QB.func_Mid( cstr, i, 2));
@ -2260,7 +2282,7 @@ var SLSplit2 = null;
var paren = 0; /* INTEGER */
var count = 0; /* INTEGER */
var i = 0; /* INTEGER */
var ___v4013744 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v4013744++; if (___v4013744 % 100 == 0) { await QB.autoLimit(); }
var ___v2782800 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v2782800++; if (___v2782800 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */
c = (QB.func_Mid( cstr, i, 1));
if ( c == (QB.func_Chr( 34)) ) {
@ -2309,7 +2331,7 @@ var ListSplit = null;
var count = 0; /* INTEGER */
var paren = 0; /* INTEGER */
var i = 0; /* INTEGER */
var ___v2782800 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v2782800++; if (___v2782800 % 100 == 0) { await QB.autoLimit(); }
var ___v1604415 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1604415++; if (___v1604415 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */
c = (QB.func_Mid( cstr, i, 1));
if ( c == (QB.func_Chr( 34)) ) {
@ -2354,7 +2376,7 @@ var PrintSplit = null;
var count = 0; /* INTEGER */
var paren = 0; /* INTEGER */
var i = 0; /* INTEGER */
var ___v1604415 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1604415++; if (___v1604415 % 100 == 0) { await QB.autoLimit(); }
var ___v1628216 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1628216++; if (___v1628216 % 100 == 0) { await QB.autoLimit(); }
var c = ''; /* STRING */
c = (QB.func_Mid( cstr, i, 1));
if ( c == (QB.func_Chr( 34)) ) {
@ -2398,7 +2420,7 @@ if (QB.halted()) { return; }
await QB.sub_Print(["Methods"]);
await QB.sub_Print(["------------------------------------------------------------"]);
var i = 0; /* INTEGER */
var ___v1628216 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v1628216++; if (___v1628216 % 100 == 0) { await QB.autoLimit(); }
var ___v6465872 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6465872++; if (___v6465872 % 100 == 0) { await QB.autoLimit(); }
var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */
m = QB.arrayValue(methods, [ i]).value;
await QB.sub_Print([(QB.func_Str( m.line)) + ": " + m.type + " - " + m.name + " [" + m.jsname + "] - " + m.returnType + " - " + m.args]);
@ -2410,12 +2432,12 @@ if (QB.halted()) { return; }
await QB.sub_Print(["Types"]);
await QB.sub_Print(["------------------------------------------------------------"]);
var i = 0; /* INTEGER */
var ___v6465872 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v6465872++; if (___v6465872 % 100 == 0) { await QB.autoLimit(); }
var ___v4100732 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v4100732++; if (___v4100732 % 100 == 0) { await QB.autoLimit(); }
var t = {line:0,name:'',argc:0,args:''}; /* QBTYPE */
t = QB.arrayValue(types, [ i]).value;
await QB.sub_Print([(QB.func_Str( t.line)) + ": " + t.name]);
var v = 0; /* INTEGER */
var ___v4100732 = 0; for ( v= 1; v <= (QB.func_UBound( typeVars)); v= v + 1) { if (QB.halted()) { return; } ___v4100732++; if (___v4100732 % 100 == 0) { await QB.autoLimit(); }
var ___v4127668 = 0; for ( v= 1; v <= (QB.func_UBound( typeVars)); v= v + 1) { if (QB.halted()) { return; } ___v4127668++; if (___v4127668 % 100 == 0) { await QB.autoLimit(); }
if (QB.arrayValue(typeVars, [ i]).value .typeId == i) {
await QB.sub_Print([" -> " + QB.arrayValue(typeVars, [ v]).value .name + ": " + QB.arrayValue(typeVars, [ v]).value .type]);
}
@ -2624,7 +2646,7 @@ if (QB.halted()) { return; }
var pairs = QB.initArray([{l:0,u:0}], ''); /* STRING */
count = (await func_Split( args, "," , pairs));
var i = 0; /* INTEGER */
var ___v4127668 = 0; for ( i= 1; i <= (QB.func_UBound( pairs)); i= i + 1) { if (QB.halted()) { return; } ___v4127668++; if (___v4127668 % 100 == 0) { await QB.autoLimit(); }
var ___v7127304 = 0; for ( i= 1; i <= (QB.func_UBound( pairs)); i= i + 1) { if (QB.halted()) { return; } ___v7127304++; if (___v7127304 % 100 == 0) { await QB.autoLimit(); }
var nv = QB.initArray([{l:0,u:0}], ''); /* STRING */
count = (await func_Split( QB.arrayValue(pairs, [ i]).value , ":" , nv));
var tvar = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */
@ -2652,7 +2674,7 @@ var RemoveSuffix = null;
var c = ''; /* STRING */
vname = (QB.func__Trim( vname));
i = (QB.func_Len( vname));
var ___v7127304 = 0; while (! done) { if (QB.halted()) { return; }___v7127304++; if (___v7127304 % 100 == 0) { await QB.autoLimit(); }
var ___v3262062 = 0; while (! done) { if (QB.halted()) { return; }___v3262062++; if (___v3262062 % 100 == 0) { await QB.autoLimit(); }
c = (QB.func_Mid( vname, i, 1));
if ( c == "`" || c == "%" || c == "&" || c == "$" || c == "~" || c == "!" || c == "#" ) {
i = i - 1;
@ -2737,7 +2759,7 @@ var Join = null;
}
var s = ''; /* STRING */
var i = 0; /* INTEGER */
var ___v3262062 = 0; for ( i= startIndex; i <= endIndex; i= i + 1) { if (QB.halted()) { return; } ___v3262062++; if (___v3262062 % 100 == 0) { await QB.autoLimit(); }
var ___v6331789 = 0; for ( i= startIndex; i <= endIndex; i= i + 1) { if (QB.halted()) { return; } ___v6331789++; if (___v6331789 % 100 == 0) { await QB.autoLimit(); }
s = s + QB.arrayValue(parts, [ i]).value;
if ( i != (QB.func_UBound( parts)) ) {
s = s + delimiter;
@ -2761,7 +2783,7 @@ var Replace = null;
var i = 0; /* INTEGER */
var slen = 0; /* INTEGER */
slen = (QB.func_Len( searchString));
var ___v6331789 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v6331789++; if (___v6331789 % 100 == 0) { await QB.autoLimit(); }
var ___v2075611 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v2075611++; if (___v2075611 % 100 == 0) { await QB.autoLimit(); }
if ((QB.func_Mid( s, i, slen)) == searchString) {
ns = ns + newString;
i = i + slen - 1;
@ -2803,7 +2825,7 @@ var MethodJS = null;
var i = 0; /* INTEGER */
var c = ''; /* STRING */
var a = 0; /* INTEGER */
var ___v2075611 = 0; for ( i= 1; i <= (QB.func_Len( m.name)); i= i + 1) { if (QB.halted()) { return; } ___v2075611++; if (___v2075611 % 100 == 0) { await QB.autoLimit(); }
var ___v1860135 = 0; for ( i= 1; i <= (QB.func_Len( m.name)); i= i + 1) { if (QB.halted()) { return; } ___v1860135++; if (___v1860135 % 100 == 0) { await QB.autoLimit(); }
c = (QB.func_Mid( m.name, i, 1));
a = (QB.func_Asc( c));
if (( a >= 65 && a <= 90) || ( a >= 97 && a <= 122) || ( a >= 48 && a <= 57) || a == 95 || a == 46) {
@ -2829,7 +2851,7 @@ var GXMethodJS = null;
var i = 0; /* INTEGER */
var c = ''; /* STRING */
var a = 0; /* INTEGER */
var ___v1860135 = 0; for ( i= startIdx + 1; i <= (QB.func_Len( mname)); i= i + 1) { if (QB.halted()) { return; } ___v1860135++; if (___v1860135 % 100 == 0) { await QB.autoLimit(); }
var ___v5833590 = 0; for ( i= startIdx + 1; i <= (QB.func_Len( mname)); i= i + 1) { if (QB.halted()) { return; } ___v5833590++; if (___v5833590 % 100 == 0) { await QB.autoLimit(); }
c = (QB.func_Mid( mname, i, 1));
a = (QB.func_Asc( c));
if (( a >= 65 && a <= 90) || ( a >= 97 && a <= 122) || ( a >= 48 && a <= 57) || a == 95 || a == 46) {
@ -3195,7 +3217,7 @@ if (QB.halted()) { return; }
await sub_AddQBMethod( "SUB" , "_KeyClear" , False);
await sub_AddQBMethod( "FUNCTION" , "_KeyDown" , False);
await sub_AddQBMethod( "FUNCTION" , "_KeyHit" , False);
await sub_AddQBMethod( "FUNCTION" , "_LoadFont" , False);
await sub_AddQBMethod( "FUNCTION" , "_LoadFont" , True);
await sub_AddQBMethod( "FUNCTION" , "_LoadImage" , True);
await sub_AddQBMethod( "FUNCTION" , "_MouseButton" , False);
await sub_AddQBMethod( "FUNCTION" , "_MouseInput" , False);

View file

@ -270,6 +270,7 @@ End Sub
Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As String)
Dim typeMode As Integer: typeMode = False
Dim jsMode As Integer: jsMode = False
Dim ignoreMode As Integer: ignoreMode = False
Dim i As Integer
Dim indent As Integer
Dim tempIndent As Integer
@ -302,12 +303,23 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
If jsMode = True Then
If first = "$END" Then
jsMode = False
AddJSLine 0, "//-------- END JS native code block --------"
If jsMode Then
jsMode = False
AddJSLine 0, "//-------- END JS native code block --------"
End If
Else
AddJSLine i, lines(i).text
End If
ElseIf ignoreMode = True Then
If first = "$END" Then ignoreMode = False
ElseIf first = "$END" Then
' shrug
ElseIf first = "$ELSE" Or first = "$ELSEIF" Then
ignoreMode = True
ElseIf typeMode = True Then
If first = "END" Then
Dim second As String: second = UCase$(parts(2))
@ -457,6 +469,8 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
If UCase$(parts(2)) = "JAVASCRIPT" Then
jsMode = True
js = "//-------- BEGIN JS native code block --------"
ElseIf UCase$(parts(2)) <> "WEB" Then
ignoreMode = True
End If
End If
@ -1650,7 +1664,15 @@ Function FormatArraySize$ (sizeString As String)
If scount = 1 Then
sizeParams = sizeParams + "{l:0,u:" + subparts(1) + "}"
Else
sizeParams = sizeParams + "{l:" + subparts(1) + ",u:" + subparts(3) + "}"
' This must be the "x To y" format
Dim toIndex As Integer
For toIndex = 0 To scount
If "TO" = UCase$(subparts(toIndex)) Then Exit For
Next toIndex
Dim As String lb, ub
lb = Join(subparts(), 1, toIndex - 1, " ")
ub = Join(subparts(), toIndex + 1, -1, " ")
sizeParams = sizeParams + "{l:" + lb + ",u:" + ub + "}"
End If
Next i
FormatArraySize = sizeParams
@ -2036,7 +2058,7 @@ Sub ReadLinesFromText (sourceText As String)
Dim lineIndex As Integer
lineIndex = i
If StartsWith(UCase$(fline), "IMPORT") Then
If StartsWith(LTrim$(UCase$(fline)), "IMPORT") Then
ReDim parts(0) As String
Dim pcount As Integer
pcount = SLSplit(fline, parts(), False)
@ -3407,7 +3429,7 @@ Sub InitQBMethods
AddQBMethod "SUB", "_KeyClear", False
AddQBMethod "FUNCTION", "_KeyDown", False
AddQBMethod "FUNCTION", "_KeyHit", False
AddQBMethod "FUNCTION", "_LoadFont", False
AddQBMethod "FUNCTION", "_LoadFont", True
AddQBMethod "FUNCTION", "_LoadImage", True
AddQBMethod "FUNCTION", "_MouseButton", False
AddQBMethod "FUNCTION", "_MouseInput", False