-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathPackageFactory.swift
More file actions
56 lines (48 loc) · 1.77 KB
/
PackageFactory.swift
File metadata and controls
56 lines (48 loc) · 1.77 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
//
// PackageFactory.swift
// XcodeHelper
//
// Created by dhcdht on 2016/10/20.
// Copyright © 2016年 DXStudio All rights reserved.
//
import Cocoa
/// 解析生成各种 package 的混合实例
class PackageFactory: NSObject {
static let packageClasses: [String: AnyClass] = [
"plugins": Plugin.self,
"color_schemes": ColorScheme.self,
"file_templates": FileTemplate.self,
"project_templates": ProjectTemplate.self,
]
class func createPackages(dict: Dictionary<String, Array<Dictionary<String, AnyObject>>>) -> Array<Package> {
var ret = Array<Package>()
autoreleasepool { () -> Void in
for (packageType, packages) in dict {
for packageDict in packages {
if let packageClass = self.packageClasses[packageType] {
var package: Package?
switch packageClass {
case is Plugin.Type:
package = Plugin(dict: packageDict)
case is ColorScheme.Type:
package = ColorScheme(dict: packageDict)
case is FileTemplate.Type:
package = FileTemplate(dict: packageDict)
case is ProjectTemplate.Type:
package = ProjectTemplate(dict: packageDict)
default: break
}
if let package = package {
ret.append(package)
} else {
// TODO:
}
} else {
// TODO:
}
}
}
}
return ret
}
}