1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-04 04:50:22 +00:00

Implement #20 with suggestions from #392

This commit is contained in:
Samuel Gomes 2023-10-14 07:07:11 +05:30
parent 1d95c731cf
commit 5db34487c9
3 changed files with 59 additions and 21 deletions

1
.gitignore vendored
View file

@ -17,3 +17,4 @@ mingw32.exe
mingw64.exe
.vscode
.DS_Store
source/qb64pe_start.command

View file

@ -12,14 +12,14 @@ $SCREENHIDE
$EXEICON:'./qb64pe.ico'
$VERSIONINFO:CompanyName=QB64 Phoenix Edition
$VERSIONINFO:FileDescription=QB64 IDE and Compiler
$VERSIONINFO:InternalName=qb64pe.bas
$VERSIONINFO:LegalCopyright=MIT
$VERSIONINFO:LegalTrademarks=
$VERSIONINFO:OriginalFilename=qb64pe.exe
$VERSIONINFO:ProductName=QB64-PE
$VERSIONINFO:Comments=QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.
$VERSIONINFO:CompanyName='QB64 Phoenix Edition'
$VERSIONINFO:FileDescription='QB64 IDE and Compiler'
$VERSIONINFO:InternalName='qb64pe.bas'
$VERSIONINFO:LegalCopyright='MIT'
$VERSIONINFO:LegalTrademarks=''
$VERSIONINFO:OriginalFilename='qb64pe.exe'
$VERSIONINFO:ProductName='QB64-PE'
$VERSIONINFO:Comments='QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.'
'$INCLUDE:'global\version.bas'
'$INCLUDE:'global\settings.bas'
@ -119,6 +119,8 @@ OS_BITS = 64: IF INSTR(_OS$, "[32BIT]") THEN OS_BITS = 32
IF OS_BITS = 32 THEN WindowTitle = "QB64 Phoenix Edition (x32)" ELSE WindowTitle = "QB64 Phoenix Edition (x64)"
_TITLE WindowTitle
CONST METACOMMAND_STRING_ENCLOSING_PAIR = "''"
DIM SHARED ConsoleMode, No_C_Compile_Mode, NoIDEMode
DIM SHARED ShowWarnings AS _BYTE, QuietMode AS _BYTE, CMDLineFile AS STRING
DIM SHARED MonochromeLoggingMode AS _BYTE
@ -1866,7 +1868,7 @@ DO
END IF
IF LEFT$(temp$, 7) = "$ERROR " THEN
temp$ = LTRIM$(MID$(temp$, 7))
temp$ = RemoveStringEnclosingPair(LTRIM$(MID$(temp$, 7)), METACOMMAND_STRING_ENCLOSING_PAIR)
a$ = "Compilation check failed: " + temp$
GOTO errmes
END IF
@ -3325,6 +3327,7 @@ DO
VersionInfoKey$ = LTRIM$(RTRIM$(MID$(a3u$, FirstDelimiter + 1, SecondDelimiter - FirstDelimiter - 1)))
VersionInfoValue$ = StrReplace$(LTRIM$(RTRIM$(MID$(a3$, SecondDelimiter + 1))), CHR$(34), "'")
issueWarning = 0 ' only issue warnings if this is true
SELECT CASE VersionInfoKey$
CASE "FILEVERSION#"
@ -3338,43 +3341,61 @@ DO
IF viProductVersion$ = "" THEN viProductVersion$ = viProductVersionNum$
layout$ = SCase$("$VersionInfo:PRODUCTVERSION#=") + VersionInfoValue$
CASE "COMPANYNAME"
viCompanyName$ = VersionInfoValue$
viCompanyName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "CompanyName=" + VersionInfoValue$
issueWarning = -1
CASE "FILEDESCRIPTION"
viFileDescription$ = VersionInfoValue$
viFileDescription$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "FileDescription=" + VersionInfoValue$
issueWarning = -1
CASE "FILEVERSION"
viFileVersion$ = VersionInfoValue$
viFileVersion$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "FileVersion=" + VersionInfoValue$
issueWarning = -1
CASE "INTERNALNAME"
viInternalName$ = VersionInfoValue$
viInternalName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "InternalName=" + VersionInfoValue$
issueWarning = -1
CASE "LEGALCOPYRIGHT"
viLegalCopyright$ = VersionInfoValue$
viLegalCopyright$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "LegalCopyright=" + VersionInfoValue$
issueWarning = -1
CASE "LEGALTRADEMARKS"
viLegalTrademarks$ = VersionInfoValue$
viLegalTrademarks$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "LegalTrademarks=" + VersionInfoValue$
issueWarning = -1
CASE "ORIGINALFILENAME"
viOriginalFilename$ = VersionInfoValue$
viOriginalFilename$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "OriginalFilename=" + VersionInfoValue$
issueWarning = -1
CASE "PRODUCTNAME"
viProductName$ = VersionInfoValue$
viProductName$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "ProductName=" + VersionInfoValue$
issueWarning = -1
CASE "PRODUCTVERSION"
viProductVersion$ = VersionInfoValue$
viProductVersion$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "ProductVersion=" + VersionInfoValue$
issueWarning = -1
CASE "COMMENTS"
viComments$ = VersionInfoValue$
viComments$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "Comments=" + VersionInfoValue$
issueWarning = -1
CASE "WEB"
viWeb$ = VersionInfoValue$
viWeb$ = RemoveStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR)
layout$ = SCase$("$VersionInfo:") + "Web=" + VersionInfoValue$
issueWarning = -1
CASE ELSE
a$ = "Invalid key. (Use FILEVERSION#, PRODUCTVERSION#, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, ProductName, ProductVersion, Comments or Web)"
GOTO errmes
END SELECT
' Generate warnings if needed
IF issueWarning AND NOT IgnoreWarnings THEN
IF NOT HasStringEnclosingPair(VersionInfoValue$, METACOMMAND_STRING_ENCLOSING_PAIR) THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "missing string bracket delimiters (" + METACOMMAND_STRING_ENCLOSING_PAIR + ")", VersionInfoValue$
END IF
END IF
VersionInfoSet = -1
GOTO finishednonexec

View file

@ -1,7 +1,6 @@
'
' String manipulation functions
'
FUNCTION StrRemove$ (myString$, whatToRemove$) 'noncase sensitive
DIM a$, b$
DIM AS LONG i
@ -32,6 +31,23 @@ FUNCTION StrReplace$ (myString$, find$, replaceWith$) 'noncase sensitive
StrReplace$ = a$
END FUNCTION
' Returns true if text has a certain enclosing pair like 'hello'
FUNCTION HasStringEnclosingPair%% (text AS STRING, pair AS STRING)
IF LEN(text) > 1 AND LEN(pair) > 1 THEN
HasStringEnclosingPair = ASC(pair, 1) = ASC(text, 1) AND ASC(pair, 2) = ASC(text, LEN(text))
END IF
END FUNCTION
' Removes a string's enclosing pair if it is found. So, 'hello world' can be returned as just hello world
' pair - is the enclosing pair. E.g. "''", "()", "[]" etc.
FUNCTION RemoveStringEnclosingPair$ (text AS STRING, pair AS STRING)
IF HasStringEnclosingPair(text, pair) THEN
RemoveStringEnclosingPair = MID$(text, 2, LEN(text) - 2)
ELSE
RemoveStringEnclosingPair = text
END IF
END FUNCTION
FUNCTION AddQuotes$ (s$)
AddQuotes$ = CHR$(34) + s$ + CHR$(34)
END FUNCTION