feat(RES-34): Fix plist font filename (#14)
All checks were successful
gitea-openium/resgen.swift/pipeline/head This commit looks good

Reviewed-on: #14
This commit is contained in:
2025-05-05 09:53:05 +02:00
parent 8442c89944
commit 756de4f1de
96 changed files with 3028 additions and 2852 deletions

View File

@ -8,21 +8,24 @@
import Foundation
class AnalyticsCategory {
// MARK: - Properties
let id: String // OnBoarding
var definitions = [AnalyticsDefinition]()
// MARK: - Init
init(id: String) {
self.id = id
}
// MARK: - Methods
func hasOneOrMoreMatchingTags(tags: [String]) -> Bool {
let allTags = definitions.flatMap { $0.tags }
let allTagsSet = Set(allTags)
let intersection = Set(tags).intersection(allTagsSet)
if intersection.isEmpty {
return false

View File

@ -9,6 +9,9 @@ import Foundation
import ToolCore
class AnalyticsDefinition {
// MARK: - Properties
let id: String
var name: String
var path: String = ""
@ -18,7 +21,7 @@ class AnalyticsDefinition {
var tags: [String] = []
var parameters: [AnalyticsParameter] = []
var type: TagType
// MARK: - Init
init(id: String, name: String, type: TagType) {
@ -26,7 +29,7 @@ class AnalyticsDefinition {
self.name = name
self.type = type
}
// MARK: - Methods
func hasOneOrMoreMatchingTags(inputTags: [String]) -> Bool {
@ -35,7 +38,7 @@ class AnalyticsDefinition {
}
return true
}
// MARK: - Private Methods
private func getFuncName() -> String {
@ -43,24 +46,24 @@ class AnalyticsDefinition {
id.components(separatedBy: "_").forEach { word in
pascalCaseTitle.append(contentsOf: word.uppercasedFirst())
}
return "log\(type == .screen ? "Screen" : "Event")\(pascalCaseTitle)"
}
private func getParameters() -> String {
var params = parameters
var result: String
if type == .screen {
params = params.filter { param in
!param.replaceIn.isEmpty
}
}
let paramsString = params.map { parameter in
"\(parameter.name): \(parameter.type)"
}
if paramsString.count > 2 {
result = """
(
@ -72,10 +75,10 @@ class AnalyticsDefinition {
(\(paramsString.joined(separator: ", ")))
"""
}
return result
}
private func replaceIn() {
for parameter in parameters {
for rep in parameter.replaceIn {
@ -89,15 +92,15 @@ class AnalyticsDefinition {
}
}
}
private func getlogFunction() -> String {
var params: [String] = []
var result: String
let supplementaryParams = parameters.filter { param in
param.replaceIn.isEmpty
}
supplementaryParams.forEach { param in
params.append("\"\(param.name)\": \(param.name)")
}
@ -115,7 +118,7 @@ class AnalyticsDefinition {
} else {
result = "[:]"
}
if type == .screen {
return """
logScreen(
@ -134,9 +137,9 @@ class AnalyticsDefinition {
"""
}
}
// MARK: - Raw strings
func getProperty() -> String {
replaceIn()
return """
@ -145,7 +148,7 @@ class AnalyticsDefinition {
}
"""
}
func getStaticProperty() -> String {
replaceIn()
return """

View File

@ -8,37 +8,42 @@
import Foundation
struct AnalyticsFile: Codable {
var categories: [AnalyticsCategoryDTO]
}
struct AnalyticsCategoryDTO: Codable {
var id: String
var screens: [AnalyticsDefinitionScreenDTO]?
var events: [AnalyticsDefinitionEventDTO]?
}
struct AnalyticsDefinitionScreenDTO: Codable {
var id: String
var name: String
var tags: String
var comments: String?
var parameters: [AnalyticsParameterDTO]?
var path: String?
}
struct AnalyticsDefinitionEventDTO: Codable {
var id: String
var name: String
var tags: String
var comments: String?
var parameters: [AnalyticsParameterDTO]?
var category: String?
var action: String?
}
struct AnalyticsParameterDTO: Codable {
var name: String
var type: String
var replaceIn: String?

View File

@ -8,12 +8,15 @@
import Foundation
class AnalyticsParameter {
// MARK: - Properties
var name: String
var type: String
var replaceIn: [String] = []
// MARK: - Init
init(name: String, type: String) {
self.name = name
self.type = type

View File

@ -8,8 +8,9 @@
import Foundation
extension AnalyticsDefinition {
enum TagType {
case screen
case event
}

View File

@ -7,7 +7,8 @@
import Foundation
enum TrackerType: CaseIterable {
enum TrackerType: CaseIterable, Sendable {
case matomo
case firebase
@ -15,6 +16,7 @@ enum TrackerType: CaseIterable {
switch self {
case .matomo:
"matomo"
case .firebase:
"firebase"
}