cocoapods-aomi-bin 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b467865e7e3f17d4ed5d5a010485ef7f5ee5de921452693ec070af5f764e6960
4
- data.tar.gz: 33dd81455396d007e94d74485d99e956e5979f1c3209a83c42d00cede39f9677
3
+ metadata.gz: 80ad9f8265fd7c660cccdd2d4d5c92d760c0ac57938b7aad1cf69f85b4fd811d
4
+ data.tar.gz: 846fe0ee62ef9c677dacb88e88092e6bea318f4a88c842c9ddc6c9391039a9c8
5
5
  SHA512:
6
- metadata.gz: '0485ed252dd0e8aab564fe7a497018003eb8aa820f6617380c31e08f85044ec113a0da70ae7081d9ee32e7103ab407e987ff1d37e672531ae128d261ea087fcf'
7
- data.tar.gz: 64a0c0d933c4ff8bd203ebdf6286248cbae083ae5f1ee289570e61ba8882f62e914254b1f099eb7dc2e8a6eda11b4c96738b886cc4823acf3598feebea25f7cb
6
+ metadata.gz: 33f28153039cd4e1119eff8527b649eca2bbd6392cf7e2faee22ed922173b79f8a1c2679f875e18901274f2dc0d8797a5e41461ea07275cec59b035aeefb4195
7
+ data.tar.gz: f19c525b22b4cd6eed429d5f8b48c56b886d0a0dd08b32ee0cfee850b59752fa2216277847466c6aef797314ee4066a4f6d11b0f3ea8ce6eb151cd9ee46911b7
@@ -7,6 +7,8 @@ require 'cocoapods-lhj-bin/command/bin/update'
7
7
  require 'cocoapods-lhj-bin/command/bin/install'
8
8
  require 'cocoapods-lhj-bin/command/bin/import'
9
9
  require 'cocoapods-lhj-bin/command/bin/local'
10
+ require 'cocoapods-lhj-bin/command/bin/trans'
11
+ require 'cocoapods-lhj-bin/command/bin/fetch'
10
12
  require 'cocoapods-lhj-bin/command/bin/lhj'
11
13
  require 'cocoapods-lhj-bin/command/bin/config/push'
12
14
  require 'cocoapods-lhj-bin/command/bin/oss/list'
@@ -17,6 +17,11 @@ module Pod
17
17
  push
18
18
  end
19
19
 
20
+ def push_cn_hk
21
+ file = File.expand_path("#{Pod::Config.instance.home_dir}/zh2hant.yml")
22
+ CBin::OSS::Helper.instance.upload('zh2hant.yml', file)
23
+ end
24
+
20
25
  def push
21
26
  file = File.expand_path("#{Pod::Config.instance.home_dir}/bin_dev.yml")
22
27
  CBin::OSS::Helper.instance.upload('bin_dev.yml', file)
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'csv'
4
+
5
+ module Pod
6
+ class Command
7
+ class Bin < Command
8
+ class Fetch < Bin
9
+ self.summary = '提取源码的中文字符串,并生成中英文对照csv文件'
10
+
11
+ def self.options
12
+ [
13
+ %w[--file-type 从文件扩展名中查找中文字符串,默认为m,h],
14
+ %w[--file-name 生成csv文件名,默认为gen_cn_key.csv]
15
+ ]
16
+ end
17
+
18
+ def initialize(argv)
19
+ @current_path = argv.shift_argument || Dir.pwd
20
+ @file_type = argv.option('file-type', 'm,h')
21
+ @file_name = argv.option('file-name', 'gen_cn_key.csv')
22
+ @cn_keys = []
23
+ super
24
+ end
25
+
26
+ def run
27
+ handle_files
28
+ gen_csv
29
+ end
30
+
31
+ def gen_csv
32
+ file = File.join(@current_path, @file_name)
33
+ FileUtils.rm_rf(file) if File.exist?(file)
34
+ CSV.open(file, 'wb:utf-8') do |csv|
35
+ csv << %w[国际化key 中文 英文 原字符 所在文件 文件路径]
36
+ @cn_keys.each do |k|
37
+ csv << [k[:key], k[:cn], k[:en], k[:str], k[:fname], k[:dirname]]
38
+ end
39
+ end
40
+ UI.puts "生成csv文件完成.\n文件路径:#{File.absolute_path(file)}".green
41
+ end
42
+
43
+ def handle_files
44
+ Dir.glob("#{@current_path}/**/*.{#{@file_type}}").each do |f|
45
+ handle_file f
46
+ end
47
+ end
48
+
49
+ def handle_file(file)
50
+ File.open(file, 'r') do |f|
51
+ f.each_line do |line|
52
+ handle_line(file, line) if line =~ /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
53
+ end
54
+ end
55
+ end
56
+
57
+ def handle_line(file, line)
58
+ reg = /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
59
+ ma = reg.match(line)
60
+ str = ma[0]
61
+ key = "#{File.basename(file, '.*')}.#{rand(36**8).to_s(36)}"
62
+ @cn_keys << { key: key, cn: str[2, str.length - 3], en: '', str: str, dirname: File.dirname(file),
63
+ fname: File.basename(file) }
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,38 +1,52 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'csv'
4
+ require 'cocoapods-lhj-bin/helpers/trans_helper'
4
5
 
5
6
  module Pod
6
7
  class Command
7
8
  class Bin < Command
8
9
  class Local < Bin
9
- self.summary = '生成国际化文件'
10
+ self.summary = '根据中英文对照csv文件,生成国际化配置, 及批量更新源码(使用国际化写法)'
10
11
 
11
12
  def self.options
12
13
  [
13
- %w[--key Key在csv中第几列,默认为0],
14
- %w[--cn 中文在csv中第几列,默认为1],
15
- %w[--en 英文文在csv中第几列,默认为2]
14
+ %w[--key-col 国际化key在csv中第几列,默认为0],
15
+ %w[--cn-col 中文在csv中第几列,默认为1],
16
+ %w[--en-col 英文在csv中第几列,默认为2],
17
+ %w[--csv-file csv文件名,默认为当前目录下所有csv文件],
18
+ %w[--gen-file 生成配置文件名,默认名为: Localizable.strings],
19
+ %w[--modify-source 修改源码,使用国际化key代替中文字符串],
20
+ %w[--modify-file-type 需要修改源码的文件类型,默认为m,h],
21
+ %w[--modify-format-string 修改为国际化后的字符格式,默认为NSLocalizedString(%s, @"")]
16
22
  ]
17
23
  end
18
24
 
19
25
  def initialize(argv)
20
26
  @current_path = argv.shift_argument || Dir.pwd
21
- @key_col = argv.option('key').to_i || 0
22
- @cn_col = argv.option('cn', 1).to_i || 1
23
- @en_col = argv.option('en', 2).to_i || 2
27
+ @key_col = argv.option('key-col', 0).to_i
28
+ @cn_col = argv.option('cn-col', 1).to_i
29
+ @en_col = argv.option('en-col', 2).to_i
30
+ @csv_file = argv.option('csv-file', '*')
31
+ @gen_file_name = argv.option('gen-file', 'Localizable.strings')
32
+ @modify_source_flag = argv.flag?('modify-source', false)
33
+ @modify_file_type = argv.option('modify-file-type', 'm,h')
34
+ @modify_format_string = argv.option('modify-format-string', 'NSLocalizedString(%s, @"")')
24
35
  @key_map = {}
25
- @trans_map = {}
26
- @trans_map_invert = {}
36
+ @cn_key_map = {}
27
37
  super
28
38
  end
29
39
 
30
40
  def run
31
- load_trans_map
32
41
  read_csv_file
33
- write_en_strings
34
- write_zh_cn_strings
35
- write_zh_hk_strings
42
+ if @key_map.keys.length.positive?
43
+ write_en_strings
44
+ write_zh_cn_strings
45
+ write_zh_hk_strings
46
+ handle_modify_source if @modify_source_flag
47
+ else
48
+ UI.puts "获取中英文映射文件失败, 检查参数--csv-file=xx是否正常\n".red
49
+ end
36
50
  end
37
51
 
38
52
  def en_dir_name
@@ -48,34 +62,67 @@ module Pod
48
62
  end
49
63
 
50
64
  def generate_file_name
51
- 'Localizable.strings'
65
+ @gen_file_name
52
66
  end
53
67
 
54
- def yaml_file
55
- File.join(Pod::Config.instance.home_dir, 'zh2hant.yml')
68
+ def handle_modify_source
69
+ UI.puts '开始修改源码开始'
70
+ Dir.glob("#{@current_path}/**/*.{#{@modify_file_type}}").each do |f|
71
+ handle_modify_file f if File.stat(f).writable?
72
+ end
73
+ UI.puts '开始修改源码结束'
56
74
  end
57
75
 
58
- def load_trans_map
59
- require 'yaml'
60
- down_load_yaml unless File.exist?(yaml_file)
61
- contents = YAML.safe_load(File.open(yaml_file))
62
- @trans_map = contents.to_hash
63
- @trans_map_invert = @trans_map.invert
76
+ def handle_modify_file(file)
77
+ str = modify_file_string(file)
78
+ File.open(file, 'w+') do |f|
79
+ f.write(str)
80
+ end
64
81
  end
65
82
 
66
- def down_load_yaml
67
- require 'open-uri'
68
- UI.puts "开始下载简繁配置文件...\n"
69
- URI.open('http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/zh2hant.yml') do |i|
70
- File.open(yaml_file, 'w+') do |f|
71
- f.write(i.read)
83
+ def modify_file_string(file)
84
+ str = ''
85
+ File.open(file, 'r') do |f|
86
+ f.each_line do |line|
87
+ str += modify_format_string(f, line)
72
88
  end
73
89
  end
90
+ str
91
+ end
92
+
93
+ def modify_format_string(file, line)
94
+ result = line
95
+ result = handle_modify_line line if line =~ /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
96
+ result
97
+ end
98
+
99
+ def handle_modify_line(line)
100
+ result = line
101
+ reg = /@"[^"]*[\u4e00-\u9fa5]+[^"]*"/
102
+ ma = reg.match(line)
103
+ key = find_key_by_cn_val(ma[0])
104
+ if key
105
+ val = format(@modify_format_string, "@\"#{key}\"")
106
+ result = line.gsub(ma[0], val)
107
+ end
108
+ result
109
+ end
110
+
111
+ def find_key_by_cn_val(val)
112
+ cn_key = val[2, val.length - 3]
113
+ @cn_key_map[cn_key]
74
114
  end
75
115
 
76
116
  def read_csv_file
77
- Dir.glob("#{@current_path}/**/*.csv").each do |p|
78
- CSV.foreach(p) { |row| @key_map[row[@key_col]] = { zh: row[@cn_col], en: row[@en_col] } unless row[0] =~ /[\u4e00-\u9fa5]/ }
117
+ path = "#{@current_path}/#{@csv_file}.csv"
118
+ Dir.glob(path).each do |p|
119
+ CSV.foreach(p) do |row|
120
+ key = row[@key_col]
121
+ unless key =~ /[\u4e00-\u9fa5]/
122
+ @key_map[key] = { zh: row[@cn_col], en: row[@en_col] }
123
+ @cn_key_map[row[@cn_col]] = key
124
+ end
125
+ end
79
126
  end
80
127
  end
81
128
 
@@ -85,31 +132,15 @@ module Pod
85
132
  val = v[type]
86
133
  case area
87
134
  when :hk
88
- val = trans_zh_hk_str val
135
+ val = CBin::Trans::Helper.instance.trans_zh_hk_str val
89
136
  when :cn
90
- val = trans_zh_cn_str val
137
+ val = CBin::Trans::Helper.instance.trans_zh_cn_str val
91
138
  end
92
139
  str += "\"#{k}\" = \"#{val}\";\n"
93
140
  end
94
141
  str
95
142
  end
96
143
 
97
- def trans_zh_cn_str(input)
98
- out = []
99
- input.each_char do |c|
100
- out << (@trans_map_invert[c] || c)
101
- end
102
- out.join('')
103
- end
104
-
105
- def trans_zh_hk_str(input)
106
- out = []
107
- input.each_char do |c|
108
- out << (@trans_map[c] || c)
109
- end
110
- out.join('')
111
- end
112
-
113
144
  def write_to_file(file, contents)
114
145
  FileUtils.rm_rf(file) if File.exist?(file)
115
146
  FileUtils.mkdir_p(File.dirname(file)) unless File.exist?(File.dirname(file))
@@ -126,17 +157,20 @@ module Pod
126
157
  def write_en_strings
127
158
  file = File.join(@current_path, en_dir_name, generate_file_name)
128
159
  generate_file(file, :en)
160
+ UI.puts "生成英文配置完成.文件路径:#{File.absolute_path(file)}\n".green
129
161
  end
130
162
 
131
163
  def write_zh_cn_strings
132
164
  file = File.join(@current_path, zh_cn_dir_name, generate_file_name)
133
165
  generate_file(file, :zh)
166
+ UI.puts "生成简体中文配置完成.文件路径:#{File.absolute_path(file)}\n".green
134
167
  end
135
168
 
136
169
  def write_zh_hk_strings
137
170
  file = File.join(@current_path, zh_hk_dir_name, generate_file_name)
138
171
  content = format_str(:zh, :hk)
139
172
  write_to_file(file, content)
173
+ UI.puts "生成繁体中文配置完成.文件路径:#{File.absolute_path(file)}\n".green
140
174
  end
141
175
  end
142
176
  end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+ require 'cocoapods-lhj-bin/helpers/trans_helper'
3
+
4
+ module Pod
5
+ class Command
6
+ class Bin < Command
7
+ class Trans < Bin
8
+ self.summary = '源码中的简繁体转换'
9
+
10
+ def self.options
11
+ [
12
+ %w[--file-type 文件扩展名,默认为m,h,pch,xib],
13
+ %w[--zh-cn 转成简体中文,默认转成繁体]
14
+ ]
15
+ end
16
+
17
+ def initialize(argv)
18
+ @current_path = argv.shift_argument || Dir.pwd
19
+ @file_type = argv.option('file-type', 'm,h,pch,xib')
20
+ @zh_cn = argv.flag?('zh-cn', false)
21
+ super
22
+ end
23
+
24
+ def run
25
+ handler_files
26
+ end
27
+
28
+ def handler_files
29
+ Dir.glob("#{@current_path}/**/*.{#{@file_type}}").each do |f|
30
+ handler_file f
31
+ end
32
+ end
33
+
34
+ def handler_file(file)
35
+ str = format_file_string(file)
36
+ File.open(file, 'w+') do |f|
37
+ f.write(str)
38
+ end
39
+ end
40
+
41
+ def format_file_string(file)
42
+ str = ''
43
+ File.open(file, 'r+') do |f|
44
+ f.each_line do |line|
45
+ str += format_line_string(line)
46
+ end
47
+ end
48
+ str
49
+ end
50
+
51
+ def format_line_string(line)
52
+ result = line
53
+ if line =~ /[\u4e00-\u9fa5]/
54
+ result = CBin::Trans::Helper.instance.trans_zh_cn_str(line) if @zh_cn
55
+ result = CBin::Trans::Helper.instance.trans_zh_hk_str(line) unless @zh_cn
56
+ end
57
+ result
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = '0.0.8'
2
+ VERSION = '0.1.0'
3
3
  end
4
4
 
5
5
  module Pod
@@ -0,0 +1,50 @@
1
+
2
+ module CBin
3
+ class Trans
4
+ class Helper
5
+
6
+ def self.instance
7
+ @instance ||= new
8
+ end
9
+
10
+ def yaml_file
11
+ File.join(Pod::Config.instance.home_dir, 'zh2hant.yml')
12
+ end
13
+
14
+ def load_trans_map
15
+ require 'yaml'
16
+ down_load_yaml unless File.exist?(yaml_file)
17
+ contents = YAML.safe_load(File.open(yaml_file))
18
+ contents.to_hash
19
+ end
20
+
21
+ def down_load_yaml
22
+ require 'open-uri'
23
+ UI.puts "开始下载简繁配置文件...\n"
24
+ URI.open('http://aomi-ios-repo.oss-cn-shenzhen.aliyuncs.com/zh2hant.yml') do |i|
25
+ File.open(yaml_file, 'w+') do |f|
26
+ f.write(i.read)
27
+ end
28
+ end
29
+ end
30
+
31
+ def trans_zh_cn_str(input)
32
+ @trans_map_invert ||= load_trans_map.invert
33
+ out = []
34
+ input.each_char do |c|
35
+ out << (@trans_map_invert[c] || c)
36
+ end
37
+ out.join('')
38
+ end
39
+
40
+ def trans_zh_hk_str(input)
41
+ @trans_map ||= load_trans_map
42
+ out = []
43
+ input.each_char do |c|
44
+ out << (@trans_map[c] || c)
45
+ end
46
+ out.join('')
47
+ end
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-aomi-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-13 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -111,6 +111,7 @@ files:
111
111
  - lib/cocoapods-lhj-bin/command/bin/code.rb
112
112
  - lib/cocoapods-lhj-bin/command/bin/config/push.rb
113
113
  - lib/cocoapods-lhj-bin/command/bin/dup.rb
114
+ - lib/cocoapods-lhj-bin/command/bin/fetch.rb
114
115
  - lib/cocoapods-lhj-bin/command/bin/import.rb
115
116
  - lib/cocoapods-lhj-bin/command/bin/init.rb
116
117
  - lib/cocoapods-lhj-bin/command/bin/initHotKey.rb
@@ -123,6 +124,7 @@ files:
123
124
  - lib/cocoapods-lhj-bin/command/bin/repo/update.rb
124
125
  - lib/cocoapods-lhj-bin/command/bin/spec/create.rb
125
126
  - lib/cocoapods-lhj-bin/command/bin/spec/push.rb
127
+ - lib/cocoapods-lhj-bin/command/bin/trans.rb
126
128
  - lib/cocoapods-lhj-bin/command/bin/update.rb
127
129
  - lib/cocoapods-lhj-bin/config/config.rb
128
130
  - lib/cocoapods-lhj-bin/config/config_asker.rb
@@ -143,6 +145,7 @@ files:
143
145
  - lib/cocoapods-lhj-bin/helpers/spec_creator.rb
144
146
  - lib/cocoapods-lhj-bin/helpers/spec_files_helper.rb
145
147
  - lib/cocoapods-lhj-bin/helpers/spec_source_creator.rb
148
+ - lib/cocoapods-lhj-bin/helpers/trans_helper.rb
146
149
  - lib/cocoapods-lhj-bin/helpers/upload_helper.rb
147
150
  - lib/cocoapods-lhj-bin/native.rb
148
151
  - lib/cocoapods-lhj-bin/native/acknowledgements.rb