Skip to content

Commit 96c969c

Browse files
committed
A refactoring change
1 parent a570167 commit 96c969c

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

tools/love-api.lua

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,20 @@ local function formatIndex(key)
5050
return ('[%q]'):format(key)
5151
end
5252

53-
local function isTableOptional(tbl)
54-
if not tbl then
55-
return false
56-
end
57-
local optional = true
58-
for _, field in ipairs(tbl) do
59-
if field.default == nil then
60-
optional = nil
61-
end
62-
end
63-
return optional
53+
local function getOptional(param)
54+
if param.type == 'table' then
55+
if not param.table then
56+
return ''
57+
end
58+
for _, field in ipairs(param.table) do
59+
if field.default == nil then
60+
return ''
61+
end
62+
end
63+
return '?'
64+
else
65+
return (param.default ~= nil) and '?' or ''
66+
end
6467
end
6568

6669
local buildType
@@ -124,11 +127,10 @@ local function buildDocFunc(variant, overload)
124127
if param.name == '...' then
125128
params[#params+1] = '...'
126129
else
127-
local optional = (param.type == 'table' and isTableOptional(param.table) or (param.default ~= nil)) and '?' or ''
128130
if param.name:find '^[\'"]' then
129-
params[#params+1] = ('%s%s: %s|%q'):format(param.name:sub(2, -2), optional, getTypeName(param.type), param.name)
131+
params[#params+1] = ('%s%s: %s|%q'):format(param.name:sub(2, -2), getOptional(param), getTypeName(param.type), param.name)
130132
else
131-
params[#params+1] = ('%s%s: %s'):format(param.name, optional, getTypeName(param.type))
133+
params[#params+1] = ('%s%s: %s'):format(param.name, getOptional(param), getTypeName(param.type))
132134
end
133135
end
134136
end
@@ -160,10 +162,9 @@ local function buildFunction(func, node, typeName)
160162
for _, param in ipairs(func.variants[1].arguments or {}) do
161163
for paramName in param.name:gmatch '[%a_][%w_]*' do
162164
params[#params+1] = paramName
163-
local optional = param.type == 'table' and isTableOptional(param.table) or (param.default ~= nil)
164165
text[#text+1] = ('---@param %s%s %s # %s'):format(
165166
paramName,
166-
optional and '?' or '',
167+
getOptional(param),
167168
buildType(param),
168169
param.description
169170
)

tools/lovr-api.lua

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,20 @@ local function formatIndex(key)
5151
return ('[%q]'):format(key)
5252
end
5353

54-
local function isTableOptional(tbl)
55-
if not tbl then
56-
return false
57-
end
58-
local optional = true
59-
for _, field in ipairs(tbl) do
60-
if field.default == nil then
61-
optional = nil
62-
end
63-
end
64-
return optional
54+
local function getOptional(param)
55+
if param.type == 'table' then
56+
if not param.table then
57+
return ''
58+
end
59+
for _, field in ipairs(param.table) do
60+
if field.default == nil then
61+
return ''
62+
end
63+
end
64+
return '?'
65+
else
66+
return (param.default ~= nil) and '?' or ''
67+
end
6568
end
6669

6770
local buildType
@@ -128,11 +131,10 @@ local function buildDocFunc(variant, overload)
128131
if param.name == '...' then
129132
params[#params+1] = '...'
130133
else
131-
local optional = (param.type == 'table' and isTableOptional(param.table) or (param.default ~= nil)) and '?' or ''
132134
if param.name:find '^[\'"]' then
133-
params[#params+1] = ('%s%s: %s|%q'):format(param.name:sub(2, -2), optional, getTypeName(param.type), param.name)
135+
params[#params+1] = ('%s%s: %s|%q'):format(param.name:sub(2, -2), getOptional(param), getTypeName(param.type), param.name)
134136
else
135-
params[#params+1] = ('%s%s: %s'):format(param.name, optional, getTypeName(param.type))
137+
params[#params+1] = ('%s%s: %s'):format(param.name, getOptional(param), getTypeName(param.type))
136138
end
137139
end
138140
end
@@ -164,10 +166,9 @@ local function buildFunction(func, typeName)
164166
for _, param in ipairs(func.variants[1].arguments or {}) do
165167
for paramName in param.name:gmatch '[%a_][%w_]*' do
166168
params[#params+1] = paramName
167-
local optional = param.type == 'table' and isTableOptional(param.table) or (param.default ~= nil)
168169
text[#text+1] = ('---@param %s%s %s # %s'):format(
169170
paramName,
170-
optional and '?' or '',
171+
getOptional(param),
171172
buildType(param),
172173
param.description
173174
)

0 commit comments

Comments
 (0)