소스 검색

cats generator uses ... name for variadic arguments;

bjorn 7 달 전
부모
커밋
688ea75a13
1개의 변경된 파일12개의 추가작업 그리고 3개의 파일을 삭제
  1. 12 3
      api/generators/cats.lua

+ 12 - 3
api/generators/cats.lua

@@ -127,6 +127,15 @@ function argumentType(arg)
   end
 end
 
+--- Returns the name of a function argument.
+function argumentName(arg)
+  if arg.name:sub(1, 3) == '...' then
+    return '...'
+  else
+    return arg.name
+  end
+end
+
 --- Renders the header (description, notes, examples, etc.) for anything that's like a function.
 local function renderFunctionHeader(out, func)
   add(out, "")
@@ -172,7 +181,7 @@ local function renderType(out, tag, variant)
   end
 
   local params = join(map(variant.arguments, function(arg)
-    return ("%s%s: %s"):format(arg.name, optionalSuffix(arg), argumentType(arg))
+    return ("%s%s: %s"):format(argumentName(arg), optionalSuffix(arg), argumentType(arg))
   end), ", ")
 
   add(out, doc(("%s fun(%s): %s"):format(tag, params, returns)))
@@ -184,7 +193,7 @@ local function renderFunctionVariant(out, func, variant)
   -- Document parameters
   if variant.arguments then
     for _, arg in ipairs(variant.arguments) do
-      add(out, doc(("@param %s%s %s %s"):format(arg.name, optionalSuffix(arg), argumentType(arg), arg.description)))
+      add(out, doc(("@param %s%s %s %s"):format(argumentName(arg), optionalSuffix(arg), argumentType(arg), arg.description)))
     end
   end
 
@@ -197,7 +206,7 @@ local function renderFunctionVariant(out, func, variant)
 
   -- Build function signature
   local signature = join(map(variant.arguments, function(arg)
-    return arg.name
+    return argumentName(arg)
   end), ", ")
 
   add(out, ("function %s(%s) end"):format(func.key, signature))