Skip to content

Commit 264dcbd

Browse files
committed
xd
1 parent 8071ad6 commit 264dcbd

2 files changed

Lines changed: 65 additions & 25 deletions

File tree

generate_module_docs.js

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,43 @@ function parseChangelog(content) {
2929
if (!content) return {}
3030
const changelog = {}
3131

32-
// Match table format: ["version"] = { "entry1", "entry2" }
33-
const tableRegex = /\["([^"]+)"\]\s*=\s*\{([\s\S]*?)\}/g
32+
// Match version keys like ["1.0"] = or 1.0 = or ["Version 1.0"] =
33+
const keyRegex = /(?:\["|')?([^"'\]]+)(?:"'\])?\s*=\s*/g
3434
let match
35-
while ((match = tableRegex.exec(content)) !== null) {
36-
const version = match[1]
37-
const entries = parseLuaTable(match[2])
38-
changelog[version] = entries
35+
const versions = []
36+
37+
while ((match = keyRegex.exec(content)) !== null) {
38+
versions.push({
39+
version: match[1],
40+
startIndex: match.index + match[0].length
41+
})
3942
}
4043

41-
// Match string format: ["version"] = "entry"
42-
const stringRegex = /\["([^"]+)"\]\s*=\s*"([^"]*)"/g
43-
while ((match = stringRegex.exec(content)) !== null) {
44-
const version = match[1]
45-
const entry = match[2]
46-
changelog[version] = [entry]
44+
for (let i = 0; i < versions.length; i++) {
45+
const v = versions[i]
46+
const nextStart = versions[i + 1] ? versions[i + 1].startIndex - versions[i + 1].version.length - 10 : content.length
47+
const rawValue = content.substring(v.startIndex, nextStart).trim()
48+
49+
if (rawValue.startsWith('{')) {
50+
// It's a table, extract everything between the outer braces
51+
let braceCount = 0
52+
let tableContent = ""
53+
for (let j = 0; j < rawValue.length; j++) {
54+
if (rawValue[j] === '{') braceCount++
55+
if (rawValue[j] === '}') braceCount--
56+
if (braceCount === 0) {
57+
tableContent = rawValue.substring(1, j)
58+
break
59+
}
60+
}
61+
changelog[v.version] = parseLuaTable(tableContent)
62+
} else {
63+
// It's a string, extract everything between the first and last quote
64+
const stringMatch = rawValue.match(/"([^"]*)"/)
65+
if (stringMatch) {
66+
changelog[v.version] = [stringMatch[1]]
67+
}
68+
}
4769
}
4870

4971
return changelog
@@ -60,8 +82,27 @@ function extractMetadata(filePath) {
6082
metadata.version = (content.match(/MODULE\.version\s*=\s*([0-9.]+)/) || [])[1] || '0.0'
6183
metadata.description = (content.match(/MODULE\.desc\s*=\s*"([^"]*)"/) || [])[1]
6284

63-
const changelogMatch = content.match(/MODULE\.Changelog\s*=\s*\{([\s\S]*?)\}/)
64-
metadata.changelogData = changelogMatch ? parseChangelog(changelogMatch[1]) : {}
85+
// Improved changelog extraction to handle nested braces
86+
const changelogStartMatch = content.match(/MODULE\.Changelog\s*=\s*\{/)
87+
if (changelogStartMatch) {
88+
const startIndex = changelogStartMatch.index + changelogStartMatch[0].length - 1
89+
let braceCount = 0
90+
let changelogContent = ""
91+
92+
for (let i = startIndex; i < content.length; i++) {
93+
const char = content[i]
94+
if (char === '{') braceCount++
95+
if (char === '}') braceCount--
96+
97+
if (braceCount === 0) {
98+
changelogContent = content.substring(startIndex + 1, i)
99+
break
100+
}
101+
}
102+
metadata.changelogData = parseChangelog(changelogContent)
103+
} else {
104+
metadata.changelogData = {}
105+
}
65106

66107
return metadata
67108
}
@@ -138,7 +179,7 @@ function main() {
138179
markdown += `<a id="${slug}"></a>\n`
139180

140181
markdown += `<strong>Description</strong>\n`
141-
markdown += `<p>${description.split('\\n').join('<br>').split('\n').join('<br>')}</p>\n\n`
182+
markdown += `<p>${description.trim()}</p>\n\n`
142183

143184
const versions = Object.keys(changelogData).sort((a, b) => b.localeCompare(a, undefined, { numeric: true, sensitivity: 'base' }))
144185
if (versions.length > 0) {
@@ -150,8 +191,7 @@ function main() {
150191
markdown += `<div class="details-content">\n`
151192
markdown += `<ul>\n`
152193
changelogData[version].forEach(entry => {
153-
const formattedEntry = entry.split('\\n').join('<br>').split('\n').join('<br>')
154-
markdown += ` <li>${formattedEntry}</li>\n`
194+
markdown += ` <li>${entry.trim()}</li>\n`
155195
})
156196
markdown += `</ul>\n`
157197
markdown += `</div>\n`
@@ -161,8 +201,7 @@ function main() {
161201
markdown += `<ul>\n`
162202
versions.forEach(version => {
163203
changelogData[version].forEach(entry => {
164-
const formattedEntry = entry.split('\\n').join('<br>').split('\n').join('<br>')
165-
markdown += ` <li>${version} - ${formattedEntry}</li>\n`
204+
markdown += ` <li>${version} - ${entry.trim()}</li>\n`
166205
})
167206
})
168207
markdown += `</ul>\n`

slots/module.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ MODULE.version = 1.0
66
MODULE.desc = "Adds a slot machine minigame, a workshop model for the machine, handling of payouts to winners, customizable payout odds, and sound and animation effects."
77
MODULE.WorkshopContent = "3527541056"
88
MODULE.Changelog = {
9-
["1.0"] = "Initial Release\n\n\n\ngfay",
10-
["2.0"] = "SAF",
11-
["3.0"] = "SADAFD",
12-
["4.0"] = "InitiaASFASFAl Release",
13-
["5.0"] = "InitialAFAFSAF Release",
14-
["6.0"] = "InitiFASFSAFAFSAal Release",
9+
["1.0"] = "Initial Release",
10+
["1.1"] = {"Added new sound effects for winning spins", "Improved payout logic for better accuracy", "Fixed minor UI alignment issues"},
11+
["1.2"] = {"Added support for custom workshop models", "Optimized network usage for machine states", "Updated workshop content dependencies"},
12+
["1.3"] = {"Implemented a global jackpot system", "Added an admin configuration menu for odds", "Fixed animation desync issues on high latency"},
13+
["1.4"] = {"Added localization support for multiple languages", "Improved security checks for payout handling", "Refactored internal module logic for performance"},
14+
["1.5"] = {"Added logging for all major payouts", "Fixed a rare crash when the machine was destroyed", "Updated documentation and setup guides"},
15+
["1.6"] = {"General performance optimizations", "Minor visual tweaks to the machine interface", "Stability improvements for long-running sessions"}
1516
}

0 commit comments

Comments
 (0)