@@ -39,7 +39,7 @@ class SKCodeBuilder: NSObject {
39
39
lazy var fromJsonString = NSMutableString ( )
40
40
lazy var toJsonString = NSMutableString ( )
41
41
42
- var fileTye : String {
42
+ var fileType : String {
43
43
get {
44
44
if config. codeType == . Swift { return " swift " }
45
45
else if config. codeType == . Dart { return " dart " }
@@ -56,6 +56,8 @@ class SKCodeBuilder: NSObject {
56
56
toJsonString = " "
57
57
let hString = NSMutableString ( )
58
58
let mString = NSMutableString ( )
59
+ let fileName = ( config. codeType == . Dart) ? config. rootModelName. underscore_name : config. rootModelName
60
+
59
61
handleDictValue ( dictValue: jsonObj, key: " " , hString: hString, mString: mString)
60
62
if config. codeType == . OC {
61
63
if config. superClassName == " NSObject " {
@@ -69,10 +71,9 @@ class SKCodeBuilder: NSObject {
69
71
hString. insert ( " \n import HandyJSON \n \n " , at: 0 )
70
72
}
71
73
} else if config. codeType == . Dart {
72
- hString. insert ( " \n part ' \( config . rootModelName ) .m.dart'; \n \n " , at: 0 )
73
- mString. insert ( " \n part of ' \( config . rootModelName ) .dart'; \n \n " , at: 0 )
74
+ hString. insert ( " \n part ' \( fileName ) .m.dart'; \n \n " , at: 0 )
75
+ mString. insert ( " \n part of ' \( fileName ) .dart'; \n \n " , at: 0 )
74
76
}
75
-
76
77
let dateFormatter = DateFormatter ( )
77
78
dateFormatter. dateFormat = " yyyy/MM/dd "
78
79
let time = dateFormatter. string ( from: Date ( ) )
@@ -81,22 +82,22 @@ class SKCodeBuilder: NSObject {
81
82
let hCommentString =
82
83
"""
83
84
//
84
- // \( config . rootModelName ) . \( fileTye )
85
+ // \( fileName ) . \( fileType )
85
86
// SKGenerateModelTool
86
87
//
87
88
// Created by \( config. authorName) on \( time) .
88
89
// Copyright © \( year) SKGenerateModelTool. All rights reserved.
89
90
// \n
90
91
"""
91
92
92
- var fileName = " m "
93
+ var fileSuffixName = " m "
93
94
if config. codeType == . Dart {
94
- fileName = " m.dart "
95
+ fileSuffixName = " m.dart "
95
96
}
96
97
let mCommentString =
97
98
"""
98
99
//
99
- // \( config . rootModelName ) . \( fileName )
100
+ // \( fileName ) . \( fileSuffixName )
100
101
// SKGenerateModelTool
101
102
//
102
103
// Created by \( config. authorName) on \( time) .
@@ -113,7 +114,6 @@ class SKCodeBuilder: NSObject {
113
114
114
115
func generateFile( with filePath: String ? , hString: NSMutableString , mString: NSMutableString , complete: GenerateFileComplete ? ) {
115
116
if hString. length > 0 && mString. length > 0 {
116
-
117
117
var filePath = filePath
118
118
var success = false
119
119
if filePath == nil {
@@ -135,17 +135,17 @@ class SKCodeBuilder: NSObject {
135
135
}
136
136
}
137
137
}
138
-
138
+ let fileName = ( config . codeType == . Dart ) ? config . rootModelName . underscore_name : config . rootModelName
139
139
var fileNameH = " " , fileNameM = " "
140
140
if let filePath = filePath {
141
141
if config. codeType == . OC {
142
- fileNameH = filePath. appending ( " / \( config . rootModelName ) .h " )
143
- fileNameM = filePath. appending ( " / \( config . rootModelName ) .m " )
142
+ fileNameH = filePath. appending ( " / \( fileName ) .h " )
143
+ fileNameM = filePath. appending ( " / \( fileName ) .m " )
144
144
} else if config. codeType == . Swift {
145
- fileNameH = filePath. appending ( " / \( config . rootModelName ) .swift " )
145
+ fileNameH = filePath. appending ( " / \( fileName ) .swift " )
146
146
} else if config. codeType == . Dart {
147
- fileNameH = filePath. appending ( " / \( config . rootModelName ) .dart " )
148
- fileNameM = filePath. appending ( " / \( config . rootModelName ) .m.dart " )
147
+ fileNameH = filePath. appending ( " / \( fileName ) .dart " )
148
+ fileNameM = filePath. appending ( " / \( fileName ) .m.dart " )
149
149
}
150
150
do {
151
151
if !fileNameH. isBlank {
@@ -194,7 +194,6 @@ class SKCodeBuilder: NSObject {
194
194
} else {
195
195
hString. append ( " \n class \( config. rootModelName) extends \( config. superClassName) { \n \n " )
196
196
}
197
-
198
197
} else { // sub model
199
198
modelName = modelClassName ( with: key)
200
199
if config. superClassName. isBlank {
@@ -240,7 +239,6 @@ class SKCodeBuilder: NSObject {
240
239
} else if config. codeType == . Dart {
241
240
hString. append ( " \( modelName) \( key) ; \n " )
242
241
self . yymodelPropertyGenericClassDicts. setValue ( modelName, forKey: key)
243
-
244
242
let fString =
245
243
"""
246
244
if (json[' \( key) '] != null) {
@@ -249,7 +247,6 @@ class SKCodeBuilder: NSObject {
249
247
250
248
"""
251
249
fromJsonString. append ( fString)
252
-
253
250
let tString =
254
251
"""
255
252
if (instance. \( key) != null) {
@@ -273,7 +270,6 @@ class SKCodeBuilder: NSObject {
273
270
hString. append ( " /// <#泛型#> \n var \( key) : Any? \n " )
274
271
} else if config. codeType == . Dart {
275
272
hString. append ( " dynamic \( key) ; //<#泛型#> \n " )
276
-
277
273
let fString =
278
274
"""
279
275
if (json[' \( key) '] != null) {
@@ -282,15 +278,13 @@ class SKCodeBuilder: NSObject {
282
278
283
279
"""
284
280
fromJsonString. append ( fString)
285
-
286
281
let tString =
287
282
"""
288
283
if (instance. \( key) != null) {
289
284
json[' \( key) '] = instance. \( key) ;
290
285
}
291
286
292
287
"""
293
-
294
288
toJsonString. append ( tString)
295
289
}
296
290
}
@@ -319,15 +313,18 @@ class SKCodeBuilder: NSObject {
319
313
if !key. isBlank {
320
314
modelName = modelClassName ( with: key)
321
315
}
322
- let fromJsonString =
316
+ let headerString =
323
317
"""
324
318
325
319
\( modelName) fromJson(Map<String, dynamic> json) => _$ \( modelName) FromJson(json, this);
326
320
Map<String, dynamic> toJson() => _$ \( modelName) ToJson(this);
327
321
328
322
"""
329
- hString. append ( fromJsonString ) ;
323
+ hString. append ( headerString ) ;
330
324
hString. append ( " } \n " )
325
+
326
+ fromJsonString. append ( " return instance; \n " ) ;
327
+ toJsonString. append ( " return json; \n " ) ;
331
328
}
332
329
if !key. isBlank {
333
330
self . handleDicts. removeObject ( forKey: key)
@@ -415,7 +412,6 @@ class SKCodeBuilder: NSObject {
415
412
416
413
"""
417
414
fromJsonString. append ( fString)
418
-
419
415
let tString =
420
416
"""
421
417
if (instance. \( key) != null) {
@@ -432,7 +428,6 @@ class SKCodeBuilder: NSObject {
432
428
self . handleDicts. setValue ( firstObject, forKey: key)
433
429
self . yymodelPropertyGenericClassDicts. setValue ( modeName, forKey: key)
434
430
hString. append ( " List< \( modeName) > \( key) ; \( singlelineCommentName ( key, " " , false ) ) \n " )
435
-
436
431
let fString =
437
432
"""
438
433
if (json[' \( key) '] != null) {
@@ -853,5 +848,35 @@ extension String {
853
848
}
854
849
return self
855
850
}
851
+
852
+ /// 驼峰转下划线
853
+ var underscore_name : String {
854
+ var name = " "
855
+ if self . isBlank { return " " }
856
+ var upperword = " "
857
+ var _canAdd = false
858
+ self . forEach { ( character) in
859
+ if character. isUppercase { // 大写
860
+ if _canAdd {
861
+ name. append ( " _ \( character. lowercased ( ) ) " )
862
+ } else {
863
+ name. append ( " \( character. lowercased ( ) ) " )
864
+ upperword. append ( character)
865
+ }
866
+ } else { // 小写
867
+ if !name. contains ( " _ " ) {
868
+ if upperword. count > 1 {
869
+ let frontString = ( name as NSString ) . substring ( to: upperword. count- 1 )
870
+ let lastString = ( name as NSString ) . substring ( from: upperword. count- 1 )
871
+ name. removeAll ( )
872
+ name. append ( " \( frontString) _ \( lastString) " )
873
+ }
874
+ }
875
+ name. append ( character)
876
+ _canAdd = true
877
+ }
878
+ }
879
+ return name
880
+ }
856
881
}
857
882
0 commit comments