applocale 0.2.2 → 0.2.3

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
  SHA1:
3
- metadata.gz: 02df5e65a38fe498ff69bb4db79db9247d338aac
4
- data.tar.gz: 53d3f4a2c390f0c78ae09ec25b88d7bf1aad086c
3
+ metadata.gz: 269a0b00b1d4a213e8e384836a2114057692c2ef
4
+ data.tar.gz: e0eb7aabaa4b8cd918382bf43a3dd0b0151a5c27
5
5
  SHA512:
6
- metadata.gz: b84541907f1fed1ecc3c5f012f6b2a7561caaada3c7bff921ac34f8a5c873ffe40f42fd9bd761d7c64d69b6046bd13394790f3bf347209d02c17fae97c816b1b
7
- data.tar.gz: dbae74544e214fce3a3afd79aee238b7f9bba98dbc01e062fd2402356e0cc50c3342cb4d438f2f53f065c62dcbdccb6e5f69a6f3430fe412702648b4f88c0b6d
6
+ metadata.gz: 79ba9f4d67ff026796421fab0b36c09fe58bedae3610f9416060da136e385b5905dcbcb995483ad51dbdc17ac6083a85704630380d3884d87f2ac76b722c13b3
7
+ data.tar.gz: ad628b0dacb5b1492c24c96276ffb3074f147dc56a7b1db4f92e43dc01fe3392a8f09a671f78a47a5a71df57628fab681369e4e2293fcf3abc99a98d01da5812
@@ -1,6 +1,7 @@
1
1
  link: "https://docs.google.com/spreadsheets/d/1Wy2gN_DSw-TCU2gPCzqvYxLfFG5fyK5rodXs5MLUy8w"
2
2
  platform: "#{platform}"
3
3
  xlsxpath: "#{xlsxpath}"
4
+ export_format: :#{export_format}
4
5
  #google_credentials_path: "#{google_credentials_path}"
5
6
  langlist:
6
7
  zh_TW: "#{path_zh_TW}"
@@ -3,6 +3,7 @@ require 'googleauth'
3
3
  require 'googleauth/stores/file_token_store'
4
4
  require 'fileutils'
5
5
  require 'colorize'
6
+ require 'open-uri'
6
7
  require File.expand_path('../../../Util/file_util.rb', __FILE__)
7
8
  require File.expand_path('../../../Util/error_util.rb', __FILE__)
8
9
 
@@ -34,23 +35,34 @@ module Applocale
34
35
  end
35
36
 
36
37
  private
37
- def removeOldExcel
38
- if File.exist? self.xlsx_path
39
- FileUtils.rm(self.xlsx_path)
40
- end
38
+ def remove_old_files(from:)
39
+ FileUtils.rm_rf Dir.glob("#{from}/*.{csv,xlsx}") if File.directory?(from)
41
40
  end
42
41
 
43
42
  public
44
- def download
45
- removeOldExcel
46
- service = Google::Apis::DriveV3::DriveService.new
47
- service.client_options.application_name = APPLICATION_NAME
48
- service.authorization = authorize
43
+ def download(sheet_obj_list, export_format:, export_to:)
44
+ FileUtils.mkdir_p(export_to) unless File.directory?(export_to)
45
+ remove_old_files(from: export_to)
46
+ authorization = authorize
49
47
  begin
50
- service.export_file(self.spreadsheet_id,
51
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
52
- download_dest: self.xlsx_path)
53
- if File.exist? self.xlsx_path
48
+ case export_format
49
+ when 'csv'
50
+ sheet_obj_list.each do |sheet_obj|
51
+ sheet_name = sheet_obj.sheetname
52
+ file_path = File.expand_path("#{sheet_name}.csv", export_to)
53
+ csv = open("https://docs.google.com/spreadsheets/d/#{self.spreadsheet_id}/gviz/tq?tqx=out:csv&sheet=#{sheet_name}&access_token=#{authorization.access_token}")
54
+ IO.copy_stream(csv, file_path)
55
+ end
56
+ when 'xlsx'
57
+ service = Google::Apis::DriveV3::DriveService.new
58
+ service.client_options.application_name = APPLICATION_NAME
59
+ service.authorization = authorization
60
+ service.export_file(self.spreadsheet_id,
61
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
62
+ download_dest: self.xlsx_path)
63
+ end
64
+
65
+ if Dir["#{export_to}/*"].any?
54
66
  puts 'Download from google finished'.green
55
67
  else
56
68
  ErrorUtil::DownloadFromGoogleFail.new.raise
@@ -61,8 +73,8 @@ module Applocale
61
73
  failauth
62
74
  rescue Google::Apis::ServerError => e
63
75
  failauth
64
- rescue
65
- ErrorUtil::DownloadFromGoogleFail.new.raise
76
+ rescue => execption
77
+ ErrorUtil.raise(execption)
66
78
  end
67
79
  end
68
80
 
@@ -108,6 +120,7 @@ module Applocale
108
120
  credentials = authorizer.get_and_store_credentials_from_code(
109
121
  user_id: user_id, code: code, base_url: OOB_URI)
110
122
  end
123
+ credentials.refresh! if credentials.expired?
111
124
  credentials
112
125
  end
113
126
 
@@ -0,0 +1,114 @@
1
+ require File.expand_path('../../setting.rb', __FILE__)
2
+ require File.expand_path('../../../Util/error_util.rb', __FILE__)
3
+ require File.expand_path('../../../Util/regex_util.rb', __FILE__)
4
+ require File.expand_path('../../ParseModel/parse_model_module.rb', __FILE__)
5
+
6
+ require 'colorize'
7
+ require 'csv'
8
+
9
+ module Applocale
10
+ class ParseCSV
11
+
12
+ @sheetcontent_list = nil
13
+ @allkey_dict = {}
14
+ @all_error = nil
15
+
16
+ @platform
17
+ @csv_directory
18
+ @langlist
19
+ @sheetobj_list
20
+
21
+ def initialize(platfrom, csv_directory, langlist, sheetobj_list)
22
+ @platform = platfrom
23
+ @csv_directory = csv_directory
24
+ @langlist = langlist
25
+ @sheetobj_list = sheetobj_list
26
+ @sheetcontent_list = Array.new
27
+ @allkey_dict = {}
28
+ @all_error = Array.new
29
+ # puts "Start to Parse CSV: \"#{csv_directory}\" ...".green
30
+ parse
31
+ end
32
+
33
+ def parse
34
+ @sheetcontent_list = @sheetobj_list.map do |sheet_obj|
35
+ sheet_name = sheet_obj.sheetname
36
+ sheet_content = ParseModelModule::SheetContent.new(sheet_name)
37
+
38
+ csv_path = File.expand_path("#{sheet_name}.csv", @csv_directory)
39
+ unless File.exist? csv_path
40
+ ErrorUtil.warning("File does not exist: #{csv_path}")
41
+ next
42
+ end
43
+ rows = CSV.read(csv_path)
44
+ header = find_header(sheet_obj, rows)
45
+ sheet_content.header_rowno = header[:header_row_index]
46
+ sheet_content.keyStr_with_colno = header[:key_header_info]
47
+ sheet_content.lang_with_colno_list = header[:language_header_list]
48
+
49
+ rows.each_with_index do |row, index|
50
+ next if sheet_content.header_rowno == index
51
+ row_content = parse_row(sheet_name, index, row, sheet_content.keyStr_with_colno, sheet_content.lang_with_colno_list)
52
+ handle_duplicate_key_if_any!(row_content)
53
+ sheet_content.rowinfo_list.push(row_content)
54
+ end
55
+ sheet_content
56
+ end
57
+ end
58
+
59
+ def result
60
+ @sheetcontent_list
61
+ end
62
+
63
+ def find_header(sheet, rows)
64
+ sheet_name = sheet.sheetname
65
+ sheet_info_obj = sheet.obj
66
+ sheet_language_list = sheet_info_obj.lang_headers
67
+ sheet_key_header = sheet_info_obj.key_header
68
+
69
+ header_row_index = rows.index do |row|
70
+ row.include?(sheet_key_header)
71
+ end
72
+
73
+ header_row_info = rows[header_row_index] unless header_row_index.nil?
74
+ header_column_index = header_row_info&.index { |cell| cell == sheet_key_header }
75
+ if header_row_index.nil? || header_column_index.nil?
76
+ raise "ParseCSVError: Header not found in sheet #{sheet_name}"
77
+ end
78
+ key_header_info = ParseModelModule::KeyStrWithColNo.new(sheet_key_header, header_column_index)
79
+
80
+ language_header_list = sheet_language_list.map do |key, value|
81
+ cell_index = header_row_info.index { |cell| cell == value }
82
+ cell_index.nil? ? nil : ParseModelModule::LangWithColNo.new(value, key, cell_index)
83
+ end.compact
84
+ unless language_header_list.length == sheet_language_list.length
85
+ raise "ParseCSVError: Wrong language keys in sheet #{sheet_name}"
86
+ end
87
+ {
88
+ header_row_index: header_row_index,
89
+ key_header_info: key_header_info,
90
+ language_header_list: language_header_list
91
+ }
92
+ end
93
+
94
+ def parse_row(sheet_name, index, row, key_header_info, language_header_list)
95
+ key_str = row[key_header_info.colno]
96
+
97
+ unless ValidKey.is_validkey(@platform, key_str)
98
+ raise "ParseCSVError: Invaild Key in sheet #{sheet_name}, row: #{index}, key_str: #{key_str}"
99
+ end
100
+ rowinfo = ParseModelModule::RowInfo.new(sheet_name, index, key_str)
101
+ rowinfo.content_dict = Hash[language_header_list.map { |language_header| [language_header.lang, ContentUtil.from_excel(row[language_header.colno] || '')] }]
102
+ rowinfo
103
+ end
104
+
105
+ def handle_duplicate_key_if_any!(row_content)
106
+ previous_row_content = @allkey_dict[row_content.key_str.downcase]
107
+ if previous_row_content.nil?
108
+ @allkey_dict[row_content.key_str.downcase] = row_content
109
+ else
110
+ raise "ParseCSVError:: Duplicate keys:\n sheet #{row_content.sheetname}, row: #{row_content.rowno}, key_str: #{row_content.key_str}\nduplicateWithSheet: #{previous_row_content.sheetname}, row: #{previous_row_content.rowno}, key_str: #{previous_row_content.key_str}"
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,88 @@
1
+ module Applocale
2
+ module ParseModelModule
3
+ class SheetContent
4
+ attr_accessor :sheetname, :header_rowno, :keyStr_with_colno, :lang_with_colno_list, :rowinfo_list, :comment
5
+ def initialize(sheetname)
6
+ self.sheetname = sheetname
7
+ self.rowinfo_list = Array.new
8
+ self.lang_with_colno_list = Array.new
9
+ self.comment = sheetname
10
+ end
11
+
12
+ def get_rowInfo_sortby_key
13
+ return self.rowinfo_list.sort_by { |obj| obj.key_str.to_s }
14
+ end
15
+
16
+ def get_rowInfo_sortby_rowno
17
+ return self.rowinfo_list.sort_by { |obj| obj.rowno.to_i }
18
+ end
19
+
20
+ def to_s
21
+ str_keyStr_with_colno = ''
22
+ unless keyStr_with_colno.nil?
23
+ str_keyStr_with_colno = "\n\t#{keyStr_with_colno.to_s}"
24
+ end
25
+ str_lang_with_colno_list = ''
26
+ self.lang_with_colno_list.each do |langWithColNo|
27
+ str_lang_with_colno_list += "\n\t#{langWithColNo.to_s}"
28
+ end
29
+ str_contentlist = '\n'
30
+ self.get_rowInfo_sortby_rowno.each do |value|
31
+ str_contentlist += "\t #{value.to_s}\n"
32
+ end
33
+ "sheetname = #{sheetname}\n" +
34
+ "header_rowno = #{header_rowno}\n" +
35
+ "keyStrWithColNo = #{str_keyStr_with_colno}\n" +
36
+ "langWithColNo_list = #{str_lang_with_colno_list}\n" +
37
+ "rowinfo_list = #{str_contentlist}"
38
+ end
39
+ end
40
+
41
+ class RowInfo
42
+
43
+ attr_accessor :sheetname, :rowno, :key_str, :content_dict
44
+
45
+ def initialize(sheetname = nil, rowno = nil, key_str = nil)
46
+ self.sheetname = sheetname
47
+ self.rowno = rowno
48
+ self.key_str = key_str
49
+ self.content_dict = {}
50
+ end
51
+
52
+ def to_s
53
+ "sheetname = #{sheetname}, rowno = #{rowno}, key_str = #{key_str}, content_dict = #{content_dict}"
54
+ end
55
+
56
+ end
57
+
58
+ class KeyStrWithColNo
59
+
60
+ attr_accessor :header_str, :colno
61
+
62
+ def initialize(header_str, colno)
63
+ self.header_str = header_str
64
+ self.colno = colno
65
+ end
66
+
67
+ def to_s
68
+ "{header_str => #{header_str}, colno => #{colno}}"
69
+ end
70
+
71
+ end
72
+
73
+ class LangWithColNo
74
+ attr_accessor :header_str, :lang, :colno
75
+
76
+ def initialize(header_str, lang, colno)
77
+ self.header_str = header_str
78
+ self.lang = lang
79
+ self.colno = colno
80
+ end
81
+
82
+ def to_s
83
+ "{header_str => #{header_str}, lang => #{lang}, colno => #{colno}}"
84
+ end
85
+
86
+ end
87
+ end
88
+ end
@@ -2,6 +2,7 @@ require File.expand_path('../../setting.rb', __FILE__)
2
2
  require File.expand_path('../parse_xlsx_module.rb', __FILE__)
3
3
  require File.expand_path('../../../Util/error_util.rb', __FILE__)
4
4
  require File.expand_path('../../../Util/regex_util.rb', __FILE__)
5
+ require File.expand_path('../../ParseModel/parse_model_module.rb', __FILE__)
5
6
 
6
7
  require 'rubyXL'
7
8
  require 'colorize'
@@ -46,7 +47,12 @@ module Applocale
46
47
  ErrorUtil::CannotOpenXlsxFile.new(@xlsxpath).raise
47
48
  end
48
49
  sheetnamelist = Applocale::Config::Sheet.get_sheetlist(@sheetobj_list)
49
- workbook.worksheets.each do |worksheet|
50
+ worksheets = workbook.worksheets
51
+ sorted_worksheets = sheetnamelist
52
+ .map { |sheet_name| worksheets.find { |worksheet| worksheet.sheet_name == sheet_name } }
53
+ .compact
54
+
55
+ sorted_worksheets.each do |worksheet|
50
56
  sheetname = worksheet.sheet_name
51
57
  sheetinfoobj = Applocale::Config::Sheet.get_sheetobj_by_sheetname(@sheetobj_list, sheetname)
52
58
  if sheetinfoobj.nil?
@@ -54,7 +60,7 @@ module Applocale
54
60
  end
55
61
  sheetnamelist.delete(sheetname)
56
62
 
57
- sheetcontent = ParseXLSXModule::SheetContent.new(sheetname)
63
+ sheetcontent = ParseModelModule::SheetContent.new(sheetname)
58
64
  if sheetinfoobj.is_a? Applocale::Config::SheetInfoByRow
59
65
  keycolno = Applocale::ParseXLSXModule::Helper.collabel_to_colno(sheetinfoobj.key_col)
60
66
  sheetinfoobj.to_keyStrWithColNo(sheetcontent)
@@ -121,7 +127,7 @@ module Applocale
121
127
  end
122
128
 
123
129
  unless keystr.nil?
124
- rowinfo = ParseXLSXModule::RowInfo.new(sheetname, rowno, keystr)
130
+ rowinfo = ParseModelModule::RowInfo.new(sheetname, rowno, keystr)
125
131
  lang_with_colno_list.each do |lang_with_colno|
126
132
  cell = cells[lang_with_colno.colno - 1]
127
133
  val = cell && cell.value
@@ -139,7 +145,7 @@ module Applocale
139
145
  if ValidKey.is_validkey(@platform, new_value)
140
146
  return new_value
141
147
  else
142
- rowinfo = ParseXLSXModule::RowInfo.new(nil, nil, value)
148
+ rowinfo = ParseModelModule::RowInfo.new(nil, nil, value)
143
149
  raise ErrorUtil::ParseXlsxError::InValidKey.new(rowinfo)
144
150
  end
145
151
  end
@@ -162,11 +168,11 @@ module Applocale
162
168
  value = cell && cell.value
163
169
  unless value.nil?
164
170
  if value == sheetinfoobj.key_header && keystr_with_colno.nil?
165
- keystr_with_colno = ParseXLSXModule::KeyStrWithColNo.new(value, colno)
171
+ keystr_with_colno = ParseModelModule::KeyStrWithColNo.new(value, colno)
166
172
  else
167
173
  sheetinfoobj.lang_headers.each do |lang, keyforlang|
168
174
  if value == keyforlang && k_header_lang_dict.index(lang).nil?
169
- lang_with_colno_list.push(ParseXLSXModule::LangWithColNo.new(keyforlang, lang, colno))
175
+ lang_with_colno_list.push(ParseModelModule::LangWithColNo.new(keyforlang, lang, colno))
170
176
  k_header_lang_dict.push(lang)
171
177
  end
172
178
  end
@@ -14,94 +14,6 @@ module Applocale
14
14
  return number
15
15
  end
16
16
  end
17
-
18
-
19
- class SheetContent
20
- attr_accessor :sheetname, :header_rowno, :keyStr_with_colno, :lang_with_colno_list, :rowinfo_list, :comment
21
-
22
- def initialize(sheetname)
23
- self.sheetname = sheetname
24
- self.rowinfo_list = Array.new
25
- self.lang_with_colno_list = Array.new
26
- self.comment = sheetname
27
- end
28
-
29
- def get_rowInfo_sortby_key
30
- return self.rowinfo_list.sort_by { |obj| obj.key_str.to_s }
31
- end
32
-
33
- def get_rowInfo_sortby_rowno
34
- return self.rowinfo_list.sort_by { |obj| obj.rowno.to_i }
35
- end
36
-
37
- def to_s
38
- str_keyStr_with_colno = ''
39
- unless keyStr_with_colno.nil?
40
- str_keyStr_with_colno = "\n\t#{keyStr_with_colno.to_s}"
41
- end
42
- str_lang_with_colno_list = ''
43
- self.lang_with_colno_list.each do |langWithColNo|
44
- str_lang_with_colno_list += "\n\t#{langWithColNo.to_s}"
45
- end
46
- str_contentlist = '\n'
47
- self.get_rowInfo_sortby_rowno.each do |value|
48
- str_contentlist += "\t #{value.to_s}\n"
49
- end
50
- "sheetname = #{sheetname}\n" +
51
- "header_rowno = #{header_rowno}\n" +
52
- "keyStrWithColNo = #{str_keyStr_with_colno}\n" +
53
- "langWithColNo_list = #{str_lang_with_colno_list}\n" +
54
- "rowinfo_list = #{str_contentlist}"
55
- end
56
- end
57
-
58
- class RowInfo
59
-
60
- attr_accessor :sheetname, :rowno, :key_str, :content_dict
61
-
62
- def initialize(sheetname = nil, rowno = nil, key_str = nil)
63
- self.sheetname = sheetname
64
- self.rowno = rowno
65
- self.key_str = key_str
66
- self.content_dict = {}
67
- end
68
-
69
- def to_s
70
- "sheetname = #{sheetname}, rowno = #{rowno}, key_str = #{key_str}, content_dict = #{content_dict}"
71
- end
72
-
73
- end
74
-
75
- class KeyStrWithColNo
76
-
77
- attr_accessor :header_str, :colno
78
-
79
- def initialize(header_str, colno)
80
- self.header_str = header_str
81
- self.colno = colno
82
- end
83
-
84
- def to_s
85
- "{header_str => #{header_str}, colno => #{colno}}"
86
- end
87
-
88
- end
89
-
90
- class LangWithColNo
91
- attr_accessor :header_str, :lang, :colno
92
-
93
- def initialize(header_str, lang, colno)
94
- self.header_str = header_str
95
- self.lang = lang
96
- self.colno = colno
97
- end
98
-
99
- def to_s
100
- "{header_str => #{header_str}, lang => #{lang}, colno => #{colno}}"
101
- end
102
-
103
- end
104
-
105
17
  end
106
18
  end
107
19
 
@@ -112,15 +24,14 @@ module Applocale
112
24
  def to_keyStrWithColNo(sheetcontent)
113
25
  sheetcontent.header_rowno = self.row
114
26
  keycolno = Applocale::ParseXLSXModule::Helper.collabel_to_colno(self.key_col)
115
- sheetcontent.keyStr_with_colno = ParseXLSXModule::KeyStrWithColNo.new(nil, keycolno)
27
+ sheetcontent.keyStr_with_colno = Applocale::ParseModelModule::KeyStrWithColNo.new(nil, keycolno)
116
28
  sheetcontent.lang_with_colno_list = Array.new
117
29
  self.lang_cols.each do |lang, collabel|
118
30
  colno = Applocale::ParseXLSXModule::Helper.collabel_to_colno(collabel)
119
- obj = ParseXLSXModule::LangWithColNo.new(nil,lang, colno)
31
+ obj = Applocale::ParseModelModule::LangWithColNo.new(nil,lang, colno)
120
32
  sheetcontent.lang_with_colno_list.push(obj)
121
33
  end
122
34
  end
123
35
  end
124
36
  end
125
- end
126
-
37
+ end
@@ -4,6 +4,7 @@ require File.expand_path('../../Util/error_util.rb', __FILE__)
4
4
  require File.expand_path('../../Util/config_util.rb', __FILE__)
5
5
  require File.expand_path('../GoogleHepler/google_helper.rb', __FILE__)
6
6
  require File.expand_path('../ParseXLSX/parse_xlsx', __FILE__)
7
+ require File.expand_path('../ParseCSV/parse_csv', __FILE__)
7
8
  require File.expand_path('../ParserStringFile/parse_localized_resource.rb', __FILE__)
8
9
  require File.expand_path('../convert_to_localefile', __FILE__)
9
10
  require File.expand_path('../FindStrKey/find_str_key', __FILE__)
@@ -48,12 +49,12 @@ module Applocale
48
49
  setting.google_credentials_path = File.expand_path(FilePathUtil.default_google_credentials_filename, File.dirname(setting.configfile_pathstr))
49
50
  end
50
51
  googleobj = Applocale::GoogleHelper.new(setting.link, setting.google_credentials_path, setting.xlsxpath)
51
- googleobj.download
52
+ googleobj.download(setting.sheet_obj_list, export_format: setting.export_format, export_to: setting.export_to)
52
53
  else
53
54
  download = open(setting.link)
54
55
  IO.copy_stream(download, setting.xlsxpath)
55
56
  end
56
- Applocale.start_local_update( setting, proj_path)
57
+ Applocale.start_local_update(setting, proj_path)
57
58
  end
58
59
 
59
60
  def self.start_local_update(asetting = nil, projpath = Dir.pwd)
@@ -65,8 +66,13 @@ module Applocale
65
66
  obj = Applocale::Config::ConfigUtil.new(proj_apath)
66
67
  setting = obj.load_configfile_to_setting
67
68
  end
68
- parse_xlsx = Applocale::ParseXLSX.new(setting.platform, setting.xlsxpath, setting.lang_path_list, setting.sheet_obj_list)
69
- ConvertToStrFile.convert(setting.platform, setting.lang_path_list,parse_xlsx.result, setting.rubycode)
69
+ case setting.export_format
70
+ when 'csv'
71
+ parser = Applocale::ParseCSV.new(setting.platform, setting.export_to, setting.lang_path_list, setting.sheet_obj_list)
72
+ when 'xlsx'
73
+ parser = Applocale::ParseXLSX.new(setting.platform, setting.xlsxpath, setting.lang_path_list, setting.sheet_obj_list)
74
+ end
75
+ ConvertToStrFile.convert(setting.platform, setting.lang_path_list,parser.result, setting.rubycode)
70
76
  end
71
77
 
72
78
  def self.start_reverse( is_skip, projpath = Dir.pwd)
@@ -1,4 +1,5 @@
1
1
  require 'colorize'
2
+ require 'colorize'
2
3
  # module Applocale
3
4
  # class Setting
4
5
  # class <<self
@@ -21,7 +22,7 @@ require 'colorize'
21
22
  module Applocale
22
23
  module Config
23
24
  class Setting
24
- attr_accessor :configfile_pathstr, :link, :platform, :xlsxpath, :google_credentials_path, :lang_path_list, :sheet_obj_list, :rubycode
25
+ attr_accessor :configfile_pathstr, :link, :platform, :xlsxpath, :google_credentials_path, :lang_path_list, :sheet_obj_list, :rubycode, :export_format, :export_to
25
26
  def initialize(configfile_pathstr)
26
27
  self.configfile_pathstr = configfile_pathstr
27
28
  self.lang_path_list = Array.new
@@ -44,6 +45,8 @@ module Applocale
44
45
  puts " #{sheet_obj.to_s}"
45
46
  end
46
47
 
48
+ puts " export_format: #{export_format}"
49
+ puts " export_to: #{export_to}"
47
50
  # puts self.rubycode
48
51
 
49
52
  end
@@ -34,6 +34,7 @@ module Applocale
34
34
  newline = newline.gsub("\#{path_en_US}", FilePathUtil.default_localefile_relative_pathstr(platform, Locale::EN_US))
35
35
  newline = newline.gsub("\#{xlsxpath}", FilePathUtil.default_xlsx_relativepath_str)
36
36
  newline = newline.gsub("\#{google_credentials_path}", FilePathUtil.default_google_credentials_filename)
37
+ newline = newline.gsub("\#{export_format}", FilePathUtil.default_export_format.to_s)
37
38
  to.puts(newline)
38
39
  end
39
40
  end
@@ -80,7 +81,8 @@ module Applocale
80
81
  google_credentials_path = config_yaml['google_credentials_path'].to_s.strip
81
82
  langlist = config_yaml['langlist']
82
83
  sheetname = config_yaml['sheetname']
83
-
84
+ export_format = config_yaml['export_format']
85
+ export_to = config_yaml['export_to']
84
86
 
85
87
  setting = Applocale::Config::Setting.new(self.configfile_pathstr)
86
88
  setting.rubycode = rubycode
@@ -105,9 +107,19 @@ module Applocale
105
107
  end
106
108
  end
107
109
 
110
+ case export_format
111
+ when 'csv', 'xlsx'
112
+ setting.export_format = export_format
113
+ else
114
+ error = ErrorUtil::ConfigFileInValid.new("[export_format] for item can only be 'csv' or 'xlsx' ")
115
+ error_list.push(error)
116
+ end
117
+
118
+ setting.export_to = FilePathUtil.default_export_to
119
+
108
120
  if !(xlsxpath.nil? || xlsxpath.length == 0)
109
121
  if !(Pathname.new xlsxpath).absolute?
110
- setting.xlsxpath = File.expand_path(xlsxpath, File.dirname(self.configfile_pathstr))
122
+ setting.xlsxpath = File.expand_path(xlsxpath, setting.export_to)
111
123
  else
112
124
  setting.xlsxpath = xlsxpath
113
125
  end
@@ -205,4 +205,17 @@ module Applocale
205
205
  end
206
206
  end
207
207
  end
208
+ end
209
+
210
+ module Applocale
211
+ module ErrorUtil
212
+ def self.warning(message)
213
+ puts "** Warning: #{message}".yellow
214
+ end
215
+
216
+ def self.raise(message)
217
+ puts "** Error: #{message}".red
218
+ abort('')
219
+ end
220
+ end
208
221
  end
@@ -10,6 +10,7 @@ module Applocale
10
10
  FILENAME_CONFIG = 'AppLocaleFile'
11
11
  FILENAME_XLSX = 'string.xlsx'
12
12
  GOOGLE_CREDENTIALS = 'google_credentials.yaml'
13
+ EXPORT_FORMAT = 'xlsx'
13
14
 
14
15
  def self.get_proj_absoluat_path(proj_path)
15
16
  path = proj_path
@@ -27,10 +28,15 @@ module Applocale
27
28
  return FILENAME_CONFIG
28
29
  end
29
30
 
31
+ def self.default_export_to
32
+ return DIRNAME_MAIN + "/Resource"
33
+ end
34
+
30
35
  def self.default_mainfolder
31
36
  return DIRNAME_MAIN
32
37
  end
33
38
 
39
+
34
40
  def self.default_localefile_relative_pathstr(platform, lang)
35
41
  if platform == Platform::IOS
36
42
  dirname = DIRNAME_IOS
@@ -49,6 +55,10 @@ module Applocale
49
55
  return filename
50
56
  end
51
57
 
58
+ def self.default_export_format
59
+ EXPORT_FORMAT
60
+ end
61
+
52
62
  def self.str_to_folderpathstr(str)
53
63
  pathstr = Pathname.new(str.strip)
54
64
  if File.directory?(pathstr)
@@ -1,3 +1,3 @@
1
1
  module Applocale
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: applocale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kennix
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-10 00:00:00.000000000 Z
11
+ date: 2018-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,8 +115,8 @@ dependencies:
115
115
  - !ruby/object:Gem::Version
116
116
  version: 3.3.23
117
117
  description: It can convert file between string and xlsx, also support download xlsx
118
- from google. You can also setup conversion logic for string value of each project.
119
- Support ios and android.
118
+ or csv from google. You can also setup conversion logic for string value of each
119
+ project. Support ios and android.
120
120
  email:
121
121
  - kennixdev@gmail.com
122
122
  executables:
@@ -134,6 +134,8 @@ files:
134
134
  - lib/applocale/Core/FindStrKey/find_str_key_result.rb
135
135
  - lib/applocale/Core/GoogleHepler/client_secret.json
136
136
  - lib/applocale/Core/GoogleHepler/google_helper.rb
137
+ - lib/applocale/Core/ParseCSV/parse_csv.rb
138
+ - lib/applocale/Core/ParseModel/parse_model_module.rb
137
139
  - lib/applocale/Core/ParseXLSX/parse_xlsx.rb
138
140
  - lib/applocale/Core/ParseXLSX/parse_xlsx_module.rb
139
141
  - lib/applocale/Core/ParserStringFile/parse_localized_resource.rb
@@ -170,8 +172,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
172
  version: '0'
171
173
  requirements: []
172
174
  rubyforge_project:
173
- rubygems_version: 2.5.1
175
+ rubygems_version: 2.6.6
174
176
  signing_key:
175
177
  specification_version: 4
176
178
  summary: for mobile application to manage locale
177
179
  test_files: []
180
+ has_rdoc: