Skip to content

Commit d9b5003

Browse files
committed
fixed classname case issue in sub modules
1 parent 2732a53 commit d9b5003

File tree

4 files changed

+48
-29
lines changed

4 files changed

+48
-29
lines changed

SwiftyJSONAccelerator.xcodeproj/project.pbxproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@
180180
TargetAttributes = {
181181
93F1743E1BD0707D007E7DFC = {
182182
CreatedOnToolsVersion = 7.0.1;
183+
DevelopmentTeam = UYGU8PDBPS;
183184
};
184185
93F1744F1BD0707D007E7DFC = {
185186
CreatedOnToolsVersion = 7.0.1;
@@ -360,6 +361,7 @@
360361
COMBINE_HIDPI_IMAGES = YES;
361362
INFOPLIST_FILE = SwiftyJSONAccelerator/Info.plist;
362363
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
364+
MACOSX_DEPLOYMENT_TARGET = 10.9;
363365
PRODUCT_BUNDLE_IDENTIFIER = com.karthik.SwiftyJSONAccelerator;
364366
PRODUCT_NAME = SwiftyJSONAccelerator;
365367
};
@@ -372,6 +374,7 @@
372374
COMBINE_HIDPI_IMAGES = YES;
373375
INFOPLIST_FILE = SwiftyJSONAccelerator/Info.plist;
374376
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
377+
MACOSX_DEPLOYMENT_TARGET = 10.9;
375378
PRODUCT_BUNDLE_IDENTIFIER = com.karthik.SwiftyJSONAccelerator;
376379
PRODUCT_NAME = SwiftyJSONAccelerator;
377380
};

SwiftyJSONAccelerator/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<key>CFBundlePackageType</key>
1818
<string>APPL</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>1.0</string>
20+
<string>0.0.1</string>
2121
<key>CFBundleSignature</key>
2222
<string>????</string>
2323
<key>CFBundleVersion</key>

SwiftyJSONAccelerator/SJEditorViewController.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@ class SJEditorViewController: NSViewController, NSTextViewDelegate {
2121
@IBOutlet var authorNameTextField: NSTextField?
2222

2323
// MARK: View methods
24-
override func viewDidLoad() {
25-
super.viewDidLoad()
26-
24+
override func loadView() {
25+
super.loadView()
2726
textView!.delegate = self
2827
textView!.updateFormat()
2928
textView!.lnv_setUpLineNumberView()
3029
resetErrorImage()
3130
authorNameTextField?.stringValue = NSFullUserName()
32-
3331
}
3432

3533
override var representedObject: AnyObject? {

SwiftyJSONAccelerator/SJModelGenerator.swift

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class ModelGenerator {
4444
*/
4545
public func generate() {
4646

47-
let name: String = generateModelForClass(baseContent, className: baseClassName)
47+
let name: String = generateModelForClass(baseContent, className: baseClassName, isSubModule: false)
4848

4949
// Notify user that the files are generated!
5050
let notification: NSUserNotification = NSUserNotification()
@@ -65,15 +65,15 @@ public class ModelGenerator {
6565

6666
- returns: Returns the final name of the class.
6767
*/
68-
internal func generateModelForClass(parsedJSONObject: JSON, className: String) -> String {
68+
internal func generateModelForClass(parsedJSONObject: JSON, className: String, isSubModule: Bool) -> String {
6969

7070
var declarations: String = ""
7171
var stringConstants: String = ""
7272
var initalizers: String = ""
7373
var encoders: String = ""
7474
var decoders: String = ""
7575

76-
let className = buildClassName(className, prefix: self.prefix!)
76+
let className = buildClassName(className, prefix: self.prefix!, isSubModule: isSubModule)
7777
if let object = parsedJSONObject.dictionary {
7878
for (key, subJson) in object {
7979

@@ -88,10 +88,19 @@ public class ModelGenerator {
8888

8989
// If the array has objects, then take the first one and proces it to generate a model.
9090
if subJson.arrayValue.count > 0 {
91-
let subClassName = generateModelForClass(subJson.arrayValue[0], className: variableName)
92-
declarations = declarations.stringByAppendingFormat(variableDeclarationBuilder(variableName, type: "[\(subClassName)]"))
93-
initalizers = initalizers.stringByAppendingFormat("%@\n", initalizerForObjectArray(variableName, className: subClassName, key: stringConstantName))
94-
decoders = decoders.stringByAppendingFormat("%@\n", decoderForVariable(variableName,key: stringConstantName, type: "[\(subClassName)]"))
91+
let subClassType = checkType(subJson.arrayValue[0])
92+
93+
if subClassType == VariableType.kObjectType {
94+
let subClassName = generateModelForClass(subJson.arrayValue[0], className: variableName, isSubModule:true)
95+
declarations = declarations.stringByAppendingFormat(variableDeclarationBuilder(variableName, type: "[\(subClassName)]"))
96+
initalizers = initalizers.stringByAppendingFormat("%@\n", initalizerForObjectArray(variableName, className: subClassName, key: stringConstantName))
97+
decoders = decoders.stringByAppendingFormat("%@\n", decoderForVariable(variableName,key: stringConstantName, type: "[\(subClassName)]"))
98+
} else {
99+
declarations = declarations.stringByAppendingFormat(variableDeclarationBuilder(variableName, type: "[\(subClassType)]"))
100+
initalizers = initalizers.stringByAppendingFormat("%@\n", initalizerForVariableArray(variableName, key: stringConstantName, type: subClassType))
101+
decoders = decoders.stringByAppendingFormat("%@\n", decoderForVariable(variableName,key: stringConstantName, type: "[\(subClassType)]"))
102+
}
103+
95104
} else {
96105
// if nothing is there make it a blank array.
97106
declarations = declarations.stringByAppendingFormat(variableDeclarationBuilder(variableName, type: variableType))
@@ -101,7 +110,7 @@ public class ModelGenerator {
101110

102111
} else if variableType == VariableType.kObjectType {
103112

104-
let subClassName = generateModelForClass(subJson, className: variableName)
113+
let subClassName = generateModelForClass(subJson, className: variableName, isSubModule:true)
105114
declarations = declarations.stringByAppendingFormat(variableDeclarationBuilder(variableName, type: subClassName))
106115
initalizers = initalizers.stringByAppendingFormat("%@\n", initalizerForObject(variableName, className: subClassName, key: stringConstantName))
107116
decoders = decoders.stringByAppendingFormat("%@\n", decoderForVariable(variableName,key: stringConstantName, type: subClassName))
@@ -154,8 +163,10 @@ public class ModelGenerator {
154163

155164
- returns: A generated string representing the name of the class in the model.
156165
*/
157-
internal func buildClassName(className: String, prefix: String) -> String {
158-
var classNameCleaned = variableNameBuilder(className)
166+
internal func buildClassName(className: String, prefix: String, isSubModule: Bool) -> String {
167+
168+
// If it is a submodule it is already formatted no need to camelcase it.
169+
var classNameCleaned = isSubModule ? className : variableNameBuilder(className)
159170
classNameCleaned.replaceRange(classNameCleaned.startIndex...classNameCleaned.startIndex, with: String(classNameCleaned[classNameCleaned.startIndex]).uppercaseString)
160171
return prefix.stringByAppendingString(classNameCleaned)
161172
}
@@ -226,11 +237,7 @@ public class ModelGenerator {
226237

227238

228239
internal func initalizerForVariable(variableName: String, var type: String, key: String) -> String {
229-
if type == VariableType.kNumberType {
230-
type = "number"
231-
} else {
232-
type.replaceRange(type.startIndex...type.startIndex, with: String(type[type.startIndex]).lowercaseString)
233-
}
240+
type = typeToSwiftType(type)
234241
return "\t\tif let value = json[\(key)].\(type) {\n\t\t\t\(variableName) = value\n\t\t}"
235242
}
236243

@@ -245,12 +252,17 @@ public class ModelGenerator {
245252
internal func initalizerForObjectArray(variableName: String, className: String, key: String) -> String {
246253
return "\t\t\(variableName) = []\n\t\tif let items = json[\(key)].array {\n\t\t\tfor item in items {\n\t\t\t\t\(variableName)?.append(\(className)(json: item))\n\t\t\t}\n\t\t}\n"
247254
}
255+
256+
internal func initalizerForVariableArray(variableName: String, key: String, var type: String) -> String {
257+
type = typeToSwiftType(type)
258+
return "\t\t\(variableName) = []\n\t\tif let items = json[\(key)].array {\n\t\t\tfor item in items {\n\t\t\t\tif let value = item.\(type) {\n\t\t\t\t\(variableName)?.append(value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n"
259+
}
248260

249261
internal func encoderForVariable(variableName: String, key: String, type: String) -> String {
250262
if type == VariableType.kBoolType {
251263
return "\t\taCoder.encodeBool(\(variableName), forKey: \(key))"
252264
}
253-
return "\t\taCoder.encodeObject(\(variableName), forKey: \(key))"
265+
return "\t\taCoder.encodeObject(\(variableName), forKey: \(key))"
254266
}
255267

256268
internal func decoderForVariable(variableName: String, key: String, type: String) -> String {
@@ -304,15 +316,21 @@ public class ModelGenerator {
304316
}
305317
}
306318

307-
/*
308-
required init(coder aDecoder: NSCoder) {
309-
self.bottlesArray = aDecoder.decodeObjectForKey("bottleArray") as NSMutableArray
310-
}
319+
/**
320+
Generates a swift variable type from the given VariableType.
321+
322+
- parameter type: VariableType
311323

312-
func encodeWithCoder(aCoder: NSCoder) {
313-
aCoder.encodeObject(bottlesArray, forKey: "bottleArray")
324+
- returns: swift variable type.
325+
*/
326+
internal func typeToSwiftType(var type: String) -> String {
327+
if type == VariableType.kNumberType {
328+
type = "number"
329+
} else {
330+
type.replaceRange(type.startIndex...type.startIndex, with: String(type[type.startIndex]).lowercaseString)
331+
}
332+
333+
return type
314334
}
315-
*/
316-
317335

318336
}

0 commit comments

Comments
 (0)