Skip to content

Commit

Permalink
Merge pull request #596 from QB64-Phoenix-Edition/discord-export
Browse files Browse the repository at this point in the history
Discord export
  • Loading branch information
RhoSigma-QB64 authored Jan 9, 2025
2 parents f568c79 + 108e771 commit 4c3debd
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
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

0 comments on commit 4c3debd

Please sign in to comment.