From 5fdfa31b1a1497a552c9f19c48fe006da23f07eb Mon Sep 17 00:00:00 2001
From: Akash Gupta <64877812+akashrpo@users.noreply.github.com>
Date: Tue, 21 Jan 2025 17:06:42 +0530
Subject: [PATCH] feat: include parameter details in Swift docstrings (#118)

---
 src/generators/swift/swift.ts                       |  5 +++++
 src/generators/swift/templates/analytics.swift.hbs  |  4 +---
 .../swift/templates/functionDocumentation.hbs       | 13 +++++++++++++
 3 files changed, 19 insertions(+), 3 deletions(-)
 create mode 100644 src/generators/swift/templates/functionDocumentation.hbs

diff --git a/src/generators/swift/swift.ts b/src/generators/swift/swift.ts
index bb0586e7..44dcc685 100644
--- a/src/generators/swift/swift.ts
+++ b/src/generators/swift/swift.ts
@@ -2,6 +2,7 @@ import { Type, Schema } from '../ast.js';
 import Handlebars from 'handlebars';
 import { Generator, BasePropertyContext, GeneratorClient } from '../gen.js';
 import lodash from 'lodash';
+import { registerPartial } from '../../templates.js';
 
 const { camelCase, upperFirst } = lodash;
 
@@ -61,6 +62,10 @@ export const swift: Generator<
     allowedIdentifierChars: 'A-Za-z0-9_$',
   },
   setup: async () => {
+    await registerPartial(
+      'generators/swift/templates/functionDocumentation.hbs',
+      'functionDocumentation',
+    );
     Handlebars.registerHelper('propertiesDictionary', generatePropertiesDictionary);
     Handlebars.registerHelper('functionCall', generateFunctionCall);
     Handlebars.registerHelper('functionSignature', generateFunctionSignature);
diff --git a/src/generators/swift/templates/analytics.swift.hbs b/src/generators/swift/templates/analytics.swift.hbs
index 058c2c92..af6a0328 100644
--- a/src/generators/swift/templates/analytics.swift.hbs
+++ b/src/generators/swift/templates/analytics.swift.hbs
@@ -13,9 +13,7 @@ class RudderTyperAnalytics {
         {{functionCall "RudderTyperAnalytics" functionName properties "options" "RSOption()"}}
     }
 
-    {{#if functionDescription}}
-    /// {{functionDescription}}
-    {{/if}}
+    {{> functionDocumentation }}
     static func {{functionSignature functionName properties true}} {
         {{indent "        " (propertiesDictionary properties)}}
 
diff --git a/src/generators/swift/templates/functionDocumentation.hbs b/src/generators/swift/templates/functionDocumentation.hbs
new file mode 100644
index 00000000..fccf56d5
--- /dev/null
+++ b/src/generators/swift/templates/functionDocumentation.hbs
@@ -0,0 +1,13 @@
+/**
+ {{#if functionDescription}}
+  {{functionDescription}}
+ {{else}}
+  Fires a '{{functionName}}' track call.
+ {{/if}}
+ 
+  - Parameters:
+        {{#each properties}}
+    - {{name}}: {{#if isRequired}}{{type}} (required){{else}}{{type}} (optional){{/if}}{{#if description}} - {{description}}{{/if}}
+        {{/each}}
+    - options: Event-level options (optional)
+ */