Analytics improvement (#9)
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

Co-authored-by: Quentin Bandera <q.bandera@openium.fr>
Reviewed-on: #9
Co-authored-by: Loris Perret <l.perret@openium.fr>
Co-committed-by: Loris Perret <l.perret@openium.fr>
This commit is contained in:
2025-07-17 09:15:43 +02:00
committed by Thibaut Schmitt
parent 166026a766
commit c3b8ebfb37
12 changed files with 472 additions and 121 deletions

View File

@ -51,17 +51,23 @@ class AnalyticsDefinition {
}
private func getParameters() -> String {
var params = parameters
var result: String
if type == .screen {
params = params.filter { param in
!param.replaceIn.isEmpty
let paramsString = parameters.compactMap { parameter -> String? in
guard parameter.value.isEmpty else { return nil }
let defaultValue: String
switch parameter.type {
case .bool:
defaultValue = "\(parameter.defaultValue.lowercased())"
case .int, .double:
defaultValue = "\(parameter.defaultValue)"
case .string:
defaultValue = "\"\(parameter.defaultValue)\""
}
}
let paramsString = params.map { parameter in
"\(parameter.name): \(parameter.type)"
let defaultValueString = parameter.defaultValue.isEmpty ? "" : " = \(defaultValue)"
return "\(parameter.name): \(parameter.type.rawValue)\(defaultValueString)"
}
if paramsString.count > 2 {
@ -87,7 +93,10 @@ class AnalyticsDefinition {
case "path": path = path.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
case "category": category = category.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
case "action": action = action.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
default: break
default:
if let param = parameters.first(where: { $0.name == rep }), param.value.isEmpty == false {
param.value = param.value.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
}
}
}
}
@ -102,7 +111,18 @@ class AnalyticsDefinition {
}
supplementaryParams.forEach { param in
params.append("\"\(param.name)\": \(param.name)")
if param.value.isEmpty {
params.append("\"\(param.name)\": \(param.name)")
} else {
switch param.type {
case .bool:
params.append("\"\(param.name)\": \(param.value.lowercased())")
case .int, .double:
params.append("\"\(param.name)\": \(param.value)")
case .string:
params.append("\"\(param.name)\": \"\(param.value)\"")
}
}
}
if params.count > 1 {
@ -116,14 +136,15 @@ class AnalyticsDefinition {
[\(params.joined(separator: ", "))]
"""
} else {
result = "[:]"
result = "nil"
}
if type == .screen {
return """
logScreen(
name: "\(name)",
path: "\(path)"
path: "\(path)",
params: \(result)
)
"""
} else {
@ -153,7 +174,7 @@ class AnalyticsDefinition {
replaceIn()
return """
static func \(getFuncName())\(getParameters()) {
\(getlogFunction())
AnalyticsManager.shared.\(getlogFunction())
}
"""
}