1+ path = ARGV [ 0 ]
2+ class_name = ARGV [ 1 ]
3+ type = ARGV [ 2 ]
4+
5+ if path . nil?
6+ puts "Please spicify the path"
7+ return
8+ end
9+
10+ if class_name . nil?
11+ puts "Please spicify the class name"
12+ return
13+ end
14+
15+ if type . nil?
16+ puts "Please spicify the type"
17+ return
18+ end
19+
20+ File . open ( "#{ path } /#{ class_name } State.swift" , 'w' ) do |bloc_file |
21+ content = <<~TEXT
22+ import SwiftBloc
23+
24+ class #{ class_name } State {
25+
26+ }
27+
28+ extension #{ class_name } State: Equatable {
29+ static func == (lhs: #{ class_name } State, rhs: #{ class_name } State) -> Bool {
30+ <#code#>
31+ }
32+ }
33+
34+ class #{ class_name } Initial: #{ class_name } State {
35+
36+ }
37+ TEXT
38+
39+ bloc_file . write content
40+ bloc_file . close
41+ puts "Created file: #{ path } /#{ class_name } State.swift"
42+ end
43+ if type == "bloc"
44+ File . open ( "#{ path } /#{ class_name } Event.swift" , 'w' ) do |bloc_file |
45+ content = <<~TEXT
46+ import SwiftBloc
47+
48+ class #{ class_name } Event {
49+
50+ }
51+
52+ extension #{ class_name } Event: Equatable {
53+ static func == (lhs: #{ class_name } Event, rhs: #{ class_name } Event) -> Bool {
54+ <#code#>
55+ }
56+ }
57+ TEXT
58+
59+ bloc_file . write content
60+ bloc_file . close
61+ puts "Created file: #{ path } /#{ class_name } Event.swift"
62+ end
63+ File . open ( "#{ path } /#{ class_name } Bloc.swift" , 'w' ) do |bloc_file |
64+ content = <<~TEXT
65+ import SwiftBloc
66+
67+ class #{ class_name } Bloc: Bloc<#{ class_name } Event, #{ class_name } State> {
68+ init() {
69+ super.init(intialState: #{ class_name } State())
70+ }
71+
72+ override func mapEventToState(event: #{ class_name } Event) -> #{ class_name } State {
73+ <#code#>
74+ }
75+ }
76+ TEXT
77+
78+ bloc_file . write content
79+ bloc_file . close
80+ puts "Created file: #{ path } /#{ class_name } Bloc.swift"
81+ end
82+ elsif type == "cubit"
83+ File . open ( "#{ path } /#{ class_name } Cubit.swift" , 'w' ) do |bloc_file |
84+ content = <<~TEXT
85+ import SwiftBloc
86+
87+ class #{ class_name } Cubit: Cubit<#{ class_name } State> {
88+ init() {
89+ super.init(state: #{ class_name } State())
90+ }
91+ }
92+ TEXT
93+
94+ bloc_file . write content
95+ bloc_file . close
96+ puts "Created file: #{ path } /#{ class_name } Cubit.swift"
97+ end
98+ else
99+ "Invalid type. Must be \" bloc or \" cubit"
100+ end
0 commit comments