Retours sur la structure du code

This commit is contained in:
2023-12-08 17:37:21 +01:00
committed by Loris Perret
parent 5427ff6786
commit dfe31b5c80
13 changed files with 177 additions and 143 deletions

View File

@ -25,11 +25,9 @@ class AnalyticsFileParser {
Analytics.exit(withError: error)
}
}
private static func getParameters(fromData data: [AnalyticsParameterDTO]) -> [AnalyticsParameter] {
var parameters: [AnalyticsParameter] = []
data.forEach { value in
private static func getParameters(from parameters: [AnalyticsParameterDTO]) -> [AnalyticsParameter] {
parameters.map { dtoParameter in
// Type
let type = value.type.uppercasedFirst()
@ -43,17 +41,18 @@ class AnalyticsFileParser {
let error = AnalyticsError.invalidParameter("type of \(value.name)")
Analytics.exit(withError: error)
}
let parameter: AnalyticsParameter = AnalyticsParameter(name: value.name, type: type)
if let replaceIn = value.replaceIn {
let parameter = AnalyticsParameter(
name: dtoParameter.name,
type: type
)
if let replaceIn = dtoParameter.replaceIn {
parameter.replaceIn = replaceIn.components(separatedBy: ",")
}
parameters.append(parameter)
return parameter
}
return parameters
}
private static func getTagDefinition(
@ -64,24 +63,24 @@ class AnalyticsFileParser {
comments: String?,
parameters: [AnalyticsParameterDTO]?
) -> AnalyticsDefinition {
let definition: AnalyticsDefinition = AnalyticsDefinition(id: id, name: name, type: type)
definition.tags = tags.components(separatedBy: ",")
let definition = AnalyticsDefinition(id: id, name: name, type: type)
definition.tags = tags
.components(separatedBy: ",")
.map { $0.removeLeadingTrailingWhitespace() }
if let comments = comments {
definition.comments = comments
}
if let parameters = parameters {
definition.parameters = Self.getParameters(fromData: parameters)
definition.parameters = Self.getParameters(from: parameters)
}
return definition
}
private static func getTagDefinitionScreen(fromData screens: [AnalyticsDefinitionScreenDTO]) -> [AnalyticsDefinition] {
var definitions: [AnalyticsDefinition] = []
for screen in screens {
private static func getTagDefinitionScreen(from screens: [AnalyticsDefinitionScreenDTO]) -> [AnalyticsDefinition] {
screens.map { screen in
let definition: AnalyticsDefinition = Self.getTagDefinition(
id: screen.id,
name: screen.name,
@ -90,10 +89,10 @@ class AnalyticsFileParser {
comments: screen.comments,
parameters: screen.parameters
)
if target.contains(Analytics.TargetType.matomo.value) {
// Path
guard let path = screen.path else {
let error = AnalyticsError.missingElement("screen path")
Analytics.exit(withError: error)
@ -101,17 +100,13 @@ class AnalyticsFileParser {
definition.path = path
}
definitions.append(definition)
return definition
}
return definitions
}
private static func getTagDefinitionEvent(fromData events: [AnalyticsDefinitionEventDTO]) -> [AnalyticsDefinition] {
var definitions: [AnalyticsDefinition] = []
for event in events {
private static func getTagDefinitionEvent(from events: [AnalyticsDefinitionEventDTO]) -> [AnalyticsDefinition] {
events.map { event in
let definition: AnalyticsDefinition = Self.getTagDefinition(
id: event.id,
name: event.name,
@ -120,54 +115,57 @@ class AnalyticsFileParser {
comments: event.comments,
parameters: event.parameters
)
if target.contains(Analytics.TargetType.matomo.value) {
// Category
guard let category = event.category else {
let error = AnalyticsError.missingElement("event category")
Analytics.exit(withError: error)
}
definition.category = category
// Action
guard let action = event.action else {
let error = AnalyticsError.missingElement("event action")
Analytics.exit(withError: error)
}
definition.action = action
}
definitions.append(definition)
return definition
}
return definitions
}
static func parse(_ inputFile: String, target: String) -> [AnalyticsCategory] {
self.inputFile = inputFile
self.target = target
let tagFile: AnalyticsFile = Self.parseYaml()
var sections: [AnalyticsCategory] = []
let tagFile = Self.parseYaml()
tagFile.categories.forEach { categorie in
let section: AnalyticsCategory = AnalyticsCategory(id: categorie.id)
if let screens = categorie.screens {
section.definitions.append(contentsOf: Self.getTagDefinitionScreen(fromData: screens))
return tagFile
.categories
.map { categorie in
let section: AnalyticsCategory = AnalyticsCategory(id: categorie.id)
if let screens = categorie.screens {
section
.definitions
.append(
contentsOf: Self.getTagDefinitionScreen(from: screens)
)
}
if let events = categorie.events {
section
.definitions
.append(
contentsOf: Self.getTagDefinitionEvent(from: events)
)
}
return section
}
if let events = categorie.events {
section.definitions.append(contentsOf: Self.getTagDefinitionEvent(fromData: events))
}
sections.append(section)
}
return sections
}
}