Skip to content

Commit

Permalink
update(src): Page Viewer
Browse files Browse the repository at this point in the history
  • Loading branch information
skuzzis committed Nov 19, 2024
1 parent 100aa78 commit 3c90514
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 12 deletions.
4 changes: 2 additions & 2 deletions generator/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ data.utils.data.targetselector.data.getplayer.return.lua = "Player|nil"
const GetType = (type) => {
if (data.types.data.core.data[type.toLowerCase()]) {
if (Object.keys(data.types.data.core.data[type.toLowerCase()].values).length == 0) return type
return "number"
return "number " + type
}
else if (data.types.data.generated.data[type.toLowerCase()]) return "number"
else if (data.types.data.generated.data[type.toLowerCase()]) return "number " + type
else return type
}

Expand Down
61 changes: 51 additions & 10 deletions src/documentation/pages.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { markdownTable } from "./markdowntable";
import { GetDocsData } from "./provider";

let generatedPages: any = {}

let data: any = {}

const templates: any = {
"getting-started": "{description}\n{code}",
"function-syntax": "{description}\n{code}",
Expand All @@ -13,10 +16,20 @@ const templates: any = {
}

const GenerateLuaType = (param: string) => {
if (param == "any") return "Any* any"
if (param == "any") return "any";
else if(param == "void") return "nil";
else if(param.includes("/")) return param.split("/").map((p) => p.trim()).join("|");
else if(
GetDocsData().types.data.generated.data[param.toLowerCase()] != undefined ||
GetDocsData().types.data.core.data[param.toLowerCase()] != undefined
) return `number ${param}`
else return param;
}

const GenerateType = (param: string, lang: string) => {
if(lang == "lua") return GenerateLuaType(param);
}

const ProcessParameters = (params: any, language: string) => {
const returnParams = [];
for (const paramkey of Object.keys(params)) {
Expand All @@ -28,32 +41,60 @@ const ProcessParameters = (params: any, language: string) => {
}

if (forlang == language) {
if (language == "lua") returnParams.push(`${name} --[[ ${GenerateLuaType(params[paramkey])} ]]`)
if (language == "lua") returnParams.push(`${name}`)
}
}
return returnParams.join(", ");
}

const GenerateFunctionParameters = (params: any, language: string) => {
const returnParams = [];
for (const paramkey of Object.keys(params)) {
let forlang = language;
let name = paramkey
if (paramkey.includes("/")) {
forlang = paramkey.split("/")[0];
name = paramkey.split("/")[1];
}

if (forlang == language) {
if (language == "lua") returnParams.push(`--- @param ${name} ${GenerateType(params[paramkey])}`)

Check failure on line 61 in src/documentation/pages.ts

View workflow job for this annotation

GitHub Actions / Build

Expected 2 arguments, but got 1.
}
}
if(returnParams.length == 0) return "";
else return `\n${returnParams.join("\n")}`
}

const GenerateFunctionSyntax = (data: any) => {
return `\`\`\`lua\n@returns ${data.return["lua"]}\n${data.variable["lua"]}(${ProcessParameters(data.params, "lua")})\n\`\`\`\n${data.additional["lua"] || ""}`;
return `\`\`\`lua${GenerateFunctionParameters(data.params, "lua")}\n--- @return ${data.return["lua"]}\n${data.variable["lua"]}(${ProcessParameters(data.params, "lua")})\n\`\`\`\n${data.additional["lua"] || ""}`;
}

const GenerateGettingStarted = (data: any) => {
return data.content["lua"]
}

const GenerateEventParameters = (paramsData: any) => {
const GenerateEventParameters = (paramsData: any, lang: string) => {
if (Object.keys(paramsData).length == 0) return "";

return ", " + Object.keys(paramsData).map((key) => `${key} --[[ ${paramsData[key]} ]]`).join(', ')
if (lang == "lua") {
return ", " + Object.keys(paramsData).join(', ')
}
}

const GenerateEventParamTypes = (paramsData: any, lang: string) => {
if (Object.keys(paramsData).length == 0) return "";

if (lang == "lua") {
return `\n${Object.keys(paramsData).map((key) => `--- @param ${key} ${paramsData[key]}`).join('\n')}`
}
}

const GenerateCoreEventSyntax = (data: any) => {
return `\`\`\`lua\n@event returns ${data.return["lua"]}\nAddEventHandler("${data.title}", function(event --[[ Event ]]${GenerateEventParameters(data.params)})\n --[[ ... ]]\n return EventResult.Continue\nend)\n\`\`\`\n${data.additional["lua"] || ""}`
return `\`\`\`lua\n--- @param event Event${GenerateEventParamTypes(data.params, "lua")}\n--- @return number|nil EventResult\n--- @event returns ${GenerateType(data.return["lua"], "lua")} Via event:SetReturn\nAddEventHandler("${data.title}", function(event${GenerateEventParameters(data.params, "lua")})\n --[[ ... ]]\n return EventResult.Continue\nend)\n\`\`\`\n${data.additional["lua"] || ""}`
}

const GenerateGameEventSyntax = (data: any) => {
return `\`\`\`lua\n@event returns ${data.return["lua"]}\nAddEventHandler("${data.title}", function(event --[[ Event ]])\n --[[ ... ]]\n return EventResult.Continue\nend)\n\`\`\`\n${data.additional["lua"] || ""}`;
return `\`\`\`lua\n--- @param event Event\n--- @return number|nil EventResult\nAddEventHandler("${data.title}", function(event)\n --[[ ... ]]\n return EventResult.Continue\nend)\n\`\`\`\n${data.additional["lua"] || ""}`;
}

const GenerateGameEventArguments = (data: any) => {
Expand All @@ -79,7 +120,7 @@ const GenerateClassProperties = (classname: string, data: any) => {
const properties = []

for (const key of Object.keys(data)) {
properties.push(`## ${key} ${data[key].writable ? "" : "(Read-Only)"}\n\`\`\`lua\n@type ${data[key].type}\nRead: ${classname}.${key}${data[key].writable ? `\nWrite: ${classname}.${key} = value` : ""}\n\`\`\``)
properties.push(`## ${key} ${data[key].writable ? "" : "(Read-Only)"}\n\`\`\`lua\n--- @type ${data[key].type}\nRead: ${classname}.${key}${data[key].writable ? `\nWrite: ${classname}.${key} = value` : ""}\n\`\`\``)
}

return properties.join("\n")
Expand All @@ -92,14 +133,14 @@ const GenerateClassFunctions = (classname: string, data: any) => {
const functions = []

for (const key of Object.keys(data)) {
functions.push(`## ${key}\n\`\`\`lua\n@returns ${data[key].return["lua"]}\n${classname}:${key}(${ProcessParameters(data[key].params, "lua")})\n\`\`\``)
functions.push(`## ${key}\n\`\`\`lua${GenerateFunctionParameters(data[key].params, "lua")}}\n--- @return ${GenerateType(data[key].return["lua"], "lua")}\n${classname}:${key}(${ProcessParameters(data[key].params, "lua")})\n\`\`\``)
}

return functions.join("\n")
}

const GenerateClassSyntax = (data: any) => {
return `# Constructor\n\`\`\`lua\n${data.title}(${ProcessParameters(data["constructor"], "lua")})\n\`\`\`\n# Properties\n${GenerateClassProperties(data.title.toLowerCase(), data.properties)}\n# Functions\n${GenerateClassFunctions(data.title.toLowerCase(), data.functions)}\n${data.additional["lua"] || ""}`;
return `# Constructor\n\`\`\`lua${GenerateFunctionParameters(data["constructor"], "lua")}\n${data.title}(${ProcessParameters(data["constructor"], "lua")})\n\`\`\`\n# Properties\n${GenerateClassProperties(data.title.toLowerCase(), data.properties)}\n# Functions\n${GenerateClassFunctions(data.title.toLowerCase(), data.functions)}\n${data.additional["lua"] || ""}`;
}

const GenerateTypeData = (data: any) => {
Expand Down
4 changes: 4 additions & 0 deletions src/documentation/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ function CategoryHasFoundString(category: any, str: string) {
return JSON.stringify(category).includes(str)
}

export function GetDocsData() {
return docsData
}

export class DocumentationProvider implements vscode.TreeDataProvider<Item> {
private _onDidChangeTreeData: vscode.EventEmitter<Item | undefined | void> = new vscode.EventEmitter<Item | undefined | void>();
readonly onDidChangeTreeData: vscode.Event<Item | undefined | void> = this._onDidChangeTreeData.event;
Expand Down

0 comments on commit 3c90514

Please sign in to comment.