web_translate_it 2.5.2 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
1
  module WebTranslateIt
3
-
4
2
  # Handles the configuration of your project, both via the the configuration file
5
3
  # and via the API.
6
4
  # Implementation example, assuming you have a valid .wti file:
@@ -11,25 +9,25 @@ module WebTranslateIt
11
9
  require 'yaml'
12
10
  require 'fileutils'
13
11
  require 'erb'
14
- attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :needed_locales
15
- attr_accessor :logger, :before_pull, :after_pull, :before_push, :after_push, :project_name, :path_to_config_file
16
-
12
+ attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :needed_locales, :logger, :before_pull, :after_pull, :before_push, :after_push, :project_name, :path_to_config_file, :ignore_files
13
+
17
14
  # Load configuration file from the path.
18
- def initialize(root_path = Rails.root, path_to_config_file = ".wti")
15
+ def initialize(root_path = Rails.root, path_to_config_file = '.wti') # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
19
16
  self.path_to_config_file = path_to_config_file
20
17
  self.path = root_path
21
18
  self.logger = logger
22
- if File.exists?(File.expand_path(path_to_config_file, self.path))
23
- self.api_key = ENV["WTI_PROJECT_API_KEY"] || configuration['api_key']
19
+ if File.exist?(File.expand_path(path_to_config_file, path))
20
+ self.api_key = ENV['WTI_PROJECT_API_KEY'] || configuration['api_key']
24
21
  self.before_pull = configuration['before_pull']
25
22
  self.after_pull = configuration['after_pull']
26
23
  self.before_push = configuration['before_push']
27
24
  self.after_push = configuration['after_push']
28
- project_info = if RUBY_VERSION >= 3.1
29
- YAML.safe_load WebTranslateIt::Project.fetch_info(api_key), permitted_classes: [Time]
30
- else
31
- YAML.load WebTranslateIt::Project.fetch_info(api_key)
32
- end
25
+ self.ignore_files = configuration['ignore_files']
26
+ project_info = if RUBY_VERSION >= '3.1.0'
27
+ YAML.safe_load WebTranslateIt::Project.fetch_info(api_key), permitted_classes: [Time]
28
+ else
29
+ YAML.load WebTranslateIt::Project.fetch_info(api_key)
30
+ end
33
31
  set_locales_to_ignore(configuration)
34
32
  set_locales_needed(configuration)
35
33
  set_files(project_info['project'])
@@ -37,15 +35,15 @@ module WebTranslateIt
37
35
  WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
38
36
  self.project_name = project_info['project']['name']
39
37
  else
40
- puts StringUtil.failure("\nNo configuration file found in #{File.expand_path(path_to_config_file, self.path)}")
38
+ puts StringUtil.failure("\nNo configuration file found in #{File.expand_path(path_to_config_file, path)}")
41
39
  exit(1)
42
40
  end
43
41
  end
44
-
42
+
45
43
  # Reload project data
46
44
  #
47
- def reload
48
- project_info = YAML.load WebTranslateIt::Project.fetch_info(self.api_key)
45
+ def reload # rubocop:todo Metrics/AbcSize
46
+ project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
49
47
  set_locales_to_ignore(configuration)
50
48
  set_locales_needed(configuration)
51
49
  set_files(project_info['project'])
@@ -53,7 +51,7 @@ module WebTranslateIt
53
51
  WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
54
52
  self.project_name = project_info['project']['name']
55
53
  end
56
-
54
+
57
55
  # Set the project locales from the Project API.
58
56
  # Implementation example:
59
57
  #
@@ -61,40 +59,47 @@ module WebTranslateIt
61
59
  # locales = configuration.locales # returns an array of locales: ['en', 'fr', 'es', ...]
62
60
  def set_locales(project)
63
61
  self.source_locale = project['source_locale']['code']
64
- self.target_locales = project['target_locales'].map{|locale| locale['code']}
62
+ self.target_locales = project['target_locales'].map { |locale| locale['code'] }
65
63
  end
66
-
64
+
67
65
  # Set the project files from the Project API.
68
66
  # Implementation example:
69
67
  #
70
68
  # configuration = WebTranslateIt::Configuration.new
71
69
  # files = configuration.files # returns an array of TranslationFile
72
- def set_files(project)
70
+ def set_files(project) # rubocop:todo Metrics/AbcSize
73
71
  self.files = []
74
72
  project['project_files'].each do |project_file|
75
73
  if project_file['name'].nil? or project_file['name'].strip == ''
76
74
  puts "File #{project_file['id']} not set up"
75
+ elsif ignore_files&.any? { |glob| File.fnmatch(glob, project_file['name']) }
76
+ puts "Ignoring #{project_file['name']}"
77
77
  else
78
- self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'], project_file['fresh'])
78
+ files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'], project_file['fresh'])
79
79
  end
80
80
  end
81
81
  end
82
-
82
+
83
83
  # Set locales to ignore from the configuration file, if set.
84
84
  def set_locales_to_ignore(configuration)
85
- self.ignore_locales = Array(configuration['ignore_locales']).map{ |locale| locale.to_s }
85
+ self.ignore_locales = Array(configuration['ignore_locales']).map(&:to_s)
86
86
  end
87
87
 
88
88
  # Set locales to specifically pull from the configuration file, if set
89
89
  def set_locales_needed(configuration)
90
- self.needed_locales = Array(configuration['needed_locales']).map{ |locale| locale.to_s }
90
+ self.needed_locales = Array(configuration['needed_locales']).map(&:to_s)
91
+ end
92
+
93
+ # Set files to ignore from the configuration file, if set.
94
+ def set_ignore_files(configuration)
95
+ self.ignore_files = Array(configuration['ignore_files']).map(&:to_s)
91
96
  end
92
-
97
+
93
98
  # Convenience method which returns the endpoint for fetching a list of locales for a project.
94
99
  def api_url
95
100
  "/api/projects/#{api_key}.yaml"
96
101
  end
97
-
102
+
98
103
  # Returns a logger. If RAILS_DEFAULT_LOGGER is defined, use it, else, define a new logger.
99
104
  def logger
100
105
  if defined?(Rails.logger)
@@ -111,7 +116,7 @@ module WebTranslateIt
111
116
  private
112
117
 
113
118
  def parse_erb_in_configuration
114
- ERB.new(File.read(File.expand_path(path_to_config_file, self.path))).result
119
+ ERB.new(File.read(File.expand_path(path_to_config_file, path))).result
115
120
  end
116
121
  end
117
122
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module WebTranslateIt
3
2
  class Connection
4
3
  require 'net/http'
@@ -6,12 +5,12 @@ module WebTranslateIt
6
5
  require 'openssl'
7
6
  require 'uri'
8
7
  require 'ostruct'
9
-
8
+
10
9
  @@api_key = nil
11
10
  @@http_connection = nil
12
11
  @@debug = false
13
12
  @@silent = false
14
-
13
+
15
14
  #
16
15
  # Initialize and yield a HTTPS Keep-Alive connection to WebTranslateIt.com
17
16
  #
@@ -27,7 +26,7 @@ module WebTranslateIt
27
26
  # http_connection.request(request)
28
27
  # end
29
28
  #
30
- def initialize(api_key)
29
+ def initialize(api_key) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength
31
30
  @@api_key = api_key
32
31
  proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
33
32
  http = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).new('webtranslateit.com', 443)
@@ -39,7 +38,7 @@ module WebTranslateIt
39
38
  @@http_connection = http.start
40
39
  yield @@http_connection if block_given?
41
40
  rescue OpenSSL::SSL::SSLError
42
- puts "Unable to verify SSL certificate." unless @@silent
41
+ puts 'Unable to verify SSL certificate.' unless @@silent
43
42
  http = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).new('webtranslateit.com', 443)
44
43
  http.set_debug_output($stderr) if @@debug
45
44
  http.use_ssl = true
@@ -51,7 +50,7 @@ module WebTranslateIt
51
50
  puts $!
52
51
  end
53
52
  end
54
-
53
+
55
54
  def self.http_connection
56
55
  @@http_connection
57
56
  end
@@ -59,11 +58,11 @@ module WebTranslateIt
59
58
  def self.turn_debug_on
60
59
  @@debug = true
61
60
  end
62
-
61
+
63
62
  def self.turn_silent_on
64
63
  @@silent = true
65
64
  end
66
-
65
+
67
66
  def self.api_key
68
67
  @@api_key
69
68
  end
@@ -1,8 +1,6 @@
1
- # encoding: utf-8
2
1
  module WebTranslateIt
3
2
  class Project
4
-
5
- def self.fetch_info(api_key)
3
+ def self.fetch_info(api_key) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
6
4
  success = true
7
5
  tries ||= 3
8
6
  begin
@@ -10,16 +8,14 @@ module WebTranslateIt
10
8
  request = Net::HTTP::Get.new("/api/projects/#{api_key}.yaml")
11
9
  WebTranslateIt::Util.add_fields(request)
12
10
  response = http.request(request)
13
- if response.is_a?(Net::HTTPSuccess)
14
- return response.body
15
- else
16
- puts "An error occured while fetching the project information:"
17
- puts StringUtil.failure(response.body)
18
- exit 1
19
- end
11
+ return response.body if response.is_a?(Net::HTTPSuccess)
12
+
13
+ puts 'An error occured while fetching the project information:'
14
+ puts StringUtil.failure(response.body)
15
+ exit 1
20
16
  end
21
17
  rescue Timeout::Error
22
- puts "Request timeout. Will retry in 5 seconds."
18
+ puts 'Request timeout. Will retry in 5 seconds.'
23
19
  if (tries -= 1) > 0
24
20
  sleep(5)
25
21
  retry
@@ -31,8 +27,8 @@ module WebTranslateIt
31
27
  end
32
28
  success
33
29
  end
34
-
35
- def self.fetch_stats(api_key)
30
+
31
+ def self.fetch_stats(api_key) # rubocop:todo Metrics/MethodLength
36
32
  success = true
37
33
  tries ||= 3
38
34
  begin
@@ -42,7 +38,7 @@ module WebTranslateIt
42
38
  return Util.handle_response(http.request(request), true)
43
39
  end
44
40
  rescue Timeout::Error
45
- puts "Request timeout. Will retry in 5 seconds."
41
+ puts 'Request timeout. Will retry in 5 seconds.'
46
42
  if (tries -= 1) > 0
47
43
  sleep(5)
48
44
  retry
@@ -52,8 +48,8 @@ module WebTranslateIt
52
48
  end
53
49
  success
54
50
  end
55
-
56
- def self.create_locale(locale_code)
51
+
52
+ def self.create_locale(locale_code) # rubocop:todo Metrics/MethodLength
57
53
  success = true
58
54
  tries ||= 3
59
55
  begin
@@ -62,7 +58,7 @@ module WebTranslateIt
62
58
  request.set_form_data({ 'id' => locale_code }, ';')
63
59
  Util.handle_response(Connection.http_connection.request(request), true)
64
60
  rescue Timeout::Error
65
- puts "Request timeout. Will retry in 5 seconds."
61
+ puts 'Request timeout. Will retry in 5 seconds.'
66
62
  if (tries -= 1) > 0
67
63
  sleep(5)
68
64
  retry
@@ -72,8 +68,8 @@ module WebTranslateIt
72
68
  end
73
69
  success
74
70
  end
75
-
76
- def self.delete_locale(locale_code)
71
+
72
+ def self.delete_locale(locale_code) # rubocop:todo Metrics/MethodLength
77
73
  success = true
78
74
  tries ||= 3
79
75
  begin
@@ -81,7 +77,7 @@ module WebTranslateIt
81
77
  WebTranslateIt::Util.add_fields(request)
82
78
  Util.handle_response(Connection.http_connection.request(request), true)
83
79
  rescue Timeout::Error
84
- puts "Request timeout. Will retry in 5 seconds."
80
+ puts 'Request timeout. Will retry in 5 seconds.'
85
81
  if (tries -= 1) > 0
86
82
  sleep(5)
87
83
  retry
@@ -1,11 +1,10 @@
1
- # encoding: utf-8
2
1
  module WebTranslateIt
3
- class String
2
+ class String # rubocop:todo Metrics/ClassLength
4
3
  require 'multi_json'
5
-
4
+
6
5
  attr_accessor :id, :key, :plural, :type, :dev_comment, :word_count, :status, :category, :labels, :file,
7
6
  :created_at, :updated_at, :translations, :new_record
8
-
7
+
9
8
  # Initialize a new WebTranslateIt::String
10
9
  #
11
10
  # Implementation Example:
@@ -19,25 +18,25 @@ module WebTranslateIt
19
18
  # WebTranslateIt::String.new({ :key => "product_name_123", :translations => [translation_en, translation_fr]})
20
19
  #
21
20
  # to instantiate a new String with a source and target translation.
22
-
23
- def initialize(params = {})
21
+
22
+ def initialize(params = {}) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
24
23
  params.stringify_keys!
25
- self.id = params["id"] || nil
26
- self.key = params["key"] || nil
27
- self.plural = params["plural"] || nil
28
- self.type = params["type"] || nil
29
- self.dev_comment = params["dev_comment"] || nil
30
- self.word_count = params["word_count"] || nil
31
- self.status = params["status"] || nil
32
- self.category = params["category"] || nil
33
- self.labels = params["labels"] || nil
34
- self.file = params["file"] || nil
35
- self.created_at = params["created_at"] || nil
36
- self.updated_at = params["updated_at"] || nil
37
- self.translations = params["translations"] || []
24
+ self.id = params['id'] || nil
25
+ self.key = params['key'] || nil
26
+ self.plural = params['plural'] || nil
27
+ self.type = params['type'] || nil
28
+ self.dev_comment = params['dev_comment'] || nil
29
+ self.word_count = params['word_count'] || nil
30
+ self.status = params['status'] || nil
31
+ self.category = params['category'] || nil
32
+ self.labels = params['labels'] || nil
33
+ self.file = params['file'] || nil
34
+ self.created_at = params['created_at'] || nil
35
+ self.updated_at = params['updated_at'] || nil
36
+ self.translations = params['translations'] || []
38
37
  self.new_record = true
39
38
  end
40
-
39
+
41
40
  # Find a String based on filters
42
41
  #
43
42
  # Implementation Example:
@@ -49,27 +48,27 @@ module WebTranslateIt
49
48
  # puts strings.inspect #=> An array of WebTranslateIt::String objects
50
49
  #
51
50
  # to find and instantiate an array of String which key is like `product_name_123`.
52
-
53
- def self.find_all(params = {})
51
+
52
+ def self.find_all(params = {}) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
54
53
  success = true
55
54
  tries ||= 3
56
55
  params.stringify_keys!
57
56
  url = "/api/projects/#{Connection.api_key}/strings.yaml"
58
- url += '?' + HashUtil.to_params("filters" => params) unless params.empty?
57
+ url += "?#{HashUtil.to_params('filters' => params)}" unless params.empty?
59
58
 
60
59
  request = Net::HTTP::Get.new(url)
61
60
  WebTranslateIt::Util.add_fields(request)
62
61
  begin
63
62
  strings = []
64
- while(request) do
63
+ while request
65
64
  response = Connection.http_connection.request(request)
66
65
  YAML.load(response.body).each do |string_response|
67
66
  string = WebTranslateIt::String.new(string_response)
68
67
  string.new_record = false
69
68
  strings.push(string)
70
69
  end
71
- if response["Link"] && response["Link"].include?("rel=\"next\"")
72
- url = response["Link"].match(/<(.*)>; rel="next"/)[1]
70
+ if response['Link']&.include?('rel="next"')
71
+ url = response['Link'].match(/<(.*)>; rel="next"/)[1]
73
72
  request = Net::HTTP::Get.new(url)
74
73
  WebTranslateIt::Util.add_fields(request)
75
74
  else
@@ -78,7 +77,7 @@ module WebTranslateIt
78
77
  end
79
78
  return strings
80
79
  rescue Timeout::Error
81
- puts "Request timeout. Will retry in 5 seconds."
80
+ puts 'Request timeout. Will retry in 5 seconds.'
82
81
  if (tries -= 1) > 0
83
82
  sleep(5)
84
83
  retry
@@ -88,7 +87,7 @@ module WebTranslateIt
88
87
  end
89
88
  success
90
89
  end
91
-
90
+
92
91
  # Find a String based on its ID
93
92
  # Return a String object, or nil if not found.
94
93
  #
@@ -102,8 +101,8 @@ module WebTranslateIt
102
101
  #
103
102
  # to find and instantiate the String which ID is `1234`.
104
103
  #
105
-
106
- def self.find(id)
104
+
105
+ def self.find(id) # rubocop:todo Metrics/MethodLength
107
106
  success = true
108
107
  tries ||= 3
109
108
  request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/strings/#{id}.yaml")
@@ -111,11 +110,12 @@ module WebTranslateIt
111
110
  begin
112
111
  response = Connection.http_connection.request(request)
113
112
  return nil if response.code.to_i == 404
113
+
114
114
  string = WebTranslateIt::String.new(YAML.load(response.body))
115
115
  string.new_record = false
116
116
  return string
117
117
  rescue Timeout::Error
118
- puts "Request timeout. Will retry in 5 seconds."
118
+ puts 'Request timeout. Will retry in 5 seconds.'
119
119
  if (tries -= 1) > 0
120
120
  sleep(5)
121
121
  retry
@@ -125,7 +125,7 @@ module WebTranslateIt
125
125
  end
126
126
  success
127
127
  end
128
-
128
+
129
129
  # Update or create a String to WebTranslateIt.com
130
130
  #
131
131
  # Implementation Example:
@@ -136,11 +136,11 @@ module WebTranslateIt
136
136
  # string.save
137
137
  # end
138
138
  #
139
-
139
+
140
140
  def save
141
- self.new_record ? self.create : self.update
141
+ new_record ? create : update
142
142
  end
143
-
143
+
144
144
  # Delete a String on WebTranslateIt.com
145
145
  #
146
146
  # Implementation Example:
@@ -150,16 +150,16 @@ module WebTranslateIt
150
150
  # string.delete
151
151
  # end
152
152
  #
153
-
154
- def delete
153
+
154
+ def delete # rubocop:todo Metrics/MethodLength
155
155
  success = true
156
156
  tries ||= 3
157
- request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/strings/#{self.id}")
157
+ request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/strings/#{id}")
158
158
  WebTranslateIt::Util.add_fields(request)
159
159
  begin
160
160
  Util.handle_response(Connection.http_connection.request(request), true, true)
161
161
  rescue Timeout::Error
162
- puts "Request timeout. Will retry in 5 seconds."
162
+ puts 'Request timeout. Will retry in 5 seconds.'
163
163
  if (tries -= 1) > 0
164
164
  sleep(5)
165
165
  retry
@@ -169,7 +169,7 @@ module WebTranslateIt
169
169
  end
170
170
  success
171
171
  end
172
-
172
+
173
173
  # Gets a Translation for a String
174
174
  #
175
175
  # Implementation Example:
@@ -179,24 +179,25 @@ module WebTranslateIt
179
179
  # puts string.translation_for("fr") #=> A Translation object
180
180
  # end
181
181
  #
182
-
183
- def translation_for(locale)
182
+
183
+ def translation_for(locale) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
184
184
  success = true
185
185
  tries ||= 3
186
- translation = self.translations.detect{ |t| t.locale == locale }
186
+ translation = translations.detect { |t| t.locale == locale }
187
187
  return translation if translation
188
- return nil if self.new_record
189
- request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/strings/#{self.id}/locales/#{locale}/translations.yaml")
188
+ return nil if new_record
189
+
190
+ request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/strings/#{id}/locales/#{locale}/translations.yaml")
190
191
  WebTranslateIt::Util.add_fields(request)
191
192
  begin
192
193
  response = Util.handle_response(Connection.http_connection.request(request), true, true)
193
194
  hash = YAML.load(response)
194
195
  return nil if hash.empty?
196
+
195
197
  translation = WebTranslateIt::Translation.new(hash)
196
198
  return translation
197
-
198
199
  rescue Timeout::Error
199
- puts "Request timeout. Will retry in 5 seconds."
200
+ puts 'Request timeout. Will retry in 5 seconds.'
200
201
  if (tries -= 1) > 0
201
202
  sleep(5)
202
203
  retry
@@ -206,28 +207,28 @@ module WebTranslateIt
206
207
  end
207
208
  success
208
209
  end
209
-
210
+
210
211
  protected
211
-
212
+
212
213
  # Save the changes made to a String to WebTranslateIt.com
213
214
  #
214
-
215
- def update
215
+
216
+ def update # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
216
217
  success = true
217
218
  tries ||= 3
218
- request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/strings/#{self.id}.yaml")
219
+ request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/strings/#{id}.yaml")
219
220
  WebTranslateIt::Util.add_fields(request)
220
- request.body = self.to_json
221
-
222
- self.translations.each do |translation|
223
- translation.string_id = self.id
221
+ request.body = to_json
222
+
223
+ translations.each do |translation|
224
+ translation.string_id = id
224
225
  translation.save
225
226
  end
226
-
227
+
227
228
  begin
228
229
  Util.handle_response(Connection.http_connection.request(request), true, true)
229
230
  rescue Timeout::Error
230
- puts "Request timeout. Will retry in 5 seconds."
231
+ puts 'Request timeout. Will retry in 5 seconds.'
231
232
  if (tries -= 1) > 0
232
233
  sleep(5)
233
234
  retry
@@ -237,23 +238,23 @@ module WebTranslateIt
237
238
  end
238
239
  success
239
240
  end
240
-
241
+
241
242
  # Create a new String to WebTranslateIt.com
242
243
  #
243
-
244
- def create
244
+
245
+ def create # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
245
246
  success = true
246
247
  tries ||= 3
247
248
  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/strings")
248
249
  WebTranslateIt::Util.add_fields(request)
249
- request.body = self.to_json(true)
250
+ request.body = to_json(true)
250
251
  begin
251
252
  response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
252
- self.id = response["id"]
253
+ self.id = response['id']
253
254
  self.new_record = false
254
255
  return true
255
256
  rescue Timeout::Error
256
- puts "Request timeout. Will retry in 5 seconds."
257
+ puts 'Request timeout. Will retry in 5 seconds.'
257
258
  if (tries -= 1) > 0
258
259
  sleep(5)
259
260
  retry
@@ -263,23 +264,23 @@ module WebTranslateIt
263
264
  end
264
265
  success
265
266
  end
266
-
267
- def to_json(with_translations = false)
267
+
268
+ def to_json(with_translations = false) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
268
269
  hash = {
269
- "id" => id,
270
- "key" => key,
271
- "plural" => plural,
272
- "type" => type,
273
- "dev_comment" => dev_comment,
274
- "status" => status,
275
- "labels" => labels,
276
- "category" => category,
277
- "file" => file
270
+ 'id' => id,
271
+ 'key' => key,
272
+ 'plural' => plural,
273
+ 'type' => type,
274
+ 'dev_comment' => dev_comment,
275
+ 'status' => status,
276
+ 'labels' => labels,
277
+ 'category' => category,
278
+ 'file' => file
278
279
  }
279
- if self.translations.any? && with_translations
280
- hash.update({ "translations" => [] })
280
+ if translations.any? && with_translations
281
+ hash.update({ 'translations' => [] })
281
282
  translations.each do |translation|
282
- hash["translations"].push(translation.to_hash)
283
+ hash['translations'].push(translation.to_hash)
283
284
  end
284
285
  end
285
286
  MultiJson.dump(hash)