Optional generation of extension (R.xx)
Optional generation of Colors/Fonts/Images/Stringium extension Fix swiftlint warning
This commit is contained in:
@ -5,11 +5,14 @@
|
||||
// Created by Loris Perret on 08/12/2023.
|
||||
//
|
||||
|
||||
// CPD-OFF
|
||||
|
||||
import CoreVideo
|
||||
import Foundation
|
||||
import ToolCore
|
||||
|
||||
// Disabled cause it's a pain to handle in generated string
|
||||
// swiftlint:disable type_body_length
|
||||
|
||||
enum AnalyticsGenerator {
|
||||
|
||||
@ -89,48 +92,49 @@ enum AnalyticsGenerator {
|
||||
) -> String {
|
||||
"""
|
||||
// Generated by ResgenSwift.\(Analytics.toolName) \(ResgenSwiftVersion)
|
||||
|
||||
|
||||
\(Self.getImport(targets: targets))
|
||||
|
||||
|
||||
\(Self.getAnalyticsProtocol(targets: targets))
|
||||
|
||||
\(Self.getTrackerTypeEnum())
|
||||
|
||||
|
||||
\(Self.getTrackerTypeEnum(targets: targets))
|
||||
|
||||
// MARK: - Manager
|
||||
|
||||
class AnalyticsManager {
|
||||
|
||||
|
||||
static var shared = AnalyticsManager()
|
||||
|
||||
|
||||
private init() {}
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
|
||||
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
|
||||
|
||||
|
||||
\(Self.getEnabledContent())
|
||||
|
||||
|
||||
\(Self.getAnalyticsProperties(targets: targets))
|
||||
|
||||
|
||||
\(Self.getPrivateLogFunction())
|
||||
"""
|
||||
}
|
||||
|
||||
private static func getTrackerTypeEnum() -> String {
|
||||
|
||||
private static func getTrackerTypeEnum(targets: [TrackerType]) -> String {
|
||||
var result: [String] = []
|
||||
TrackerType.allCases.forEach { type in
|
||||
targets.forEach { type in
|
||||
result.append(" case \(type)")
|
||||
}
|
||||
|
||||
|
||||
return """
|
||||
// MARK: - Traker Type
|
||||
|
||||
|
||||
enum TrackerType: CaseIterable {
|
||||
|
||||
\(result.joined(separator: "\n"))
|
||||
}
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
private static func getEnabledContent() -> String {
|
||||
"""
|
||||
private var isEnabled: Bool {
|
||||
@ -140,9 +144,9 @@ enum AnalyticsGenerator {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Methods
|
||||
|
||||
|
||||
// MARK: - Enable Methods
|
||||
|
||||
private func setAnalytics(enable: Bool, _ analytics: [TrackerType]) {
|
||||
managers.forEach { (key, value) in
|
||||
if analytics.contains(where: { type in
|
||||
@ -152,11 +156,11 @@ enum AnalyticsGenerator {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
setAnalytics(enable: true, analytics)
|
||||
}
|
||||
|
||||
|
||||
func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
setAnalytics(enable: false, analytics)
|
||||
}
|
||||
@ -171,6 +175,7 @@ enum AnalyticsGenerator {
|
||||
if targets.contains(TrackerType.matomo) {
|
||||
result.append("import MatomoTracker")
|
||||
}
|
||||
|
||||
if targets.contains(TrackerType.firebase) {
|
||||
result.append("import FirebaseAnalytics")
|
||||
}
|
||||
@ -180,13 +185,15 @@ enum AnalyticsGenerator {
|
||||
|
||||
private static func getPrivateLogFunction() -> String {
|
||||
"""
|
||||
private func logScreen(
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
private func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
@ -203,7 +210,7 @@ enum AnalyticsGenerator {
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
@ -235,6 +242,7 @@ enum AnalyticsGenerator {
|
||||
)
|
||||
""")
|
||||
}
|
||||
|
||||
if targets.contains(TrackerType.firebase) {
|
||||
content.append(" managers[TrackerType.firebase] = FirebaseAnalyticsManager()")
|
||||
}
|
||||
@ -252,22 +260,22 @@ enum AnalyticsGenerator {
|
||||
// MARK: - Protocol
|
||||
|
||||
protocol AnalyticsManagerProtocol {
|
||||
|
||||
func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
)
|
||||
|
||||
|
||||
func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
)
|
||||
|
||||
|
||||
func setEnable(_ enable: Bool)
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
var result: [String] = [proto]
|
||||
@ -280,7 +288,7 @@ enum AnalyticsGenerator {
|
||||
result.append(FirebaseGenerator.service)
|
||||
}
|
||||
|
||||
return result.joined(separator: "\n")
|
||||
return result.joined(separator: "\n\n")
|
||||
}
|
||||
|
||||
private static func getProperties(
|
||||
@ -319,3 +327,5 @@ enum AnalyticsGenerator {
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
// CPD-ON
|
||||
|
@ -13,11 +13,11 @@ enum FirebaseGenerator {
|
||||
|
||||
static var service: String {
|
||||
[
|
||||
FirebaseGenerator.header,
|
||||
FirebaseGenerator.logScreen,
|
||||
FirebaseGenerator.logEvent,
|
||||
FirebaseGenerator.enable,
|
||||
FirebaseGenerator.footer
|
||||
Self.header,
|
||||
Self.logScreen,
|
||||
Self.logEvent,
|
||||
Self.enable,
|
||||
Self.footer
|
||||
]
|
||||
.joined(separator: "\n")
|
||||
}
|
||||
@ -29,6 +29,9 @@ enum FirebaseGenerator {
|
||||
// MARK: - Firebase
|
||||
|
||||
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||
|
||||
// MARK: - Methods
|
||||
|
||||
"""
|
||||
}
|
||||
|
||||
@ -42,11 +45,11 @@ enum FirebaseGenerator {
|
||||
var parameters = [
|
||||
AnalyticsParameterScreenName: name as NSObject
|
||||
]
|
||||
|
||||
|
||||
if path.isEmpty == false {
|
||||
parameters["path"] = path + "/iOS" as NSObject
|
||||
}
|
||||
|
||||
|
||||
if let supplementaryParameters = params {
|
||||
for (newKey, newValue) in supplementaryParameters {
|
||||
if parameters.contains(where: { (key: String, value: NSObject) in
|
||||
@ -54,11 +57,11 @@ enum FirebaseGenerator {
|
||||
}) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
parameters[newKey] = newValue as? NSObject
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Analytics.logEvent(
|
||||
AnalyticsEventScreenView,
|
||||
parameters: parameters
|
||||
@ -79,15 +82,15 @@ enum FirebaseGenerator {
|
||||
var parameters: [String:NSObject] = [
|
||||
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject
|
||||
]
|
||||
|
||||
|
||||
if category.isEmpty == false {
|
||||
parameters["AnalyticsParameterItemCategory"] = category as NSObject
|
||||
}
|
||||
|
||||
|
||||
if action.isEmpty == false {
|
||||
parameters["action"] = action as NSObject
|
||||
}
|
||||
|
||||
|
||||
if let supplementaryParameters = params {
|
||||
for (newKey, newValue) in supplementaryParameters {
|
||||
if parameters.contains(where: { (key: String, value: NSObject) in
|
||||
@ -105,9 +108,10 @@ enum FirebaseGenerator {
|
||||
parameters: parameters
|
||||
)
|
||||
}
|
||||
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
private static var enable: String {
|
||||
"""
|
||||
func setEnable(_ enable: Bool) {
|
||||
@ -115,11 +119,10 @@ enum FirebaseGenerator {
|
||||
}
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
private static var footer: String {
|
||||
"""
|
||||
}
|
||||
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
@ -5,18 +5,20 @@
|
||||
// Created by Loris Perret on 05/12/2023.
|
||||
//
|
||||
|
||||
// CPD-OFF
|
||||
|
||||
import Foundation
|
||||
|
||||
enum MatomoGenerator {
|
||||
|
||||
static var service: String {
|
||||
[
|
||||
MatomoGenerator.header,
|
||||
MatomoGenerator.setup,
|
||||
MatomoGenerator.logScreen,
|
||||
MatomoGenerator.logEvent,
|
||||
MatomoGenerator.enable,
|
||||
MatomoGenerator.footer
|
||||
Self.header,
|
||||
Self.setup,
|
||||
Self.logScreen,
|
||||
Self.logEvent,
|
||||
Self.enable,
|
||||
Self.footer
|
||||
]
|
||||
.joined(separator: "\n")
|
||||
}
|
||||
@ -100,10 +102,10 @@ enum MatomoGenerator {
|
||||
url: nil
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
private static var enable: String {
|
||||
"""
|
||||
func setEnable(_ enable: Bool) {
|
||||
@ -115,7 +117,8 @@ enum MatomoGenerator {
|
||||
private static var footer: String {
|
||||
"""
|
||||
}
|
||||
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
// CPD-ON
|
||||
|
Reference in New Issue
Block a user