lhj-tools 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b925c66eb69cee050fa3aa0eddf47f243046dc5dd0de24bf918f9749bba5d77
4
- data.tar.gz: 4720dad2b619928bfdd34151ec71e86e8f9608c52d21de3faccc793c7bbc620b
3
+ metadata.gz: f2210e536172e4943d1e39f4460cd715ef726e35b0859c348b24963a1f0ff433
4
+ data.tar.gz: c1e81cf0c82016ee20f57168c840780cd7127a28a1c2c92d409785f03a52dbe5
5
5
  SHA512:
6
- metadata.gz: '02549c7763d793f2cb22fbc09e66610aa44669dbbd512860c8eabc237ac7d0d7e4b1a4dd1a44eae0ff9241b971ea727d34cd54382e2f7498fefb972e4a5de9e1'
7
- data.tar.gz: f72743da849d27ae0d1eb0b6ed7e84546264606c518e92ba2d4627389be383fd4aa3a9587ac07e595878be26af870e711175308ae36e524579d8f5e7a7b8b16d
6
+ metadata.gz: 8cd06e57308f22d90b13d330f21a6c198d873a5483ae604c044e3c0fbd76c8083550fb261e30fc40f43b8e1af8f891063b0ba7a7930a258de8cf1f8292855802
7
+ data.tar.gz: 2428331f080d48dac6ae877c179a900ddb2601a32c292062d2edbfa7febb1a202dda40fd7fe21f6d840dffad0335695ad1c306c6ea9903a99bd2895cead8edc4
@@ -0,0 +1,128 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'find'
4
+ require 'fileutils'
5
+
6
+ module Lhj
7
+ class Command
8
+ class Import < Command
9
+ self.summary = '更改头文件引入'
10
+
11
+ def initialize(argv)
12
+ @current_path = argv.shift_argument || Dir.pwd
13
+ @framework = argv.option('framework')
14
+ @header_map = {}
15
+ @header_folder_map = {}
16
+ super
17
+ end
18
+
19
+ def run
20
+ generate_header_map
21
+ # say_header_map
22
+ # find_all_sub_folder
23
+ update_source_header
24
+ end
25
+
26
+ # @return [@header_map]
27
+ def generate_header_map
28
+ framework_headers = {}
29
+ folders = child_dir
30
+ folders.each { |name| framework_headers[name] = all_header_map(name) }
31
+ framework_headers.each do |key, value|
32
+ value.each do |header|
33
+ header_key = "\"#{header}\""
34
+ framework_name = framework_name_map[key.to_sym] || key
35
+ @header_map[header_key.to_sym] = "<#{framework_name}/#{header}>"
36
+ @header_folder_map[header_key.to_sym] = key
37
+ end
38
+ end
39
+ end
40
+
41
+ def framework_name_map
42
+ { 'lottie-ios': 'Lottie', 'UITableView+FDTemplateLayoutCell': 'UITableView_FDTemplateLayoutCell', 'mob_sharesdk': 'ShareSDK' }
43
+ end
44
+
45
+ def framework_black_list
46
+ %w[mob_sharesdk]
47
+ end
48
+
49
+ def say_header_map
50
+ @header_map.each do |key, value|
51
+ puts "#{key}===> #{value}"
52
+ end
53
+ end
54
+
55
+ def pod_folder_name
56
+ File.directory?("#{@current_path}/Pods") ? "#{@current_path}/Pods" : "#{@current_path}/Example/Pods"
57
+ end
58
+
59
+ def child_dir
60
+ dirs = Dir.entries(pod_folder_name)
61
+ dirs.reject! do |d|
62
+ File.directory?(d) || /\./ =~ d || /_Prebuild/ =~ d || /Target/ =~ d || /Headers/ =~ d || /Podspecs/ =~ d || framework_black_list.any? { |f| f == d }
63
+ end
64
+ dirs
65
+ end
66
+
67
+ def all_header_map(folder)
68
+ headers = Dir.glob("#{pod_folder_name}/#{folder}/**/*.h")
69
+ headers.map! { |f| f.split('/').last }
70
+ headers
71
+ end
72
+
73
+ def find_all_sub_folder
74
+ Find.find(@current_path).each do |f|
75
+ handler_file f if f =~ /APPDelegate/
76
+ end
77
+ end
78
+
79
+ def update_source_header
80
+ Dir.glob("#{@current_path}/**/*.{m,h,pch}").each do |f|
81
+ if f =~ /Pods/
82
+ handler_file(f) if f =~ %r{Pods/ML}
83
+ else
84
+ handler_file(f)
85
+ end
86
+ end
87
+ end
88
+
89
+ def handler_file(file)
90
+ File.chmod(0o644, file)
91
+ str = file_string(file)
92
+ File.open(file, 'w+') do |f|
93
+ f.write(str)
94
+ end
95
+ File.chmod(0o444, file) if file =~ /Pods/
96
+ end
97
+
98
+ def file_string(file)
99
+ str = ''
100
+ File.open(file, 'r+') do |f|
101
+ f.each_line do |line|
102
+ str += format_string(f, line)
103
+ end
104
+ end
105
+ str
106
+ end
107
+
108
+ def format_string(file, line)
109
+ result = line
110
+ if line =~ /#import/
111
+ ma = find_head_key(line)
112
+ result = line.gsub(ma[0], @header_map[ma[0].to_sym] || ma[0]) if ma && !exist_in_file(file, ma[0])
113
+ end
114
+ result
115
+ end
116
+
117
+ def exist_in_file(file, header)
118
+ folder_name = @header_folder_map[header.to_sym]
119
+ Regexp.new("/Pods/#{folder_name}") =~ File.path(file) if folder_name
120
+ end
121
+
122
+ def find_head_key(line)
123
+ header_reg = /"\D*.h"/
124
+ line.match(header_reg)
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,27 @@
1
+
2
+ module Lhj
3
+ class Command
4
+ # init tools
5
+ class Init < Command
6
+ self.summary = '初始化控件'
7
+
8
+ def run
9
+ p 'hello world'
10
+ end
11
+
12
+ def down_load_urls
13
+ %w[http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/localizable_config.yml
14
+ http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/oss_config.yml
15
+ http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/yapi.yml
16
+ http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/zh2hant.yml]
17
+ end
18
+
19
+ def down_load_file
20
+ ary = down_load_urls
21
+ ary.each do |key|
22
+ end
23
+ puts "同步完成 \n"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+ require 'csv'
3
+
4
+ module Lhj
5
+ class Command
6
+ class Fetch < Command
7
+ self.summary = '提取源码的中文字符串,并生成中英文对照csv文件'
8
+
9
+ def self.options
10
+ [
11
+ %w[--file-type 从文件扩展名中查找中文字符串,默认为m,h],
12
+ %w[--file-name 生成csv文件名,默认为gen_cn_key.csv]
13
+ ]
14
+ end
15
+
16
+ def initialize(argv)
17
+ @current_path = argv.shift_argument || Dir.pwd
18
+ @file_type = argv.option('file-type', 'm,h')
19
+ @file_name = argv.option('file-name', 'gen_cn_key.csv')
20
+ @cn_keys = []
21
+ @key_map = {}
22
+ super
23
+ end
24
+
25
+ def run
26
+ handle_files
27
+ gen_csv
28
+ # update_source_header
29
+ end
30
+
31
+ def csv_file_name
32
+ file_name = @file_name
33
+ file_name = "#{@file_name}.csv" unless /.csv$/ =~ @file_name
34
+ file_name
35
+ end
36
+
37
+ def gen_csv
38
+ file = File.join(@current_path, csv_file_name)
39
+ FileUtils.rm_rf(file) if File.exist?(file)
40
+ CSV.open(file, 'wb:utf-8') do |csv|
41
+ csv << %w[国际化key 中文 英文 所在文件 文件路径]
42
+ @cn_keys.each do |k|
43
+ csv << [k[:key], k[:cn], k[:en], k[:fname], k[:dirname]]
44
+ end
45
+ end
46
+ puts "生成csv文件完成.\n文件路径:#{File.absolute_path(file)}"
47
+ end
48
+
49
+ def handle_files
50
+ Dir.glob("#{@current_path}/**/*.{#{@file_type}}").each do |f|
51
+ dir_name = File.dirname(f)
52
+ if /Pods/ =~ f
53
+ mod_name = framework_name(dir_name)
54
+ handle_file f if /^ML/ =~ mod_name
55
+ else
56
+ handle_file f
57
+ end
58
+ end
59
+ end
60
+
61
+ def zh_ch_reg
62
+ /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
63
+ end
64
+
65
+ def handle_file(file)
66
+ File.open(file, 'r') do |f|
67
+ f.each_line do |line|
68
+ handle_line(file, line) if zh_ch_reg =~ line && !((/DDLog/ =~ line) || (/NSLog/ =~ line))
69
+ end
70
+ end
71
+ end
72
+
73
+ def handle_line(file, line)
74
+ line.scan(zh_ch_reg) do |str|
75
+ fname = File.basename(file)
76
+ dir_name = File.dirname(file)
77
+ mod_name = framework_name(dir_name)
78
+ # ('a'..'z').to_a.shuffle[0..12].join
79
+ key = "#{mod_name}.#{File.basename(file, '.*')}.#{rand(36 ** 8).to_s(36)}"
80
+ cn_str = str[2, str.length - 3]
81
+ en_str = cn_str.gsub(/[\u4e00-\u9fa5]/, 'x')
82
+ @cn_keys << { key: key, cn: cn_str, en: en_str, fname: fname, dirname: dir_name }
83
+ end
84
+ end
85
+
86
+ def framework_name(path)
87
+ mod_name = 'Main'
88
+ if /pods/i =~ path
89
+ ary = path.split('/')
90
+ index = ary.find_index { |p| p.eql?('Pods') }
91
+ if index
92
+ i = index + 1
93
+ mod_name = ary[i]
94
+ end
95
+ end
96
+ mod_name
97
+ end
98
+
99
+ def handle_static_line(file, line)
100
+ line.scan(zh_ch_reg) do |str|
101
+ ma = line.match(/\*.*=/)
102
+ key = ma[0][1, ma[0].length - 2].strip
103
+ @key_map[key.to_sym] = str
104
+ end
105
+ end
106
+
107
+ def update_source_header
108
+ Dir.glob("#{@current_path}/**/*.{m,h}").each do |f|
109
+ if f =~ /Pods/
110
+ dir_name = File.dirname(f)
111
+ mod_name = framework_name(dir_name)
112
+ handle_file f if /^ML/ =~ mod_name
113
+ else
114
+ handler_file f
115
+ end
116
+ end
117
+ end
118
+
119
+ def handler_file(file)
120
+ puts "#{File.absolute_path(file)} \n"
121
+ File.chmod(0o644, file)
122
+ str = file_string(file)
123
+ File.open(file, 'w+') do |f|
124
+ f.write(str)
125
+ end
126
+ File.chmod(0o444, file) if file =~ /Pods/
127
+ end
128
+
129
+ def file_string(file)
130
+ str = ''
131
+ File.open(file, 'r+') do |f|
132
+ f.each_line do |line|
133
+ str += format_string(f, line)
134
+ end
135
+ end
136
+ str
137
+ end
138
+
139
+ def format_string(file, line)
140
+ result = line
141
+ unless /static/ =~ line
142
+ @key_map.each_key do |key|
143
+ n_key = /#{key.to_s}\s/
144
+ n_val = "#{@key_map[key]}\s"
145
+ result = result.gsub(n_key, n_val)
146
+ end
147
+ end
148
+ result
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+ require 'csv'
3
+
4
+ module Lhj
5
+ class Command
6
+ class Filter < Command
7
+ self.summary = '过滤重复对象'
8
+
9
+ def initialize(argv)
10
+ @current_path = argv.shift_argument || Dir.pwd
11
+ @file_type = argv.option('file-type', 'm,h')
12
+ @file_name = argv.option('file-name', 'MaucaoLife_zh_en.csv')
13
+ @cn_keys = []
14
+ @key_map = {}
15
+ @used_keys = []
16
+ super
17
+ end
18
+
19
+ def run
20
+ fetch_keys
21
+ read_csv
22
+ gen_csv
23
+ end
24
+
25
+ def csv_file_name
26
+ file_name = @file_name
27
+ file_name = "#{@file_name}.csv" unless /.csv$/ =~ @file_name
28
+ file_name
29
+ end
30
+
31
+ def read_csv
32
+ path = File.join(@current_path, csv_file_name)
33
+ Dir.glob(path).each do |p|
34
+ CSV.foreach(p) do |row|
35
+ key = row[0]
36
+ if @used_keys.any? { |k| k.eql?(key) }
37
+ @cn_keys << { key: key, cn: row[1], en: row[2], fname: row[3], dirname: row[4] }
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ def gen_csv
44
+ file = File.join(@current_path, csv_file_name)
45
+ FileUtils.rm_rf(file) if File.exist?(file)
46
+ CSV.open(file, 'wb:utf-8') do |csv|
47
+ csv << %w[国际化key 中文 英文 所在文件 文件路径]
48
+ @cn_keys.each do |k|
49
+ csv << [k[:key], k[:cn], k[:en], k[:fname], k[:dirname]]
50
+ end
51
+ end
52
+ puts "生成csv文件完成.\n文件路径:#{File.absolute_path(file)}"
53
+ end
54
+
55
+ def fetch_keys
56
+ Dir.glob("#{@current_path}/**/*.{#{@file_type}}").each do |f|
57
+ handle_file f
58
+ end
59
+ end
60
+
61
+ def zh_ch_reg
62
+ /MLLocalizedString\([^)]+\)/
63
+ end
64
+
65
+ def handle_file(file)
66
+ File.open(file, 'r') do |f|
67
+ f.each_line do |line|
68
+ handle_line(file, line) if zh_ch_reg =~ line
69
+ end
70
+ end
71
+ end
72
+
73
+ def handle_line(file, line)
74
+ line.scan(zh_ch_reg) do |str|
75
+ str[20, str.length - 22]
76
+ @used_keys << str[20, str.length - 22]
77
+ end
78
+ end
79
+
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,264 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'csv'
4
+ require 'lhj/helper/trans_helper'
5
+ require 'lhj/helper/oss_helper'
6
+ require 'lhj/helper/local_config'
7
+
8
+ module Lhj
9
+ class Command
10
+ class Local < Command
11
+ self.summary = '根据中英文对照csv文件,生成国际化配置, 及批量更新源码(使用国际化写法)'
12
+
13
+ def self.options
14
+ [
15
+ %w[--key-col 国际化key在csv中第几列,默认为0],
16
+ %w[--cn-col 中文在csv中第几列,默认为1],
17
+ %w[--en-col 英文在csv中第几列,默认为2],
18
+ %w[--download-csv 云端下载cvs的文件名],
19
+ %w[--read-csv-file 读取csv的文件名,默认为当前目录下所有csv文件],
20
+ %w[--gen-file 生成配置文件名,默认名为:Localizable.strings],
21
+ %w[--modify-source 修改源码,使用国际化key代替中文字符串],
22
+ %w[--modify-file-type 需要修改源码的文件类型,默认为m,h],
23
+ %w[--modify-format-string 修改为国际化后的字符格式,默认为NSLocalizedString(%s,@"")]
24
+ ]
25
+ end
26
+
27
+ def initialize(argv)
28
+ @current_path = argv.shift_argument || Dir.pwd
29
+ @key_col = argv.option('key-col', Lhj::LocalConfig.instance.config['csv_key_col']).to_i
30
+ @cn_col = argv.option('cn-col', Lhj::LocalConfig.instance.config['csv_cn_col']).to_i
31
+ @en_col = argv.option('en-col', Lhj::LocalConfig.instance.config['csv_en_col']).to_i
32
+ @download_csv_files = argv.option('download-csv')
33
+ @read_csv_file = argv.option('read-csv-file', Lhj::LocalConfig.instance.config['read_csv_file'])
34
+ @gen_file_name = argv.option('gen-file', Lhj::LocalConfig.instance.config['gen_file_name'])
35
+ @modify_source_flag = argv.flag?('modify-source', false)
36
+ @modify_file_type = argv.option('modify-file-type', 'm,h')
37
+ @modify_format_string = argv.option('modify-format-string', Lhj::LocalConfig.instance.config['source_format_string'])
38
+ @key_map = {}
39
+ super
40
+ end
41
+
42
+ def run
43
+ down_load_csv_file if need_download
44
+ read_csv
45
+ if @key_map.keys.length.positive?
46
+ write_en_strings
47
+ write_zh_hk_strings
48
+ write_zh_cn_strings
49
+ handle_modify_source if @modify_source_flag
50
+ else
51
+ puts "获取中英文映射文件失败, 检查参数--read-csv-file=xx是否正常\n"
52
+ end
53
+ end
54
+
55
+ def en_dir_name
56
+ Lhj::LocalConfig.instance.config['gen_en_dir']
57
+ end
58
+
59
+ def zh_hk_dir_name
60
+ Lhj::LocalConfig.instance.config['gen_zh_hk_dir']
61
+ end
62
+
63
+ def zh_cn_dir_name
64
+ Lhj::LocalConfig.instance.config['gen_zh_cn_dir']
65
+ end
66
+
67
+ def generate_file_name
68
+ @gen_file_name
69
+ end
70
+
71
+ def need_download
72
+ @download_csv_files || Lhj::LocalConfig.instance.config['download']
73
+ end
74
+
75
+ def download_cvs_str
76
+ @download_csv_files || Lhj::LocalConfig.instance.config['download_csv']
77
+ end
78
+
79
+ def read_csv_file_name
80
+ file_name = @read_csv_file
81
+ file_name = "#{@read_csv_file}.csv" unless /.csv$/ =~ @read_csv_file
82
+ file_name
83
+ end
84
+
85
+ def down_load_csv_file
86
+ ary = get_download_keys
87
+ ary.each do |key|
88
+ file_name = File.basename(key)
89
+ file = File.join(@current_path, file_name)
90
+ backup_csv_file file if File.exist?(file)
91
+ puts "下载csv文件:#{Lhj::OSS::Helper.instance.object_url(key)} 到目录#{file}\n"
92
+ Lhj::OSS::Helper.instance.down_load(key, file)
93
+ end
94
+ UI.puts "下载云端csv文件完成 \n".green
95
+ end
96
+
97
+ def backup_csv_file(file)
98
+ dest_file = bak_file(file)
99
+ FileUtils.mkdir_p(File.dirname(dest_file)) unless File.exist?(File.dirname(dest_file))
100
+ UI.puts "备份csv文件:#{file} 到目录#{dest_file}".green
101
+ FileUtils.cp file, dest_file
102
+ FileUtils.rm_rf file
103
+ end
104
+
105
+ def bak_file(file)
106
+ dest_file = File.join(File.dirname(file), 'csv_bak', File.basename(file))
107
+ File.exist?(dest_file) ? bak_file(dest_file) : dest_file
108
+ end
109
+
110
+ def get_download_keys
111
+ download_keys = []
112
+ csv_files = download_cvs_str.split(/,/).map(&:strip)
113
+ all_keys = Lhj::OSS::Helper.instance.list.map(&:key)
114
+ csv_files.each do |f|
115
+ arr = all_keys.select { |k| %r{^csv/} =~ k && /#{f}/ =~ k }
116
+ if arr.count.positive?
117
+ arr.sort! { |a, b| b.split(%r{/})[1].to_i <=> a.split(%r{/})[1].to_i }
118
+ download_keys << arr[0]
119
+ end
120
+ end
121
+ download_keys
122
+ end
123
+
124
+ def read_csv
125
+ path = File.join(@current_path, read_csv_file_name)
126
+ Dir.glob(path).each do |f|
127
+ read_csv_file f
128
+ end
129
+ end
130
+
131
+ def read_csv_file(file)
132
+ key_c = Lhj::LocalConfig.instance.get_col_by_name(file, 'csv_key_col')
133
+ cn_c = Lhj::LocalConfig.instance.get_col_by_name(file, 'csv_cn_col')
134
+ en_c = Lhj::LocalConfig.instance.get_col_by_name(file, 'csv_en_col')
135
+ trans_hk = Lhj::LocalConfig.instance.get_col_by_name(file, 'trans_zh_hk')
136
+ trans_cn = Lhj::LocalConfig.instance.get_col_by_name(file, 'trans_zh_cn')
137
+ CSV.foreach(file) do |row|
138
+ if row.length > 2
139
+ key = row[key_c]
140
+ cn_str = row[cn_c]
141
+ hk_str = row[cn_c]
142
+ cn_str = Lhj::Trans::Helper.instance.trans_zh_cn_str(cn_str) if trans_cn
143
+ hk_str = Lhj::Trans::Helper.instance.trans_zh_hk_str(hk_str) if trans_hk
144
+ @key_map[key] = { key: key, cn: cn_str, hk: hk_str, en: row[en_c] } unless key =~ /[\u4e00-\u9fa5]/
145
+ end
146
+ end
147
+ end
148
+
149
+ def handle_modify_source
150
+ puts '修改源码开始'
151
+ Dir.glob("#{@current_path}/**/*.{#{@modify_file_type}}").each do |f|
152
+ # handle_modify_file f if File.stat(f).writable?
153
+ if f =~ /Pods/
154
+ handle_modify_file(f) if f =~ %r{Pods/ML}
155
+ else
156
+ handle_modify_file(f)
157
+ end
158
+ end
159
+ puts '修改源码结束'
160
+ end
161
+
162
+ def handle_modify_file(file)
163
+ File.chmod(0o644, file)
164
+ str = modify_file_string(file)
165
+ File.open(file, 'w+') do |f|
166
+ f.write(str)
167
+ end
168
+ File.chmod(0o444, file) if file =~ /Pods/
169
+ end
170
+
171
+ def modify_file_string(file)
172
+ str = ''
173
+ File.open(file, 'r') do |f|
174
+ f.each_line do |line|
175
+ str += modify_format_string(f, line)
176
+ end
177
+ end
178
+ str
179
+ end
180
+
181
+ def zh_ch_reg
182
+ /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
183
+ end
184
+
185
+ def modify_format_string(file, line)
186
+ result = line
187
+ result = handle_modify_line(file, line) if zh_ch_reg =~ line && !((/DDLog/ =~ line) || (/NSLog/ =~ line))
188
+ result
189
+ end
190
+
191
+ def handle_modify_line(file, line)
192
+ result = line
193
+ line.scan(zh_ch_reg) do |m|
194
+ key = find_key_by_cn_val(file, m)
195
+ if key
196
+ val = format(@modify_format_string, "@\"#{key}\"")
197
+ result = result.gsub(m, val)
198
+ end
199
+ end
200
+ result
201
+ end
202
+
203
+ def find_key_by_cn_val(file, val)
204
+ file_name = File.basename(file, '.*')
205
+ cn_key = val[2, val.length - 3]
206
+ index = @key_map.values.find_index { |obj| cn_key.eql?(obj[:zh]) && /#{file_name}/ =~ obj[:key] }
207
+ index ||= @key_map.values.find_index { |obj| cn_key.eql?(obj[:zh]) }
208
+ @key_map.values[index][:key] if index
209
+ end
210
+
211
+ def format_str(type)
212
+ str = ''
213
+ @key_map.each do |k, v|
214
+ str += "\"#{k}\" = \"#{v[type]}\";\n"
215
+ end
216
+ str
217
+ end
218
+
219
+ def write_to_file(file, contents)
220
+ FileUtils.rm_rf(file) if File.exist?(file)
221
+ FileUtils.mkdir_p(File.dirname(file)) unless File.exist?(File.dirname(file))
222
+ File.open(file, 'w+') do |f|
223
+ f.write(contents)
224
+ end
225
+ end
226
+
227
+ def generate_file(file, type)
228
+ content = format_str(type)
229
+ write_to_file(file, content)
230
+ end
231
+
232
+ def write_en_strings
233
+ file = File.join(@current_path, en_dir_name, generate_file_name)
234
+ generate_file(file, :en)
235
+ puts "生成英文配置完成.文件路径:#{File.absolute_path(file)}\n"
236
+ end
237
+
238
+ def write_zh_cn_strings
239
+ gen_zh_cn_strings_file
240
+ end
241
+
242
+ def gen_zh_cn_strings_file
243
+ file = File.join(@current_path, zh_cn_dir_name, generate_file_name)
244
+ content = format_str(:cn)
245
+ write_to_file(file, content)
246
+ puts "生成简体中文配置完成.文件路径:#{File.absolute_path(file)}\n"
247
+ end
248
+
249
+ def copy_hk_to_cn_file
250
+ source_file = File.join(@current_path, zh_hk_dir_name, generate_file_name)
251
+ dest_file = File.join(@current_path, zh_cn_dir_name, generate_file_name)
252
+ FileUtils.cp source_file, dest_file
253
+ puts "繁体中文配置覆盖简体中文配置\n"
254
+ end
255
+
256
+ def write_zh_hk_strings
257
+ file = File.join(@current_path, zh_hk_dir_name, generate_file_name)
258
+ content = format_str(:hk)
259
+ write_to_file(file, content)
260
+ puts "生成繁体中文配置完成.文件路径:#{File.absolute_path(file)}\n"
261
+ end
262
+ end
263
+ end
264
+ end