applocale 0.2.4 → 0.2.5

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: b646796e6550e90db34d2e04dc0307e866678f71
4
- data.tar.gz: 0a4b6c15a6a6e5249bfad7e691bda976a8eb1b29
3
+ metadata.gz: c867fde40c4818fa8274896d0386329514bc356b
4
+ data.tar.gz: 572063f121578458ff781751eda3a4a5ca7104ca
5
5
  SHA512:
6
- metadata.gz: 43a409329ac1701dde09c3a091273b206b9b79f0aa50cbf91af9ea0d033d91a1ce871c2b7ffea1dc761b90fd3f9f573840e243d4fa2adfc2492b1e1f5ff4ba02
7
- data.tar.gz: 7e2977f7fde645c2067a15e0861c50d1d3e23c5ecf663f8e323dc74e64d47ade2fb3ac2a7e4004a36ce499ba1d33147f3f983bc87a786e50bea9948d96cac4aa
6
+ metadata.gz: e77ca0d49da189afc99bc5d94a16dc600c9bc53bde9bb26c99456e53a158059bb89f78bcb63ca503516a7ec4e98b260018221b73374bdf727bc6acc541a03f4c
7
+ data.tar.gz: 4fe91b4192ac5a3cb4b4d861a07f18cdf03bc039e3b8c4a27e0743d37143b41a736fe46dde4c85701f9675ac6401f9a6eef8d4137e55db4d91728122c2513d0e
@@ -12,7 +12,7 @@ require 'thor'
12
12
  module Applocale
13
13
  class Command
14
14
  class Init < Thor
15
- desc "init [platform]", "Create Config File, platform: ios | android"
15
+ desc "init [platform]", "Create Config File, platform: ios | android | json"
16
16
  option :path, :desc => "Project dir path"
17
17
  def init(platform = nil)
18
18
  Applocale.create_config_file(platform, options[:path])
@@ -38,9 +38,11 @@ module Applocale
38
38
  if @platform == Platform::IOS
39
39
  result = self.parse_ios
40
40
  write_to_xlsx(@xlsxpath, sheetobj, result[:errorlist], result[:content], result[:keylist])
41
- else
41
+ elsif @platform == Platform::ANDROID
42
42
  result = self.parse_android
43
43
  write_to_xlsx(@xlsxpath, sheetobj, result[:errorlist], result[:content], result[:keylist])
44
+ else
45
+ ErrorUtil::CommandError.new('Platform not supported').raise
44
46
  end
45
47
  end
46
48
 
@@ -4,7 +4,7 @@ require File.expand_path('../../Util/regex_util.rb', __FILE__)
4
4
  require File.expand_path('../../Util/injection.rb', __FILE__)
5
5
 
6
6
  require 'colorize'
7
-
7
+ require 'json'
8
8
 
9
9
  module Applocale
10
10
  class ConvertToStrFile
@@ -19,6 +19,8 @@ module Applocale
19
19
  self.convert_to_stringfile(platform, langpath_obj, sheetcontent_list, injectObj)
20
20
  elsif platform == Platform::ANDROID
21
21
  self.convert_to_xml(platform, langpath_obj, sheetcontent_list, injectObj)
22
+ elsif platform == Platform::JSON
23
+ self.convert_to_json(platform, langpath_obj, sheetcontent_list, injectObj)
22
24
  end
23
25
  end
24
26
  puts 'Convert Finished !!!'.green
@@ -62,6 +64,28 @@ module Applocale
62
64
  target.close
63
65
  end
64
66
 
67
+ def self.convert_to_json(platform, lang_path_obj, sheet_content_list, inject_obj)
68
+ FileUtils.mkdir_p(File.dirname(lang_path_obj.filepath))
69
+ hash = sheet_content_list.map do |sheet_content|
70
+ sheet_content.get_rowInfo_sortby_key.map do |row|
71
+ content = ContentUtil.remove_escaped_new_line(row.content_dict[lang_path_obj.lang])
72
+ value = add_escape(platform, lang_path_obj.lang, row.key_str, content, inject_obj)
73
+ [row.key_str, value]
74
+ end.to_h
75
+ end.reduce({}, :merge)
76
+ section_last_row = sheet_content_list
77
+ .map {|sheet_content| sheet_content.get_rowInfo_sortby_key.last&.key_str }
78
+ .compact
79
+ .reverse
80
+ .drop(1)
81
+ .reverse
82
+ json = JSON.pretty_generate(hash)
83
+ section_last_row.each { |row| json.gsub!(/(.*)("#{row}")(.*)/, '\1\2\3' + "\n") }
84
+ target = open(lang_path_obj.filepath, 'w')
85
+ target.puts(json)
86
+ target.close
87
+ end
88
+
65
89
  def self.add_escape(platform, lang, key, content, injectObj)
66
90
  value = content
67
91
  if injectObj.has_before_convent_to_locale
@@ -23,13 +23,13 @@ module Applocale
23
23
  elsif Dir.glob("#{proj_apath}/**/*.gradle").length > 0
24
24
  platformsybom = Platform::ANDROID
25
25
  else
26
- Applocale::ErrorUtil::CommandError.new("Mssing [platform] : ios | android ").raise
26
+ Applocale::ErrorUtil::CommandError.new("Missing [platform] : ios | android | json").raise
27
27
  end
28
28
  else
29
29
  platformsybom = Platform.init(platformStr.strip)
30
30
  end
31
31
  if platformsybom.nil?
32
- ErrorUtil::CommandError.new("Invalid [platform] : ios | android ").raise
32
+ ErrorUtil::CommandError.new("Invalid [platform] : ios | android | json").raise
33
33
  else
34
34
  Applocale::Config::ConfigUtil.create_configfile_ifneed(platformsybom,proj_apath.to_s )
35
35
  end
@@ -100,7 +100,7 @@ module Applocale
100
100
  error_list.push(error)
101
101
  else
102
102
  if Platform.init(platform).nil?
103
- error = ErrorUtil::ConfigFileInValid.new("[platform] can only be 'ios' or 'android' ")
103
+ error = ErrorUtil::ConfigFileInValid.new("[platform] can only be 'ios', 'android' or 'json'.")
104
104
  error_list.push(error)
105
105
  else
106
106
  setting.platform = Platform.init(platform)
@@ -7,6 +7,7 @@ module Applocale
7
7
  DIRNAME_MAIN = 'AppLocale'
8
8
  DIRNAME_IOS = 'IOS'
9
9
  DIRNAME_ANDROID = 'Android'
10
+ DIRNAME_JSON = 'locales'
10
11
  FILENAME_CONFIG = 'AppLocaleFile'
11
12
  FILENAME_XLSX = 'string.xlsx'
12
13
  GOOGLE_CREDENTIALS = 'google_credentials.yaml'
@@ -42,6 +43,8 @@ module Applocale
42
43
  dirname = DIRNAME_IOS
43
44
  elsif platform == Platform::ANDROID
44
45
  dirname = DIRNAME_ANDROID
46
+ elsif platform == Platform::JSON
47
+ dirname = DIRNAME_JSON
45
48
  end
46
49
  unless dirname.nil?
47
50
  filename = Locale.filename(platform, lang)
@@ -12,6 +12,8 @@ module Applocale
12
12
  return !FILENAME_IOS[locale].nil? ? FILENAME_IOS[locale] : "#{locale}.strings"
13
13
  elsif devicemodel == Platform::ANDROID
14
14
  return File.join(FILENAME_ANDROID[locale],'strings.xml')
15
+ elsif devicemodel == Platform::JSON
16
+ return "#{locale}.json"
15
17
  end
16
18
  return nil
17
19
  end
@@ -3,12 +3,15 @@ module Applocale
3
3
  module Platform
4
4
  IOS = :ios
5
5
  ANDROID = :Android
6
+ JSON = :json
6
7
 
7
8
  def self.init(platform)
8
9
  if platform.upcase == 'IOS'
9
10
  return Platform::IOS
10
11
  elsif platform.upcase == 'ANDROID'
11
12
  return Platform::ANDROID
13
+ elsif platform.upcase == 'JSON'
14
+ return Platform::JSON
12
15
  end
13
16
  return nil
14
17
  end
@@ -24,6 +27,8 @@ module Applocale
24
27
  if extn.downcase == '.xml'
25
28
  return true
26
29
  end
30
+ elsif platform == Platform::JSON
31
+ return extn.downcase == '.json'
27
32
  end
28
33
  return false
29
34
  end
@@ -90,5 +90,16 @@ module Applocale
90
90
  new_value = new_value.gsub(/\t/, "\\t")
91
91
  return new_value
92
92
  end
93
+
94
+ def self.remove_escaped_new_line(content)
95
+ reg = /(?<!\\)((?:\\{2})+)*\\"/
96
+ new_value = content.gsub(reg) {|match|
97
+ match.slice!(0)
98
+ match
99
+ }
100
+ new_value
101
+ .gsub(/\\n/, "\n")
102
+ .gsub(/\\t/, "\t")
103
+ end
93
104
  end
94
105
  end
@@ -1,3 +1,3 @@
1
1
  module Applocale
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: applocale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kennix
@@ -173,9 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  version: '0'
174
174
  requirements: []
175
175
  rubyforge_project:
176
- rubygems_version: 2.6.6
176
+ rubygems_version: 2.6.10
177
177
  signing_key:
178
178
  specification_version: 4
179
179
  summary: for mobile application to manage locale
180
180
  test_files: []
181
- has_rdoc: