Skip to content

Commit 2ea23ec

Browse files
committed
Merge branch 'release/1.0' into main
2 parents 62a00cd + b01a2c2 commit 2ea23ec

File tree

60 files changed

+1875
-144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1875
-144
lines changed

ThenGenerator/Sources/Core/UIComponents.swift

Lines changed: 136 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
// Created by Kanz on 2021/01/01.
66
//
77

8+
import SwiftUI
9+
810
public enum UIComponents: String, CaseIterable {
911

1012
case label
@@ -37,21 +39,17 @@ public enum UIComponents: String, CaseIterable {
3739
case navigationBar
3840
case tabBar
3941

40-
case none = "_VariableName_"
41-
4242
init(variableName: String) {
4343
let lowerCasedVariableName = variableName.lowercased()
4444
let target = UIComponents.allCases
4545
.filter { lowerCasedVariableName.hasSuffix($0.rawValue.lowercased()) }
4646
.first
4747

48-
self = target ?? .none
48+
self = target ?? .view
4949
}
5050

51-
var fullName: String {
51+
var viewInitName: String {
5252
switch self {
53-
case .none:
54-
return self.rawValue
5553
case .collectionView:
5654
return "UICollectionView(frame: .zero, collectionViewLayout: <#UICollectionViewLayout#>)"
5755
case .visualEffectView:
@@ -84,8 +82,7 @@ public enum UIComponents: String, CaseIterable {
8482
}
8583
}
8684

87-
88-
func getThenDataModel() -> ThenModelProtocol? {
85+
public func getThenDataModel() -> ThenModelProtocol? {
8986
switch self {
9087
case .label:
9188
return UILabelModel()
@@ -137,8 +134,137 @@ public enum UIComponents: String, CaseIterable {
137134
return UITabBarModel()
138135
case .segmentedControl:
139136
return UISegmentedControlModel()
140-
case .none:
141-
return NoneModel()
142137
}
143138
}
139+
140+
// MARK: - For View
141+
var fullName: String? {
142+
return "UI" + rawValue.prefix(1).uppercased() + rawValue.dropFirst()
143+
}
144+
145+
var category: ModelCategory {
146+
switch self {
147+
case .label,
148+
.textField,
149+
.textView,
150+
.searchBar:
151+
return .text
152+
case .scrollView,
153+
.tableView,
154+
.collectionView:
155+
return .scroll
156+
case .button,
157+
.pageControl,
158+
.`switch`,
159+
.slider,
160+
.stepper,
161+
.segmentedControl:
162+
return .control
163+
case .activityIndicatorView,
164+
.refreshControl,
165+
.progressView:
166+
return .loading
167+
case .pickerView,
168+
.datePicker:
169+
return .picker
170+
case .view,
171+
.imageView,
172+
.stackView,
173+
.visualEffectView,
174+
.navigationBar,
175+
.tabBar,
176+
.toolBar:
177+
return .view
178+
}
179+
}
180+
181+
@ViewBuilder
182+
func makeView() -> some View {
183+
switch self {
184+
case .label:
185+
UILabelComponent()
186+
case .textField:
187+
UITextFieldComponent()
188+
case .textView:
189+
UITextViewComponent()
190+
case .searchBar:
191+
UISearchBarComponent()
192+
case .tableView:
193+
UITableViewComponent()
194+
case .collectionView:
195+
UICollectionViewComponent()
196+
case .scrollView:
197+
UIScrollViewComponent()
198+
case .button:
199+
UIButtonComponent()
200+
case .segmentedControl:
201+
UISegmentedControlComponent()
202+
case .slider:
203+
UISliderComponent()
204+
case .switch:
205+
UISwitchComponent()
206+
case .stepper:
207+
UIStepperComponent()
208+
case .pageControl:
209+
UIPageControlComponent()
210+
case .activityIndicatorView:
211+
UIActivityIndicatorViewComponent()
212+
case .progressView:
213+
UIProgressViewComponent()
214+
case .refreshControl:
215+
UIRefreshControlComponent()
216+
case .datePicker:
217+
UIDatePickerComponent()
218+
case .pickerView:
219+
UIPickerViewComponent()
220+
case .stackView:
221+
UIStackViewComponent()
222+
case .imageView:
223+
UIImageViewComponent()
224+
case .visualEffectView:
225+
UIVisualEffectViewComponent()
226+
case .view:
227+
UIViewComponent()
228+
case .toolBar:
229+
UIToolBarComponent()
230+
case .navigationBar:
231+
UINavigationBarComponent()
232+
case .tabBar:
233+
UITabBarComponent()
234+
}
235+
}
236+
}
237+
238+
// MARK: - Component Category
239+
public enum ModelCategory: String, CaseIterable {
240+
case text
241+
case scroll
242+
case control
243+
case loading
244+
case picker
245+
case view
246+
case common
247+
248+
var iconName: String {
249+
switch self {
250+
case .text:
251+
return "textformat"
252+
case .scroll:
253+
return "arrow.up.and.down.square"
254+
case .control:
255+
return "gamecontroller"
256+
case .loading:
257+
return "rays"
258+
case .picker:
259+
return "eyedropper.halffull"
260+
case .view:
261+
return "eyeglasses"
262+
case .common:
263+
return "gearshape"
264+
}
265+
}
266+
267+
var title: String {
268+
return rawValue.prefix(1).uppercased() + rawValue.dropFirst()
269+
}
144270
}

ThenGenerator/Sources/Core/ViewInitGenerator.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class ViewInitGenerator {
1212
public static let shared = ViewInitGenerator()
1313

1414
init() {
15-
//CoreDataManager.shared
15+
1616
}
1717

1818
// MARK: - Generate then Strings
@@ -48,7 +48,6 @@ extension ViewInitGenerator {
4848

4949
func generate(startPosition: Int, variableName: String) -> String {
5050
let components = UIComponents(variableName: variableName)
51-
let space = String(repeating: " ", count: startPosition)
5251

5352
let commonModel = CommonModel()
5453
let accessModifier = commonModel.accessModifier
@@ -66,18 +65,19 @@ extension ViewInitGenerator {
6665
}
6766
*/
6867
var initClosureTextArray = [
69-
"\(accessModifier.beginningOfVariable)let \(variableName) = \(components.fullName).then {",
68+
"\(accessModifier.beginningOfVariable)let \(variableName) = \(components.viewInitName).then {",
7069
// insert initArray position
7170
"\(indentString)$0.translatesAutoresizingMaskIntoConstraints = \(translatesAutoresizingMaskIntoConstraints.toString())",
7271
"}\n"
7372
]
74-
75-
textArray.forEach { initClosureTextArray.insert($0, at: 2) }
73+
74+
initClosureTextArray.insert(contentsOf: textArray, at: 2)
7675

7776
// add space and new line
7877
let initClosureText = initClosureTextArray
79-
.map { "\(space)\($0)\n" }
78+
.map { "\(indentString)\($0)\n" }
8079
.joined()
80+
8181
return initClosureText
8282
}
8383
}

ThenGenerator/Supporting Files/Info.plist

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
<key>CFBundleShortVersionString</key>
2020
<string>1.0</string>
2121
<key>CFBundleVersion</key>
22-
<string>1</string>
22+
<string>$(CURRENT_PROJECT_VERSION)</string>
23+
<key>ITSAppUsesNonExemptEncryption</key>
24+
<false/>
2325
<key>LSMinimumSystemVersion</key>
2426
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
2527
<key>NSExtension</key>
@@ -34,7 +36,7 @@
3436
<key>XCSourceEditorCommandIdentifier</key>
3537
<string>$(PRODUCT_BUNDLE_IDENTIFIER).SourceEditorCommand</string>
3638
<key>XCSourceEditorCommandName</key>
37-
<string>Source Editor Command</string>
39+
<string>Generate Then Code</string>
3840
</dict>
3941
</array>
4042
<key>XCSourceEditorExtensionPrincipalClass</key>

ThenGenerator/Supporting Files/ThenGenerator.entitlements

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
<key>com.apple.security.application-groups</key>
88
<array>
99
<string>group.R46Q3HW9V3.dev.kanz.ThenGenerator</string>
10-
<string>$(TeamIdentifierPrefix)</string>
1110
</array>
1211
</dict>
1312
</plist>
Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,68 @@
11
{
22
"images" : [
33
{
4+
"size" : "16x16",
5+
"filename" : "icon_16x16.png",
46
"idiom" : "mac",
5-
"scale" : "1x",
6-
"size" : "16x16"
7+
"scale" : "1x"
78
},
89
{
10+
"filename" : "icon_16x16@2x.png",
911
"idiom" : "mac",
10-
"scale" : "2x",
11-
"size" : "16x16"
12+
"size" : "16x16",
13+
"scale" : "2x"
1214
},
1315
{
1416
"idiom" : "mac",
1517
"scale" : "1x",
16-
"size" : "32x32"
18+
"size" : "32x32",
19+
"filename" : "icon_32x32.png"
1720
},
1821
{
19-
"idiom" : "mac",
2022
"scale" : "2x",
21-
"size" : "32x32"
23+
"size" : "32x32",
24+
"idiom" : "mac",
25+
"filename" : "icon_32x32@2x.png"
2226
},
2327
{
24-
"idiom" : "mac",
2528
"scale" : "1x",
26-
"size" : "128x128"
29+
"size" : "128x128",
30+
"filename" : "icon_128x128.png",
31+
"idiom" : "mac"
2732
},
2833
{
34+
"size" : "128x128",
2935
"idiom" : "mac",
30-
"scale" : "2x",
31-
"size" : "128x128"
36+
"filename" : "icon_128x128@2x.png",
37+
"scale" : "2x"
3238
},
3339
{
40+
"filename" : "icon_256x256.png",
3441
"idiom" : "mac",
35-
"scale" : "1x",
36-
"size" : "256x256"
42+
"size" : "256x256",
43+
"scale" : "1x"
3744
},
3845
{
39-
"idiom" : "mac",
46+
"filename" : "icon_256x256@2x.png",
4047
"scale" : "2x",
48+
"idiom" : "mac",
4149
"size" : "256x256"
4250
},
4351
{
44-
"idiom" : "mac",
4552
"scale" : "1x",
53+
"idiom" : "mac",
54+
"filename" : "icon_512x512.png",
4655
"size" : "512x512"
4756
},
4857
{
58+
"filename" : "icon_512x512@2x.png",
4959
"idiom" : "mac",
50-
"scale" : "2x",
51-
"size" : "512x512"
60+
"size" : "512x512",
61+
"scale" : "2x"
5262
}
5363
],
5464
"info" : {
55-
"author" : "xcode",
56-
"version" : 1
65+
"version" : 1,
66+
"author" : "xcode"
5767
}
58-
}
68+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"info" : {
3-
"author" : "xcode",
4-
"version" : 1
3+
"version" : 1,
4+
"author" : "xcode"
55
}
6-
}
6+
}

ThenGeneratorApp/Sources/Models/CommonModel.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,9 @@ public struct CommonModel {
2121
@UserDefaultsWrapper(UserDefaultsKeys.CommonKeys.indent.rawValue, defaultValue: 4)
2222
var indent: Int
2323
}
24+
25+
extension CommonModel: ThenModelProtocol {
26+
public func thenStringArray(indent: Int) -> [String] {
27+
return []
28+
}
29+
}

ThenGeneratorApp/Sources/Models/NoneModel.swift

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy