Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discord export #596

Merged
merged 2 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions internal/c/libqb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15307,7 +15307,7 @@ int32 n_inputnumberfromdata(uint8 *data, ptrszint *data_offset, ptrszint data_si
goto nextchr;
}

if ((c == 68) || (c == 69) || (c == 100) || (c == 101)) { // D,E,d,e
if ((c == 68) || (c == 69) || (c == 70) || (c == 100) || (c == 101) || (c == 102)) { // D,E,F,d,e,f
if (step > 2)
return 3; // Syntax error (multiple exponents or after type suffix)
step = 3;
Expand Down Expand Up @@ -15538,7 +15538,7 @@ int32 n_inputnumberfromfile(int32 fileno) {
goto nextchr;
}

if ((c == 68) || (c == 69) || (c == 100) || (c == 101)) { // D,E,d,e
if ((c == 68) || (c == 69) || (c == 70) || (c == 100) || (c == 101) || (c == 102)) { // D,E,F,d,e,f
if (step > 2)
goto gotnumber;
step = 3;
Expand Down
30 changes: 27 additions & 3 deletions source/ide/ide_export.bas
Original file line number Diff line number Diff line change
Expand Up @@ -255,28 +255,32 @@ SUB ExportCodeAs (docFormat$)
PRINT #151, LEFT$(eTxt$, ePos& - 1);
CLOSE #151
ok% = idemessagebox("Export As...", "Export to " + pNam$ + ext$ + " completed.", "")
CASE "foru", "wiki"
CASE "disc", "foru", "wiki"
_CLIPBOARD$ = LEFT$(eTxt$, ePos& - 1)
ok% = idemessagebox("Export As...", "Forum/Wiki export to Clipboard completed.", "")
ok% = idemessagebox("Export As...", "Discord/Forum/Wiki export to Clipboard completed.", "")
END SELECT
EXIT SUB
'------------------------------
OpenCodeBlock:
SELECT CASE LCASE$(docFormat$)
CASE "html": tmp$ = "<!DOCTYPE html><html lang=" + CHR$(34) + "en" + CHR$(34) + "><head><meta charset=" + CHR$(34) + "UTF-8" + CHR$(34) + "><title>" + AnsiTextToUtf8Text$(pNam$) + "</title></head><body><pre style=" + CHR$(34) + "font-size: 18px; background-color: " + bgc$ + "; color: " + txc$ + ";" + CHR$(34) + ">"
CASE "rich": tmp$ = "{\rtf1\ansi\deff0{\fonttbl{\f0 Courier New;}}{\colortbl " + rtc$ + "}\pard\f0\fs32\cbpat6\paperh23811\paperw16838\margl142\margr142\margt142\margb142"
CASE "disc": tmp$ = "```ansi" + cEol$ + CHR$(27) + "[0;0;1;37m"
CASE "foru": tmp$ = "[qb=export]"
CASE "wiki": tmp$ = "{{CodeStart}}"
CASE ELSE: RETURN
END SELECT
MID$(eTxt$, ePos&, LEN(tmp$)) = tmp$: ePos& = ePos& + LEN(tmp$)
IF LCASE$(docFormat$) <> "foru" THEN MID$(eTxt$, ePos&, LEN(cEol$)) = cEol$: ePos& = ePos& + LEN(cEol$)
IF LCASE$(docFormat$) <> "disc" AND LCASE$(docFormat$) <> "foru" THEN
MID$(eTxt$, ePos&, LEN(cEol$)) = cEol$: ePos& = ePos& + LEN(cEol$)
END IF
RETURN
'----------
CloseCodeBlock:
SELECT CASE LCASE$(docFormat$)
CASE "html": tmp$ = "</pre></body></html>"
CASE "rich": tmp$ = "}": ePos& = ePos& - 4 'remove final /par
CASE "disc": tmp$ = "```"
CASE "foru": tmp$ = "[/qb]"
CASE "wiki": tmp$ = "{{CodeEnd}}"
CASE ELSE: RETURN
Expand All @@ -303,6 +307,13 @@ SUB ExportCodeAs (docFormat$)
CASE "qu": tmp$ = "\cf5 "
CASE ELSE: RETURN
END SELECT
CASE "disc"
SELECT CASE LCASE$(what$)
CASE "co": tmp$ = CHR$(27) + "[30m"
CASE "nu": tmp$ = CHR$(27) + "[31m"
CASE "qu": tmp$ = CHR$(27) + "[33m"
CASE ELSE: RETURN
END SELECT
CASE "foru"
SELECT CASE LCASE$(what$)
CASE "co": tmp$ = "[color=#919191]"
Expand Down Expand Up @@ -334,6 +345,11 @@ SUB ExportCodeAs (docFormat$)
CASE "co", "nu", "qu": tmp$ = "\cf0 "
CASE ELSE: RETURN
END SELECT
CASE "disc"
SELECT CASE LCASE$(what$)
CASE "co", "nu", "qu": tmp$ = CHR$(27) + "[37m"
CASE ELSE: RETURN
END SELECT
CASE "foru"
SELECT CASE LCASE$(what$)
CASE "co", "nu", "qu": tmp$ = "[/color]"
Expand Down Expand Up @@ -478,6 +494,11 @@ SUB ExportCodeAs (docFormat$)
IF me% OR pc% THEN lkc$ = "\cf2": ELSE lkc$ = "\cf3"
MID$(eTxt$, ePos&, pal% + lkl% + 108) = "{\field{\*\fldinst HYPERLINK " + CHR$(34) + "https://qb64phoenix.com/qb64wiki/index.php?title=" + page$ + CHR$(34) + "}{\fldrslt{" + lkc$ + "\ul0 " + lnk$ + "}}}\cf0 "
ePos& = ePos& + pal% + lkl% + 108
CASE "disc"
'linking to wiki not supported in Discord, hence we do coloring only
IF me% OR pc% THEN lkc$ = CHR$(27) + "[32m": ELSE lkc$ = CHR$(27) + "[34m"
MID$(eTxt$, ePos&, lkl% + 10) = lkc$ + lnk$ + CHR$(27) + "[37m"
ePos& = ePos& + lkl% + 10
CASE "foru"
IF me% OR pc% THEN lkc$ = "#55FF55": ELSE lkc$ = "#4593D8"
MID$(eTxt$, ePos&, pal% + lkl% + 84) = "[url=https://qb64phoenix.com/qb64wiki/index.php?title=" + page$ + "][color=" + lkc$ + "]" + lnk$ + "[/color][/url]"
Expand Down Expand Up @@ -505,6 +526,9 @@ SUB ExportCodeAs (docFormat$)
CASE "rich"
MID$(eTxt$, ePos&, kwl% + 10) = "\cf2 " + kw$ + "\cf0 "
ePos& = ePos& + kwl% + 10
CASE "disc"
MID$(eTxt$, ePos&, kwl% + 10) = CHR$(27) + "[32m" + kw$ + CHR$(27) + "[37m"
ePos& = ePos& + kwl% + 10
CASE "foru"
MID$(eTxt$, ePos&, kwl% + 23) = "[color=#55FF55]" + kw$ + "[/color]"
ePos& = ePos& + kwl% + 23
Expand Down
9 changes: 9 additions & 0 deletions source/ide/ide_methods.bas
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,8 @@ FUNCTION ide2 (ignore)
menuDesc$(m, i - 1) = "Export code into a Hypertext document"
menu$(m, i) = "#Rich Text document (.rtf)": i = i + 1
menuDesc$(m, i - 1) = "Export code into a Rich Text document"
menu$(m, i) = "#Discord codebox (to Clipboard)": i = i + 1
menuDesc$(m, i - 1) = "Export code as Discord codebox ready to paste in"
menu$(m, i) = "#Forum codebox (to Clipboard)": i = i + 1
menuDesc$(m, i - 1) = "Export code as Forum codebox ready to paste in"
menu$(m, i) = "#Wiki example (to Clipboard)": i = i + 1
Expand Down Expand Up @@ -5738,6 +5740,13 @@ FUNCTION ide2 (ignore)
GOTO ideloop
END IF

IF menu$(m, s) = "#Discord codebox (to Clipboard)" THEN
PCOPY 2, 0
ExportCodeAs "disc"
PCOPY 3, 0: SCREEN , , 3, 0
GOTO ideloop
END IF

IF menu$(m, s) = "#Forum codebox (to Clipboard)" THEN
PCOPY 2, 0
ExportCodeAs "foru"
Expand Down