Skip to content

Commit f262355

Browse files
committed
Update serialization for lists of objects
1 parent c6533a7 commit f262355

File tree

1 file changed

+47
-27
lines changed

1 file changed

+47
-27
lines changed

Xcode/Xcode/Serialization.swift

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -142,54 +142,45 @@ internal class Serializer {
142142
return lines.joinWithSeparator("\n")
143143
}
144144

145-
func comment(key: String, verbose: Bool) -> String? {
145+
func comment(key: String) -> String? {
146146
if key == projectFile.project.id {
147147
return "Project object"
148148
}
149149

150150
if let obj = projectFile.allObjects.dict[key] {
151-
if let name = obj.dict["name"] as? String {
152-
return name
153-
}
154-
if let path = obj.dict["path"] as? String {
155-
return path
156-
}
157151
if let ref = obj as? PBXReference {
158152
return ref.name ?? ref.path
159153
}
160-
if let nativeTarget = obj as? PBXNativeTarget {
161-
return verbose ? nativeTarget.name : nil
154+
if let target = obj as? PBXTarget {
155+
return target.name
162156
}
163157
if let config = obj as? XCBuildConfiguration {
164158
return config.name
165159
}
166160
if let copyFiles = obj as? PBXCopyFilesBuildPhase {
167-
return copyFiles.name
161+
return copyFiles.name ?? "CopyFiles"
168162
}
169163
if obj is PBXFrameworksBuildPhase {
170164
return "Frameworks"
171165
}
172-
if obj is PBXSourcesBuildPhase {
173-
return "Sources"
166+
if obj is PBXHeadersBuildPhase {
167+
return "Headers"
174168
}
175169
if obj is PBXResourcesBuildPhase {
176170
return "Resources"
177171
}
178-
if obj is PBXShellScriptBuildPhase {
179-
return "ShellScript"
180-
}
181-
if obj is PBXHeadersBuildPhase {
182-
return "Headers"
183-
}
184172
if let shellScript = obj as? PBXShellScriptBuildPhase {
185-
return shellScript.name
173+
return shellScript.name ?? "ShellScript"
174+
}
175+
if obj is PBXSourcesBuildPhase {
176+
return "Sources"
186177
}
187178
if let buildFile = obj as? PBXBuildFile {
188179
if let buildPhase = buildPhaseByFileId[key],
189-
let group = comment(buildPhase.id, verbose: verbose) {
180+
let group = comment(buildPhase.id) {
190181

191182
if let fileRefId = buildFile.fileRef?.id {
192-
if let fileRef = comment(fileRefId, verbose: verbose) {
183+
if let fileRef = comment(fileRefId) {
193184
return "\(fileRef) in \(group)"
194185
}
195186
}
@@ -240,7 +231,7 @@ internal class Serializer {
240231
let str = valStr(valItem)
241232

242233
var extraComment = ""
243-
if let c = comment(valItem, verbose: true) {
234+
if let c = comment(valItem) {
244235
extraComment = " /* \(c) */"
245236
}
246237

@@ -253,12 +244,41 @@ internal class Serializer {
253244
parts.append(");")
254245
}
255246
else {
256-
let space = valArr.isEmpty ? "" : " "
257-
parts.append(ps.joinWithSeparator("") + space + "); ")
247+
parts.append(ps.map { $0 + " "}.joinWithSeparator("") + "); ")
258248
}
259249

260250
}
261-
else if let valObj = val as? [String: AnyObject] {
251+
else if let valArr = val as? [JsonObject] {
252+
parts.append("\(keyStr) = (")
253+
254+
for valObj in valArr {
255+
if multiline {
256+
parts.append("\t{")
257+
}
258+
259+
for valKey in valObj.keys.sort() {
260+
let valVal: AnyObject = valObj[valKey]!
261+
let ps = objval(valKey, val: valVal, multiline: multiline)
262+
263+
if multiline {
264+
for p in ps {
265+
parts.append("\t\t\(p)")
266+
}
267+
}
268+
else {
269+
parts.append("\t" + ps.joinWithSeparator("") + "}; ")
270+
}
271+
}
272+
273+
if multiline {
274+
parts.append("\t},")
275+
}
276+
}
277+
278+
parts.append(");")
279+
280+
}
281+
else if let valObj = val as? JsonObject {
262282
parts.append("\(keyStr) = {")
263283

264284
for valKey in valObj.keys.sort() {
@@ -284,7 +304,7 @@ internal class Serializer {
284304
let str = valStr("\(val)")
285305

286306
var extraComment = "";
287-
if let c = comment(str, verbose: false) {
307+
if let c = comment(str) {
288308
extraComment = " /* \(c) */"
289309
}
290310

@@ -323,7 +343,7 @@ internal class Serializer {
323343
}
324344

325345
var objComment = ""
326-
if let c = comment(objKey, verbose: true) {
346+
if let c = comment(objKey) {
327347
objComment = " /* \(c) */"
328348
}
329349

0 commit comments

Comments
 (0)