-
-
Notifications
You must be signed in to change notification settings - Fork 118
Expand file tree
/
Copy pathTransformOptions.swift
More file actions
71 lines (62 loc) · 2.64 KB
/
TransformOptions.swift
File metadata and controls
71 lines (62 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import BartyCrouchUtility
import Foundation
import MungoHealer
import Toml
public struct TransformOptions {
public let codePaths: [String]
public let subpathsToIgnore: [String]
public let localizablePaths: [String]
public let transformer: Transformer
public let supportedLanguageEnumPath: String
public let typeName: String
public let translateMethodName: String
public let customLocalizableName: String?
public let separateWithEmptyLine: Bool
}
extension TransformOptions: TomlCodable {
static func make(toml: Toml) throws -> TransformOptions {
let update: String = "update"
let transform: String = "transform"
guard
let transformer = Transformer(
rawValue: toml.string(update, transform, "transformer") ?? Transformer.foundation.rawValue
)
else {
throw MungoError(
source: .invalidUserInput,
message: "Unknown `transformer` provided in [update.code.transform]. Supported: \(Transformer.allCases)"
)
}
return TransformOptions(
codePaths: toml.filePaths(update, transform, singularKey: "codePath", pluralKey: "codePaths"),
subpathsToIgnore: toml.array(update, transform, "subpathsToIgnore") ?? Constants.defaultSubpathsToIgnore,
localizablePaths: toml.filePaths(
update,
transform,
singularKey: "localizablePath",
pluralKey: "localizablePaths"
),
transformer: transformer,
supportedLanguageEnumPath: toml.string(update, transform, "supportedLanguageEnumPath") ?? ".",
typeName: toml.string(update, transform, "typeName") ?? "BartyCrouch",
translateMethodName: toml.string(update, transform, "translateMethodName") ?? "translate",
customLocalizableName: toml.string(update, transform, "customLocalizableName"),
separateWithEmptyLine: toml.bool(update, transform, "separateWithEmptyLine") ?? true
)
}
func tomlContents() -> String {
var lines: [String] = ["[update.transform]"]
lines.append("codePaths = \(self.codePaths)")
lines.append("subpathsToIgnore = \(self.subpathsToIgnore)")
lines.append("localizablePaths = \(self.localizablePaths)")
lines.append(#"transformer = "\#(self.transformer.rawValue)""#)
lines.append(#"supportedLanguageEnumPath = "\#(self.supportedLanguageEnumPath)""#)
lines.append(#"typeName = "\#(self.typeName)""#)
lines.append(#"translateMethodName = "\#(self.translateMethodName)""#)
if let customLocalizableName = customLocalizableName {
lines.append(#"customLocalizableName = "\#(customLocalizableName)""#)
}
lines.append("separateWithEmptyLine = \(self.separateWithEmptyLine)")
return lines.joined(separator: "\n")
}
}