applocale 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/applocale/AppLocaleFile +2 -30
- data/lib/applocale/Command/init.rb +19 -5
- data/lib/applocale/Core/CompareStringFile/compare_string_file.rb +223 -0
- data/lib/applocale/Core/ParseCSV/parse_csv.rb +18 -5
- data/lib/applocale/Core/ParseXLSX/parse_xlsx.rb +13 -7
- data/lib/applocale/Core/ParserStringFile/parse_localized_resource.rb +5 -6
- data/lib/applocale/Core/ParserStringFile/parse_strings_file.rb +6 -16
- data/lib/applocale/Core/ParserStringFile/parse_xml_file.rb +7 -15
- data/lib/applocale/Core/convert_to_localefile.rb +14 -24
- data/lib/applocale/Core/init.rb +48 -11
- data/lib/applocale/Core/setting.rb +5 -1
- data/lib/applocale/Util/config_util.rb +22 -204
- data/lib/applocale/Util/convert_util.rb +71 -0
- data/lib/applocale/Util/error_util.rb +13 -0
- data/lib/applocale/Util/file_util.rb +8 -7
- data/lib/applocale/Util/regex_util.rb +1 -1
- data/lib/applocale/convert.rb +19 -0
- data/lib/applocale/version.rb +1 -1
- metadata +6 -4
- data/lib/applocale/Util/injection.rb +0 -89
@@ -3,7 +3,6 @@ require File.expand_path('../../../Util/platform.rb', __FILE__)
|
|
3
3
|
require File.expand_path('../../ParseXLSX/parse_xlsx_module', __FILE__)
|
4
4
|
require File.expand_path('../parse_strings_file', __FILE__)
|
5
5
|
require File.expand_path('../parse_xml_file', __FILE__)
|
6
|
-
require File.expand_path('../../../Util/injection.rb', __FILE__)
|
7
6
|
|
8
7
|
require 'rubyXL'
|
9
8
|
require 'colorize'
|
@@ -15,15 +14,15 @@ module Applocale
|
|
15
14
|
@xlsxpath
|
16
15
|
@langpathobj_list
|
17
16
|
@sheetobj_list
|
18
|
-
@
|
17
|
+
@convert_file
|
19
18
|
|
20
|
-
def initialize(skip_error = false, platform, xlsxpath, langpathobj_list, sheetobj_list,
|
19
|
+
def initialize(skip_error = false, platform, xlsxpath, langpathobj_list, sheetobj_list, convert_file)
|
21
20
|
@skip_error = skip_error
|
22
21
|
@platform = platform
|
23
22
|
@xlsxpath = xlsxpath
|
24
23
|
@langpathobj_list = langpathobj_list
|
25
24
|
@sheetobj_list = sheetobj_list
|
26
|
-
@
|
25
|
+
@convert_file = convert_file
|
27
26
|
startParse()
|
28
27
|
end
|
29
28
|
|
@@ -47,7 +46,7 @@ module Applocale
|
|
47
46
|
end
|
48
47
|
|
49
48
|
def parse_ios
|
50
|
-
result = ParseStringsFile.new(@platform, @langpathobj_list, @
|
49
|
+
result = ParseStringsFile.new(@platform, @langpathobj_list, @convert_file)
|
51
50
|
errorlist = result.errorlist
|
52
51
|
content = result.strings_keys
|
53
52
|
keylist = result.keys_list
|
@@ -55,7 +54,7 @@ module Applocale
|
|
55
54
|
end
|
56
55
|
|
57
56
|
def parse_android
|
58
|
-
result = ParseXMLFile.new(@platform, @langpathobj_list
|
57
|
+
result = ParseXMLFile.new(@platform, @langpathobj_list,@convert_file)
|
59
58
|
errorlist = result.errorlist
|
60
59
|
content = result.strings_keys
|
61
60
|
keylist = result.keys_list
|
@@ -1,19 +1,18 @@
|
|
1
1
|
require File.expand_path('../../setting.rb', __FILE__)
|
2
2
|
require File.expand_path('../../../Util/error_util.rb', __FILE__)
|
3
3
|
require File.expand_path('../../../Util/regex_util.rb', __FILE__)
|
4
|
-
require File.expand_path('../../../Util/injection.rb', __FILE__)
|
5
4
|
|
6
5
|
module Applocale
|
7
6
|
class ParseStringsFile
|
8
7
|
|
9
|
-
attr_reader :strings_keys, :errorlist, :in_multiline_comments, :keys_list, :platform, :
|
8
|
+
attr_reader :strings_keys, :errorlist, :in_multiline_comments, :keys_list, :platform, :convert_file
|
10
9
|
|
11
|
-
def initialize(platform, langpathobj_list,
|
10
|
+
def initialize(platform, langpathobj_list, convert_file)
|
12
11
|
@strings_keys = {}
|
13
12
|
@keys_list = Array.new
|
14
13
|
@errorlist = Array.new()
|
15
14
|
@platform = platform
|
16
|
-
@
|
15
|
+
@convert_file = convert_file
|
17
16
|
self.to_parse_files(langpathobj_list)
|
18
17
|
end
|
19
18
|
|
@@ -163,20 +162,11 @@ module Applocale
|
|
163
162
|
end
|
164
163
|
|
165
164
|
def remove_escape(lang, key, content)
|
166
|
-
value = content
|
167
|
-
if @
|
168
|
-
|
169
|
-
end
|
170
|
-
if @injectobj.has_parse_from_locale
|
171
|
-
value = @injectobj.load_parse_from_locale(lang.to_s, key, value)
|
172
|
-
else
|
173
|
-
value = ContentUtil.remove_escape(@platform, value)
|
174
|
-
end
|
175
|
-
if @injectobj.has_after_parse_from_locale
|
176
|
-
value = @injectobj.load_after_parse_from_locale(lang.to_s, key, value)
|
165
|
+
value = ContentUtil.remove_escape(@platform, content)
|
166
|
+
if @convert_file.has_parse_from_locale
|
167
|
+
return @convert_file.load_parse_from_locale(lang.to_s, key, content, value)
|
177
168
|
end
|
178
169
|
return value
|
179
170
|
end
|
180
|
-
|
181
171
|
end
|
182
172
|
end
|
@@ -1,18 +1,19 @@
|
|
1
1
|
require File.expand_path('../../setting.rb', __FILE__)
|
2
2
|
require File.expand_path('../../../Util/error_util.rb', __FILE__)
|
3
3
|
require File.expand_path('../../../Util/regex_util.rb', __FILE__)
|
4
|
+
require File.expand_path('../../../Util/convert_util.rb', __FILE__)
|
4
5
|
|
5
6
|
module Applocale
|
6
7
|
|
7
8
|
class ParseXMLFile
|
8
|
-
attr_reader :strings_keys, :errorlist, :in_multiline_comments, :keys_list, :platform, :
|
9
|
+
attr_reader :strings_keys, :errorlist, :in_multiline_comments, :keys_list, :platform, :convert_file
|
9
10
|
|
10
|
-
def initialize(platform, langpathobj_list,
|
11
|
+
def initialize(platform, langpathobj_list, convert_file)
|
11
12
|
@strings_keys = {}
|
12
13
|
@keys_list = Array.new
|
13
14
|
@errorlist = Array.new()
|
14
15
|
@platform = platform
|
15
|
-
@
|
16
|
+
@convert_file = convert_file
|
16
17
|
self.to_parse_files(langpathobj_list)
|
17
18
|
end
|
18
19
|
|
@@ -48,20 +49,11 @@ module Applocale
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def remove_escape(lang, key, content)
|
51
|
-
value = content
|
52
|
-
if @
|
53
|
-
|
54
|
-
end
|
55
|
-
if @injectobj.has_parse_from_locale
|
56
|
-
value = @injectobj.load_parse_from_locale(lang.to_s, key, value)
|
57
|
-
else
|
58
|
-
value = ContentUtil.remove_escape(@platform, value)
|
59
|
-
end
|
60
|
-
if @injectobj.has_after_parse_from_locale
|
61
|
-
value = @injectobj.load_after_parse_from_locale(lang.to_s, key, value)
|
52
|
+
value = ContentUtil.remove_escape(@platform, content)
|
53
|
+
if @convert_file.has_parse_from_locale
|
54
|
+
return @convert_file.load_parse_from_locale(lang.to_s, key, content, value)
|
62
55
|
end
|
63
56
|
return value
|
64
57
|
end
|
65
|
-
|
66
58
|
end
|
67
59
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../setting.rb', __FILE__)
|
2
2
|
require File.expand_path('../../Util/platform.rb', __FILE__)
|
3
3
|
require File.expand_path('../../Util/regex_util.rb', __FILE__)
|
4
|
-
require File.expand_path('../../Util/
|
4
|
+
require File.expand_path('../../Util/convert_util.rb', __FILE__)
|
5
5
|
|
6
6
|
require 'colorize'
|
7
7
|
require 'json'
|
@@ -14,22 +14,21 @@ module Applocale
|
|
14
14
|
|
15
15
|
platform = setting.platform
|
16
16
|
lang_path_list = setting.lang_path_list
|
17
|
-
injectObj = setting.injection
|
18
17
|
|
19
18
|
lang_path_list.each do |langpath_obj|
|
20
19
|
puts "Start to convert to string file for [\"#{langpath_obj.lang}\"] #{langpath_obj.filepath}...".green
|
21
20
|
if platform == Platform::IOS
|
22
|
-
self.convert_to_stringfile(platform, langpath_obj, sheetcontent_list,
|
21
|
+
self.convert_to_stringfile(platform, langpath_obj, sheetcontent_list, setting.convert_file)
|
23
22
|
elsif platform == Platform::ANDROID
|
24
|
-
self.convert_to_xml(platform, langpath_obj, sheetcontent_list,
|
23
|
+
self.convert_to_xml(platform, langpath_obj, sheetcontent_list, setting.convert_file)
|
25
24
|
elsif platform == Platform::JSON
|
26
|
-
self.convert_to_json(platform, langpath_obj, sheetcontent_list,
|
25
|
+
self.convert_to_json(platform, langpath_obj, sheetcontent_list, setting.convert_file)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
puts 'Convert Finished !!!'.green
|
30
29
|
end
|
31
30
|
|
32
|
-
def self.convert_to_stringfile(platform, langpath_obj, sheetcontent_list,
|
31
|
+
def self.convert_to_stringfile(platform, langpath_obj, sheetcontent_list, convert_file)
|
33
32
|
FileUtils.mkdir_p(File.dirname(langpath_obj.filepath))
|
34
33
|
file_header_comment = []
|
35
34
|
is_double_dash_comment = false
|
@@ -76,14 +75,14 @@ module Applocale
|
|
76
75
|
target.puts('')
|
77
76
|
contentlist.each do |rowinfo|
|
78
77
|
content = rowinfo.content_dict[langpath_obj.lang]
|
79
|
-
value = self.add_escape(platform, langpath_obj.lang, rowinfo.key_str, content,
|
78
|
+
value = self.add_escape(platform, langpath_obj.lang, rowinfo.key_str, content, convert_file)
|
80
79
|
target.puts("\"#{rowinfo.key_str}\" = \"#{value}\";")
|
81
80
|
end
|
82
81
|
end
|
83
82
|
target.close
|
84
83
|
end
|
85
84
|
|
86
|
-
def self.convert_to_xml(platform, langpath_obj, sheetcontent_list,
|
85
|
+
def self.convert_to_xml(platform, langpath_obj, sheetcontent_list, convert_file)
|
87
86
|
FileUtils.mkdir_p(File.dirname(langpath_obj.filepath))
|
88
87
|
target = open(langpath_obj.filepath, 'w')
|
89
88
|
target.puts('<resources>')
|
@@ -92,7 +91,7 @@ module Applocale
|
|
92
91
|
contentlist = sheetcontent.get_rowInfo_sortby_key
|
93
92
|
contentlist.each do |rowinfo|
|
94
93
|
content = rowinfo.content_dict[langpath_obj.lang]
|
95
|
-
value = self.add_escape(platform, langpath_obj.lang, rowinfo.key_str, content,
|
94
|
+
value = self.add_escape(platform, langpath_obj.lang, rowinfo.key_str, content, convert_file)
|
96
95
|
target.puts(" <string name=\"#{rowinfo.key_str}\">#{value}</string>")
|
97
96
|
end
|
98
97
|
target.puts('')
|
@@ -101,12 +100,12 @@ module Applocale
|
|
101
100
|
target.close
|
102
101
|
end
|
103
102
|
|
104
|
-
def self.convert_to_json(platform, lang_path_obj, sheet_content_list,
|
103
|
+
def self.convert_to_json(platform, lang_path_obj, sheet_content_list, convert_file)
|
105
104
|
FileUtils.mkdir_p(File.dirname(lang_path_obj.filepath))
|
106
105
|
hash = sheet_content_list.map do |sheet_content|
|
107
106
|
newResult = sheet_content.get_rowInfo_sortby_key.map do |row|
|
108
107
|
content = ContentUtil.remove_escaped_new_line(row.content_dict[lang_path_obj.lang])
|
109
|
-
value = add_escape(platform, lang_path_obj.lang, row.key_str, content,
|
108
|
+
value = add_escape(platform, lang_path_obj.lang, row.key_str, content, convert_file)
|
110
109
|
[row.key_str, value]
|
111
110
|
end.to_h
|
112
111
|
newResult
|
@@ -124,21 +123,12 @@ module Applocale
|
|
124
123
|
target.close
|
125
124
|
end
|
126
125
|
|
127
|
-
def self.add_escape(platform, lang, key, content,
|
128
|
-
value = content
|
129
|
-
if
|
130
|
-
|
131
|
-
end
|
132
|
-
if injectObj.has_convent_to_locale
|
133
|
-
value = injectObj.load_convent_to_locale(lang.to_s, key, value)
|
134
|
-
else
|
135
|
-
value = ContentUtil.add_escape(platform, value)
|
136
|
-
end
|
137
|
-
if injectObj.has_after_convent_to_locale
|
138
|
-
value = injectObj.load_after_convent_to_locale(lang.to_s, key, value)
|
126
|
+
def self.add_escape(platform, lang, key, content, convert_file)
|
127
|
+
value = ContentUtil.add_escape(platform, content)
|
128
|
+
if convert_file.has_convent_to_locale
|
129
|
+
return convert_file.load_convent_to_locale(lang.to_s, key, content, value)
|
139
130
|
end
|
140
131
|
return value
|
141
132
|
end
|
142
|
-
|
143
133
|
end
|
144
134
|
end
|
data/lib/applocale/Core/init.rb
CHANGED
@@ -8,12 +8,15 @@ require File.expand_path('../ParseCSV/parse_csv', __FILE__)
|
|
8
8
|
require File.expand_path('../ParserStringFile/parse_localized_resource.rb', __FILE__)
|
9
9
|
require File.expand_path('../convert_to_localefile', __FILE__)
|
10
10
|
require File.expand_path('../FindStrKey/find_str_key', __FILE__)
|
11
|
+
require File.expand_path('../CompareStringFile/compare_string_file', __FILE__)
|
11
12
|
|
12
13
|
require 'open-uri'
|
13
14
|
|
14
15
|
module Applocale
|
15
16
|
|
16
|
-
def self.create_config_file( platformStr = nil, projpath = Dir.pwd)
|
17
|
+
def self.create_config_file( platformStr = nil, projpath = Dir.pwd, configFile = FilePathUtil.default_config_filename)
|
18
|
+
configfile_name = configFile
|
19
|
+
configfile_name = FilePathUtil.default_config_filename if configfile_name.nil?
|
17
20
|
proj_path = projpath
|
18
21
|
proj_path = Dir.pwd if projpath.nil?
|
19
22
|
proj_apath = Applocale::FilePathUtil.get_proj_absoluat_path(proj_path)
|
@@ -31,15 +34,17 @@ module Applocale
|
|
31
34
|
if platformsybom.nil?
|
32
35
|
ErrorUtil::CommandError.new("Invalid [platform] : ios | android | json").raise
|
33
36
|
else
|
34
|
-
Applocale::Config::ConfigUtil.create_configfile_ifneed(platformsybom,proj_apath.to_s )
|
37
|
+
Applocale::Config::ConfigUtil.create_configfile_ifneed(platformsybom,proj_apath.to_s, configfile_name )
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
38
|
-
def self.start_update(projpath = Dir.pwd)
|
41
|
+
def self.start_update(projpath = Dir.pwd, configFile = FilePathUtil.default_config_filename)
|
42
|
+
configfile_name = configFile
|
43
|
+
configfile_name = FilePathUtil.default_config_filename if configfile_name.nil?
|
39
44
|
proj_path = projpath
|
40
45
|
proj_path = Dir.pwd if projpath.nil?
|
41
46
|
proj_apath = Applocale::FilePathUtil.get_proj_absoluat_path(proj_path)
|
42
|
-
obj = Applocale::Config::ConfigUtil.new(proj_apath)
|
47
|
+
obj = Applocale::Config::ConfigUtil.new(proj_apath, configfile_name)
|
43
48
|
setting = obj.load_configfile_to_setting
|
44
49
|
if setting.link.to_s.length <= 0
|
45
50
|
ErrorUtil::ConfigFileInValid.new('[link] is missing in config file ').raise
|
@@ -54,16 +59,18 @@ module Applocale
|
|
54
59
|
download = open(setting.link)
|
55
60
|
IO.copy_stream(download, setting.xlsxpath)
|
56
61
|
end
|
57
|
-
Applocale.start_local_update(setting, proj_path)
|
62
|
+
Applocale.start_local_update(setting, proj_path, configfile_name)
|
58
63
|
end
|
59
64
|
|
60
|
-
def self.start_local_update(asetting = nil, projpath = Dir.pwd)
|
65
|
+
def self.start_local_update(asetting = nil, projpath = Dir.pwd, configFile = FilePathUtil.default_config_filename.to_s)
|
66
|
+
configfile_name = configFile
|
67
|
+
configfile_name = FilePathUtil.default_config_filename if configfile_name.nil?
|
61
68
|
proj_path = projpath
|
62
69
|
proj_path = Dir.pwd if projpath.nil?
|
63
70
|
proj_apath = Applocale::FilePathUtil.get_proj_absoluat_path(proj_path)
|
64
71
|
setting = asetting
|
65
72
|
if setting.nil?
|
66
|
-
obj = Applocale::Config::ConfigUtil.new(proj_apath)
|
73
|
+
obj = Applocale::Config::ConfigUtil.new(proj_apath, configfile_name)
|
67
74
|
setting = obj.load_configfile_to_setting
|
68
75
|
end
|
69
76
|
case setting.export_format
|
@@ -75,22 +82,52 @@ module Applocale
|
|
75
82
|
ConvertToStrFile.convert(setting, parser.result)
|
76
83
|
end
|
77
84
|
|
78
|
-
def self.start_reverse( is_skip, projpath = Dir.pwd)
|
85
|
+
def self.start_reverse( is_skip, projpath = Dir.pwd, configFile = FilePathUtil.default_config_filename)
|
86
|
+
configfile_name = configFile
|
87
|
+
configfile_name = FilePathUtil.default_config_filename if configfile_name.nil?
|
79
88
|
proj_path = projpath
|
80
89
|
proj_path = Dir.pwd if projpath.nil?
|
81
90
|
proj_apath = Applocale::FilePathUtil.get_proj_absoluat_path(proj_path)
|
82
|
-
obj = Applocale::Config::ConfigUtil.new(proj_apath)
|
91
|
+
obj = Applocale::Config::ConfigUtil.new(proj_apath, configfile_name)
|
83
92
|
setting = obj.load_configfile_to_setting
|
84
93
|
Applocale::ParseLocalizedResource.new(is_skip,setting.platform,setting.xlsxpath, setting.lang_path_list, setting.sheet_obj_list, setting.rubycode )
|
85
94
|
end
|
86
95
|
|
87
|
-
def self.findkey( key, projpath = Dir.pwd)
|
96
|
+
def self.findkey( key, projpath = Dir.pwd, configFile = FilePathUtil.default_config_filename)
|
97
|
+
configfile_name = configFile
|
98
|
+
configfile_name = FilePathUtil.default_config_filename if configfile_name.nil?
|
88
99
|
proj_path = projpath
|
89
100
|
proj_path = Dir.pwd if projpath.nil?
|
90
101
|
proj_apath = Applocale::FilePathUtil.get_proj_absoluat_path(proj_path)
|
91
|
-
obj = Applocale::Config::ConfigUtil.new(proj_apath)
|
102
|
+
obj = Applocale::Config::ConfigUtil.new(proj_apath, configfile_name)
|
92
103
|
report_folder = File.dirname(obj.configfile_pathstr)
|
93
104
|
findobj = FindStrKey::FindValue.new(Applocale::Platform::IOS, proj_apath, report_folder, key)
|
94
105
|
findobj.find
|
95
106
|
end
|
107
|
+
|
108
|
+
def self.compare(file1, file2)
|
109
|
+
file1_path = Applocale::FilePathUtil.get_proj_absoluat_path(file1)
|
110
|
+
file2_path = Applocale::FilePathUtil.get_proj_absoluat_path(file2)
|
111
|
+
|
112
|
+
unless File.exist?(file1_path)
|
113
|
+
ErrorUtil::FileNotExist.new.raise
|
114
|
+
end
|
115
|
+
unless File.exist?(file2_path)
|
116
|
+
ErrorUtil::FileNotExist.new.raise
|
117
|
+
end
|
118
|
+
|
119
|
+
ext1 = File.extname(file1).strip.downcase[1..-1]
|
120
|
+
ext2 = File.extname(file2).strip.downcase[1..-1]
|
121
|
+
if ext1 != ext2
|
122
|
+
ErrorUtil::FileMustSameExt.new.raise
|
123
|
+
end
|
124
|
+
|
125
|
+
if ext1 == 'strings'
|
126
|
+
platformsybom = Platform::IOS
|
127
|
+
elsif ext2 == 'xml'
|
128
|
+
platformsybom = Platform::ANDROID
|
129
|
+
end
|
130
|
+
|
131
|
+
Applocale::CompareStringFile.new(platformsybom,file1_path,file2_path)
|
132
|
+
end
|
96
133
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'colorize'
|
2
|
+
require File.expand_path('../../Util/convert_util.rb', __FILE__)
|
3
|
+
|
2
4
|
# module Applocale
|
3
5
|
# class Setting
|
4
6
|
# class <<self
|
@@ -21,7 +23,7 @@ require 'colorize'
|
|
21
23
|
module Applocale
|
22
24
|
module Config
|
23
25
|
class Setting
|
24
|
-
attr_accessor :configfile_pathstr, :link, :platform, :xlsxpath, :google_credentials_path, :lang_path_list, :sheet_obj_list, :rubycode, :export_format, :export_to, :is_skip_empty_key, :
|
26
|
+
attr_accessor :configfile_pathstr, :resource_folder,:link, :platform, :xlsxpath, :google_credentials_path, :lang_path_list, :sheet_obj_list, :rubycode, :export_format, :export_to, :is_skip_empty_key, :convert_file
|
25
27
|
def initialize(configfile_pathstr)
|
26
28
|
self.configfile_pathstr = configfile_pathstr
|
27
29
|
self.lang_path_list = Array.new
|
@@ -32,6 +34,7 @@ module Applocale
|
|
32
34
|
puts ' In Setting'
|
33
35
|
puts " link = #{self.link}"
|
34
36
|
puts " platform = #{self.platform}"
|
37
|
+
puts " resource_folder = #{self.resource_folder}"
|
35
38
|
puts " xlsxpath = #{self.xlsxpath}"
|
36
39
|
puts " google_credentials_path = #{self.google_credentials_path} "
|
37
40
|
|
@@ -47,6 +50,7 @@ module Applocale
|
|
47
50
|
puts " export_format: #{export_format}"
|
48
51
|
puts " export_to: #{export_to}"
|
49
52
|
puts " is_skip_empty_key: #{self.is_skip_empty_key} "
|
53
|
+
puts " convertFile: #{self.convert_file.filepath}"
|
50
54
|
# puts self.rubycode
|
51
55
|
|
52
56
|
end
|
@@ -3,19 +3,20 @@ require File.expand_path('../file_util.rb', __FILE__)
|
|
3
3
|
require File.expand_path('../error_util.rb', __FILE__)
|
4
4
|
require File.expand_path('../platform.rb', __FILE__)
|
5
5
|
require File.expand_path('../../Core/setting.rb', __FILE__)
|
6
|
-
require File.expand_path('../
|
6
|
+
require File.expand_path('../convert_util.rb', __FILE__)
|
7
7
|
|
8
8
|
require 'pathname'
|
9
9
|
|
10
10
|
module Applocale
|
11
11
|
module Config
|
12
12
|
class ConfigUtil
|
13
|
-
attr_accessor :configfile_pathstr
|
13
|
+
attr_accessor :configfile_pathstr, :configFile
|
14
14
|
|
15
|
-
def initialize(projectdir_path)
|
15
|
+
def initialize(projectdir_path, config_filename)
|
16
16
|
projpath = Pathname.new(projectdir_path.strip)
|
17
17
|
if File.directory?(projpath)
|
18
|
-
self.
|
18
|
+
self.configFile = config_filename
|
19
|
+
self.configfile_pathstr = File.join(projpath, FilePathUtil.default_mainfolder, config_filename)
|
19
20
|
FileUtils.mkdir_p(File.dirname(self.configfile_pathstr))
|
20
21
|
else
|
21
22
|
ErrorUtil::ConfigFileInValid.new('Project Path is invalid.').raise
|
@@ -25,7 +26,7 @@ module Applocale
|
|
25
26
|
public
|
26
27
|
def create_configfile(platform)
|
27
28
|
if !File.exist?(self.configfile_pathstr)
|
28
|
-
src_pathstr = File.expand_path("../../#{
|
29
|
+
src_pathstr = File.expand_path("../../#{self.configFile}", __FILE__)
|
29
30
|
File.open(src_pathstr, 'r') do |form|
|
30
31
|
File.open(configfile_pathstr, 'w') do |to|
|
31
32
|
form.each_line do |line|
|
@@ -33,6 +34,7 @@ module Applocale
|
|
33
34
|
newline = newline.gsub("\#{path_zh_TW}", FilePathUtil.default_localefile_relative_pathstr(platform, Locale::ZH_TW))
|
34
35
|
newline = newline.gsub("\#{path_zh_CN}", FilePathUtil.default_localefile_relative_pathstr(platform, Locale::ZH_CN))
|
35
36
|
newline = newline.gsub("\#{path_en_US}", FilePathUtil.default_localefile_relative_pathstr(platform, Locale::EN_US))
|
37
|
+
newline = newline.gsub("\#{resource_folder}", FilePathUtil.default_export_to)
|
36
38
|
newline = newline.gsub("\#{xlsxpath}", FilePathUtil.default_xlsx_relativepath_str)
|
37
39
|
newline = newline.gsub("\#{google_credentials_path}", FilePathUtil.default_google_credentials_filename)
|
38
40
|
newline = newline.gsub("\#{export_format}", FilePathUtil.default_export_format.to_s)
|
@@ -40,18 +42,20 @@ module Applocale
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
end
|
45
|
+
converfile = "convert.rb"
|
46
|
+
src_pathstr = File.expand_path("../../#{converfile}", __FILE__)
|
47
|
+
FileUtils.cp(src_pathstr, File.expand_path("convert.rb",File.dirname(self.configfile_pathstr)))
|
43
48
|
end
|
44
49
|
end
|
45
50
|
|
46
51
|
public
|
47
|
-
def self.create_configfile_ifneed(platform, projectdir_path)
|
48
|
-
config = ConfigUtil.new(projectdir_path)
|
52
|
+
def self.create_configfile_ifneed(platform, projectdir_path, config_filename)
|
53
|
+
config = ConfigUtil.new(projectdir_path, config_filename)
|
49
54
|
config.create_configfile(platform)
|
50
55
|
end
|
51
56
|
|
52
57
|
private
|
53
58
|
def load_configfile
|
54
|
-
rubycode = ''
|
55
59
|
unless File.exist?(self.configfile_pathstr)
|
56
60
|
ErrorUtil::MissingConfigFile.new.raise
|
57
61
|
end
|
@@ -61,21 +65,19 @@ module Applocale
|
|
61
65
|
reg = /\w*\s*:\s*"?.*"?/
|
62
66
|
if line.match reg
|
63
67
|
yaml += line
|
64
|
-
else
|
65
|
-
rubycode += line
|
66
68
|
end
|
67
69
|
end
|
68
70
|
config_yaml = YAML.load( yaml)
|
69
71
|
rescue
|
70
72
|
ErrorUtil::ConfigFileInValid.new('ConfigFile format is invalid.')
|
71
73
|
end
|
72
|
-
return config_yaml
|
74
|
+
return config_yaml
|
73
75
|
end
|
74
76
|
|
75
77
|
public
|
76
78
|
def load_configfile_to_setting
|
77
79
|
error_list = Array.new
|
78
|
-
config_yaml
|
80
|
+
config_yaml = load_configfile
|
79
81
|
link = config_yaml['link'].to_s.strip
|
80
82
|
platform = config_yaml['platform'].to_s.strip
|
81
83
|
xlsxpath = config_yaml['xlsxpath'].to_s.strip
|
@@ -83,11 +85,12 @@ module Applocale
|
|
83
85
|
langlist = config_yaml['langlist']
|
84
86
|
sheetname = config_yaml['sheetname']
|
85
87
|
export_format = config_yaml['export_format']
|
88
|
+
resource_folder = config_yaml['resource_folder']
|
86
89
|
export_to = config_yaml['export_to']
|
87
90
|
isSkipEmptyKey = config_yaml['isSkipEmptyKey']
|
91
|
+
configFileFolder = File.dirname(self.configfile_pathstr)
|
88
92
|
setting = Applocale::Config::Setting.new(self.configfile_pathstr)
|
89
|
-
setting.
|
90
|
-
setting.injection = Applocale::Injection.load(rubycode)
|
93
|
+
setting.convert_file = Applocale::ConvertFile.new(config_yaml['convertFile'],configFileFolder)
|
91
94
|
|
92
95
|
unless link.nil? || link.length == 0
|
93
96
|
if (link =~ /^https/).nil? && (link =~ /^http/).nil?
|
@@ -119,7 +122,11 @@ module Applocale
|
|
119
122
|
error_list.push(error)
|
120
123
|
end
|
121
124
|
|
122
|
-
|
125
|
+
if resource_folder.nil? || resource_folder.length == 0
|
126
|
+
setting.export_to = File.expand_path(FilePathUtil.default_export_to,configFileFolder)
|
127
|
+
else
|
128
|
+
setting.export_to = File.expand_path(resource_folder,configFileFolder)
|
129
|
+
end
|
123
130
|
|
124
131
|
if !(xlsxpath.nil? || xlsxpath.length == 0)
|
125
132
|
if !(Pathname.new xlsxpath).absolute?
|
@@ -226,192 +233,3 @@ module Applocale
|
|
226
233
|
end
|
227
234
|
end
|
228
235
|
|
229
|
-
# config = Applocale::Config::ConfigUtil.new("/Users/kennix.chui/Desktop/programTest/")
|
230
|
-
# config.load_configfile_to_setting
|
231
|
-
#
|
232
|
-
# Applocale::Config::ConfigUtil.create_configfile_ifneed(Applocale::Platform::IOS, "/Users/kennix.chui/Desktop/programTest/")
|
233
|
-
#
|
234
|
-
|
235
|
-
# config = Applocale::Config::ConfigUtil.new("/Users/kennix.chui/Desktop/programTest/")
|
236
|
-
# config.load_configfile_to_setting
|
237
|
-
|
238
|
-
|
239
|
-
# Applocale::Config::ConfigUtil.create_configfile_ifneed(Applocale::Platform::IOS, " /Users/kennix.chui/Desktop/programTest/ ")
|
240
|
-
# obj = Applocale::ConfigUtil.new()
|
241
|
-
|
242
|
-
# module Applocale
|
243
|
-
# class ConfigUtil
|
244
|
-
# def self.create_configfile_ifneed(platform)
|
245
|
-
# pathstr = FileUtil.configfile_pathstr
|
246
|
-
# self.create_configfile(platform, pathstr) unless File.exist?(pathstr)
|
247
|
-
# end
|
248
|
-
#
|
249
|
-
# def self.create_configfile(platform, configfile_pathstr)
|
250
|
-
# src_pathstr = File.expand_path("../../#{FileUtil.filename_config}", __FILE__)
|
251
|
-
#
|
252
|
-
# File.open(src_pathstr, 'r') do |form|
|
253
|
-
# File.open(configfile_pathstr, 'w') do |to|
|
254
|
-
# form.each_line do |line|
|
255
|
-
# newline = line.gsub("\#{platform}", "#{platform.to_s}")
|
256
|
-
# newline = newline.gsub("\#{path_zh_TW}", FileUtil.get_default_localefile_relative_pathstr(platform, Locale::ZH_TW))
|
257
|
-
# newline = newline.gsub("\#{path_zh_CN}", FileUtil.get_default_localefile_relative_pathstr(platform, Locale::ZH_CN))
|
258
|
-
# newline = newline.gsub("\#{path_en_US}", FileUtil.get_default_localefile_relative_pathstr(platform, Locale::EN_US))
|
259
|
-
# newline = newline.gsub("\#{xlsxpath}", FileUtil.get_default_xlsx_relativepath_str)
|
260
|
-
# to.puts(newline)
|
261
|
-
# end
|
262
|
-
#
|
263
|
-
# end
|
264
|
-
# end
|
265
|
-
# end
|
266
|
-
#
|
267
|
-
# def self.load_and_validate_xlsx_to_localefile(is_local_update, path)
|
268
|
-
# config_yaml = self.load_config(path)
|
269
|
-
# self.validate_xlsx_to_localefile(config_yaml, is_local_update)
|
270
|
-
# end
|
271
|
-
#
|
272
|
-
# def self.load_and_validate_localefile_to_xlsx(path = nil)
|
273
|
-
# config_yaml = self.load_config(path)
|
274
|
-
# self.validate_localefile_to_xlsx(config_yaml)
|
275
|
-
# end
|
276
|
-
#
|
277
|
-
# # private
|
278
|
-
# def self.load_config(path)
|
279
|
-
# configfile_path = FileUtil.configfile_pathstr
|
280
|
-
# unless File.exist?(configfile_path)
|
281
|
-
# ErrorUtil::MissingConfigFile.new.raise
|
282
|
-
# end
|
283
|
-
# begin
|
284
|
-
# config_yaml = YAML.load_file configfile_path
|
285
|
-
# rescue
|
286
|
-
# ErrorUtil::ConfigFileInValid.new('ConfigFile format is invalid.').raise
|
287
|
-
# end
|
288
|
-
# return config_yaml
|
289
|
-
# end
|
290
|
-
#
|
291
|
-
# def self.validate_xlsx_to_localefile(config_yaml, is_local_update)
|
292
|
-
# error_list = self.validate_common(config_yaml)
|
293
|
-
# if is_local_update
|
294
|
-
# unless File.exist? Setting.xlsxpath
|
295
|
-
# error = ErrorUtil::ConfigFileInValid.new("#{Setting.xlsxpath} do not exist")
|
296
|
-
# error_list.push(error)
|
297
|
-
# end
|
298
|
-
# else
|
299
|
-
# if config_yaml['link'].to_s.strip.nil? || config_yaml['link'].to_s.strip.length <= 0
|
300
|
-
# error = ErrorUtil::ConfigFileInValid.new('[link] should not be empty')
|
301
|
-
# error_list.push(error)
|
302
|
-
# end
|
303
|
-
# end
|
304
|
-
# ErrorUtil::ConfigFileInValid.raiseArr(error_list)
|
305
|
-
# end
|
306
|
-
#
|
307
|
-
# def self.validate_localefile_to_xlsx(config_yaml)
|
308
|
-
# error_list = self.validate_common(config_yaml)
|
309
|
-
# Setting.langlist.each do |_, langinfo|
|
310
|
-
# unless File.exist? langinfo[:path]
|
311
|
-
# error = ErrorUtil::ConfigFileInValid.new("#{langinfo[:path]} do not exist")
|
312
|
-
# error_list.push(error)
|
313
|
-
# end
|
314
|
-
# end
|
315
|
-
# ErrorUtil::ConfigFileInValid.raiseArr(error_list)
|
316
|
-
# end
|
317
|
-
#
|
318
|
-
# def self.validate_common(config_yaml)
|
319
|
-
# error_list = Array.new
|
320
|
-
# link = config_yaml['link'].to_s.strip
|
321
|
-
# platform = config_yaml['platform'].to_s.strip
|
322
|
-
# keystr = config_yaml['keystr'].to_s.strip
|
323
|
-
# langlist = config_yaml['langlist']
|
324
|
-
# xlsxpath = config_yaml['xlsxpath'].to_s.strip
|
325
|
-
#
|
326
|
-
# newlink = nil
|
327
|
-
# newplatform = nil
|
328
|
-
# newkeystr = nil
|
329
|
-
# newlanglist = Hash.new
|
330
|
-
# newxlsxpath = nil
|
331
|
-
#
|
332
|
-
# unless link.nil? || link.length == 0
|
333
|
-
# if (link =~ /^https/).nil? && (link =~ /^http/).nil?
|
334
|
-
# error = ErrorUtil::ConfigFileInValid.new("Invalid link for [link] : #{link}")
|
335
|
-
# error_list.push(error)
|
336
|
-
# else
|
337
|
-
# newlink = link
|
338
|
-
# end
|
339
|
-
# end
|
340
|
-
#
|
341
|
-
# if !(xlsxpath.nil? || xlsxpath.length == 0)
|
342
|
-
# if !(Pathname.new xlsxpath).absolute?
|
343
|
-
# newxlsxpath = File.expand_path(xlsxpath, File.dirname(FileUtil.configfile_pathstr))
|
344
|
-
# else
|
345
|
-
# newxlsxpath = xlsxpath
|
346
|
-
# end
|
347
|
-
# else
|
348
|
-
# error = ErrorUtil::ConfigFileInValid.new('[xlsxpath] should not be empty or missing')
|
349
|
-
# error_list.push(error)
|
350
|
-
# end
|
351
|
-
#
|
352
|
-
# if platform.nil? || platform.length == 0
|
353
|
-
# error = ErrorUtil::ConfigFileInValid.new('[platform] should not be empty')
|
354
|
-
# error_list.push(error)
|
355
|
-
# else
|
356
|
-
# if Platform.init(platform).nil?
|
357
|
-
# error = ErrorUtil::ConfigFileInValid.new("[platform] can only be 'ios' or 'android' ")
|
358
|
-
# error_list.push(error)
|
359
|
-
# else
|
360
|
-
# newplatform = Platform.init(platform)
|
361
|
-
# end
|
362
|
-
# end
|
363
|
-
#
|
364
|
-
# if keystr.nil? || keystr.length == 0
|
365
|
-
# error = ErrorUtil::ConfigFileInValid.new('[keystr] should not be empty')
|
366
|
-
# error_list.push(error)
|
367
|
-
# else
|
368
|
-
# newkeystr = keystr.upcase
|
369
|
-
# end
|
370
|
-
#
|
371
|
-
# if langlist.nil?
|
372
|
-
# error = ErrorUtil::ConfigFileInValid.new('[langlist] should not be empty or missing')
|
373
|
-
# error_list.push(error)
|
374
|
-
# elsif !(langlist.is_a? Hash)
|
375
|
-
# error = ErrorUtil::ConfigFileInValid.new('[langlist] wrong format')
|
376
|
-
# error_list.push(error)
|
377
|
-
# else
|
378
|
-
# if langlist.length <= 0
|
379
|
-
# error = ErrorUtil::ConfigFileInValid.new('[langlist] should not be empty ')
|
380
|
-
# error_list.push(error)
|
381
|
-
# end
|
382
|
-
# langlist.each do |lang, arr|
|
383
|
-
# if arr.length != 2
|
384
|
-
# error = ErrorUtil::ConfigFileInValid.new('[langlist] wrong format')
|
385
|
-
# error_list.push(error)
|
386
|
-
# else
|
387
|
-
# path = arr[1]
|
388
|
-
# unless (Pathname.new path).absolute?
|
389
|
-
# path = File.expand_path(path, File.dirname(FileUtil.configfile_pathstr))
|
390
|
-
# end
|
391
|
-
# if newplatform != nil
|
392
|
-
# if Platform.is_valid_path(newplatform, path)
|
393
|
-
# newlanglist[lang] = {:xlsheader => arr[0], :path => path}
|
394
|
-
# else
|
395
|
-
# if newplatform == Platform::IOS
|
396
|
-
# error = ErrorUtil::ConfigFileInValid.new("wrong locale file type: IOS should be .strings : #{path}")
|
397
|
-
# else
|
398
|
-
# error = ErrorUtil::ConfigFileInValid.new("wrong locale file type: Android should be .xml : #{path}")
|
399
|
-
# end
|
400
|
-
# error_list.push(error)
|
401
|
-
# end
|
402
|
-
# end
|
403
|
-
# end
|
404
|
-
# end
|
405
|
-
# end
|
406
|
-
#
|
407
|
-
# Setting.link = newlink
|
408
|
-
# Setting.platform = newplatform
|
409
|
-
# Setting.keystr = newkeystr
|
410
|
-
# Setting.langlist = newlanglist
|
411
|
-
# Setting.xlsxpath = newxlsxpath
|
412
|
-
#
|
413
|
-
# return error_list
|
414
|
-
# end
|
415
|
-
#
|
416
|
-
# end
|
417
|
-
# end
|