@@ -142,54 +142,45 @@ internal class Serializer {
142
142
return lines. joinWithSeparator ( " \n " )
143
143
}
144
144
145
- func comment( key: String , verbose : Bool ) -> String ? {
145
+ func comment( key: String ) -> String ? {
146
146
if key == projectFile. project. id {
147
147
return " Project object "
148
148
}
149
149
150
150
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
- }
157
151
if let ref = obj as? PBXReference {
158
152
return ref. name ?? ref. path
159
153
}
160
- if let nativeTarget = obj as? PBXNativeTarget {
161
- return verbose ? nativeTarget . name : nil
154
+ if let target = obj as? PBXTarget {
155
+ return target . name
162
156
}
163
157
if let config = obj as? XCBuildConfiguration {
164
158
return config. name
165
159
}
166
160
if let copyFiles = obj as? PBXCopyFilesBuildPhase {
167
- return copyFiles. name
161
+ return copyFiles. name ?? " CopyFiles "
168
162
}
169
163
if obj is PBXFrameworksBuildPhase {
170
164
return " Frameworks "
171
165
}
172
- if obj is PBXSourcesBuildPhase {
173
- return " Sources "
166
+ if obj is PBXHeadersBuildPhase {
167
+ return " Headers "
174
168
}
175
169
if obj is PBXResourcesBuildPhase {
176
170
return " Resources "
177
171
}
178
- if obj is PBXShellScriptBuildPhase {
179
- return " ShellScript "
180
- }
181
- if obj is PBXHeadersBuildPhase {
182
- return " Headers "
183
- }
184
172
if let shellScript = obj as? PBXShellScriptBuildPhase {
185
- return shellScript. name
173
+ return shellScript. name ?? " ShellScript "
174
+ }
175
+ if obj is PBXSourcesBuildPhase {
176
+ return " Sources "
186
177
}
187
178
if let buildFile = obj as? PBXBuildFile {
188
179
if let buildPhase = buildPhaseByFileId [ key] ,
189
- let group = comment ( buildPhase. id, verbose : verbose ) {
180
+ let group = comment ( buildPhase. id) {
190
181
191
182
if let fileRefId = buildFile. fileRef? . id {
192
- if let fileRef = comment ( fileRefId, verbose : verbose ) {
183
+ if let fileRef = comment ( fileRefId) {
193
184
return " \( fileRef) in \( group) "
194
185
}
195
186
}
@@ -240,7 +231,7 @@ internal class Serializer {
240
231
let str = valStr ( valItem)
241
232
242
233
var extraComment = " "
243
- if let c = comment ( valItem, verbose : true ) {
234
+ if let c = comment ( valItem) {
244
235
extraComment = " /* \(c) */"
245
236
}
246
237
@@ -253,12 +244,41 @@ internal class Serializer {
253
244
parts. append ( " ); " )
254
245
}
255
246
else {
256
- let space = valArr. isEmpty ? " " : " "
257
- parts. append ( ps. joinWithSeparator ( " " ) + space + " ); " )
247
+ parts. append ( ps. map { $0 + " " } . joinWithSeparator ( " " ) + " ); " )
258
248
}
259
249
260
250
}
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 {
262
282
parts. append ( " \( keyStr) = { " )
263
283
264
284
for valKey in valObj. keys. sort ( ) {
@@ -284,7 +304,7 @@ internal class Serializer {
284
304
let str = valStr ( " \( val) " )
285
305
286
306
var extraComment = " " ;
287
- if let c = comment ( str, verbose : false ) {
307
+ if let c = comment ( str) {
288
308
extraComment = " /* \(c) */"
289
309
}
290
310
@@ -323,7 +343,7 @@ internal class Serializer {
323
343
}
324
344
325
345
var objComment = " "
326
- if let c = comment ( objKey, verbose : true ) {
346
+ if let c = comment ( objKey) {
327
347
objComment = " /* \(c) */"
328
348
}
329
349
0 commit comments