From 1275713122f629094f97f09813519138d5283828 Mon Sep 17 00:00:00 2001 From: boxgaming <75969133+boxgaming@users.noreply.github.com> Date: Tue, 12 Sep 2023 10:10:05 -0500 Subject: [PATCH] Fixed support for subs and functions with "." in name (#83) --- qb2js.js | 4 +++- tools/qb2js.bas | 13 ++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/qb2js.js b/qb2js.js index 20aeb6e..65be067 100644 --- a/qb2js.js +++ b/qb2js.js @@ -2879,7 +2879,9 @@ var MethodJS = null; var ___v5833590 = 0; for ( i= 1; i <= (QB.func_Len( m.name)); i= i + 1) { if (QB.halted()) { return; } ___v5833590++; if (___v5833590 % 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) { + if ( a == 46) { + jsname = jsname + "_"; + } else if (( a >= 65 && a <= 90) || ( a >= 97 && a <= 122) || ( a >= 48 && a <= 57) || a == 95) { jsname = jsname + c; } } diff --git a/tools/qb2js.bas b/tools/qb2js.bas index cf1d514..5cd33bd 100644 --- a/tools/qb2js.bas +++ b/tools/qb2js.bas @@ -1386,7 +1386,6 @@ Function ConvertInput$ (m As Method, args As String, lineNumber As Integer) js = "var " + vname + " = new Array(" + Str$(UBound(vars)) + "); " js = js + CallMethod(m) + "(" + vname + ", " + preventNewline + ", " + addQuestionPrompt + ", " + prompt + "); " For i = 1 To UBound(vars) - 'If Not StartsWith(_Trim$(vars(i)), "#") Then ' special case to prevent file references from being output during self-compilation ' Convert to appropriate variable type on assignment Dim vartype As String vartype = GetVarType(vars(i)) @@ -3080,10 +3079,14 @@ Function MethodJS$ (m As Method, prefix As String) For i = 1 To Len(m.name) c = Mid$(m.name, i, 1) a = Asc(c) - ' uppercase, lowercase, numbers, - and . - If (a >= 65 And a <= 90) Or (a >= 97 And a <= 122) Or _ - (a >= 48 And a <= 57) Or _ - a = 95 Or a = 46 Then + + If a = 46 Then + ' replace period with underscore + jsname = jsname + "_" + + ElseIf (a >= 65 And a <= 90) Or (a >= 97 And a <= 122) Or _ + (a >= 48 And a <= 57) Or a = 95 Then + ' uppercase, lowercase, numbers, and - jsname = jsname + c End If Next i