zendesk_apps_support 1.17.0 → 1.17.1

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
  SHA1:
3
- metadata.gz: 42c552214dd0abe4fbb075e17732e01a59a26f21
4
- data.tar.gz: 880a3e8adc66819e998579f674bdb3c5deecb14f
3
+ metadata.gz: 4652177f210c7e96e96dda1dd85b981b2d9017c1
4
+ data.tar.gz: 707731e9c4eb073339dc46ba1529416b43d63aa0
5
5
  SHA512:
6
- metadata.gz: b1b7b06895b7a189c1f97e9ca6944b7ca8e66335f653bf80c2495ee718211edc50ea2ae6aab372f1915495247cfcc1ca12b6ddbcdb8d4336b30e7fde450f06e0
7
- data.tar.gz: 98ceea08abd04d55e09153fb28ed7056ce49396f21a30579e0088312d9d2011759d17713e319b0a21ed71f069774d80b897bba6688f82e98258532413da0cdeb
6
+ metadata.gz: 8b31cb09a925f5987c82290c4f4cae89ea09e41ade156db05bd1409d20a4f6e4bb7426ef2cf1710f892579ea5be834b211e863a11a7547d0ba7459518c31c054
7
+ data.tar.gz: 3b3d587b40cebbcbfba5d704371eb83c8bcd4d3395fe64243ebddf50e3b292d98427ee7fc0b60b91c0d8151ad8d8ee7089cb6b907d6022feb46a39b05075da53
@@ -1,5 +1,4 @@
1
1
  module ZendeskAppsSupport
2
-
3
2
  require 'zendesk_apps_support/sass_functions'
4
3
  require 'zendesk_apps_support/engine'
5
4
 
@@ -1,7 +1,5 @@
1
1
  module ZendeskAppsSupport
2
-
3
2
  class AppFile
4
-
5
3
  attr_reader :relative_path
6
4
  attr_reader :absolute_path
7
5
 
@@ -16,7 +14,11 @@ module ZendeskAppsSupport
16
14
  end
17
15
 
18
16
  def =~(regex)
19
- @relative_path =~ regex
17
+ relative_path =~ regex
18
+ end
19
+
20
+ def match(regex)
21
+ self =~ regex
20
22
  end
21
23
 
22
24
  alias_method :to_s, :relative_path
@@ -38,7 +40,5 @@ module ZendeskAppsSupport
38
40
  def respond_to_missing?(sym, include_private = false)
39
41
  @file.send(:respond_to_missing?, sym, include_private) || super
40
42
  end
41
-
42
43
  end
43
-
44
44
  end
@@ -1,7 +1,6 @@
1
1
  require 'multi_json'
2
2
 
3
3
  module ZendeskAppsSupport
4
-
5
4
  # At any point in time, we support up to three versions:
6
5
  # * deprecated -- we will still serve apps targeting the deprecated version,
7
6
  # but newly created or updated apps CANNOT target it
@@ -11,13 +10,12 @@ module ZendeskAppsSupport
11
10
  # newly created or updates apps MAY target it, but it
12
11
  # may change without notice
13
12
  class AppVersion
14
-
15
13
  DEPRECATED = '0.4'.freeze
16
14
  CURRENT = '0.5'.freeze
17
15
  FUTURE = '1.0'.freeze
18
16
 
19
- TO_BE_SERVED = [ DEPRECATED, CURRENT, FUTURE ].compact.freeze
20
- VALID_FOR_UPDATE = [ CURRENT, FUTURE ].compact.freeze
17
+ TO_BE_SERVED = [DEPRECATED, CURRENT, FUTURE].compact.freeze
18
+ VALID_FOR_UPDATE = [CURRENT, FUTURE].compact.freeze
21
19
 
22
20
  def initialize(version)
23
21
  @version = version.to_s
@@ -53,16 +51,14 @@ module ZendeskAppsSupport
53
51
  @version
54
52
  end
55
53
 
56
- def to_json(*options)
54
+ def to_json(*)
57
55
  MultiJson.encode(@version)
58
56
  end
59
57
 
60
58
  def ==(other)
61
59
  @version == other.to_s
62
60
  end
63
-
64
61
  end
65
62
 
66
63
  AppVersion.freeze
67
-
68
64
  end
@@ -1,6 +1,5 @@
1
1
  module ZendeskAppsSupport
2
2
  module BuildTranslation
3
-
4
3
  I18N_TITLE_KEY = 'title'
5
4
  I18N_VALUE_KEY = 'value'
6
5
  I18N_KEYS = [I18N_TITLE_KEY, I18N_VALUE_KEY]
@@ -8,7 +7,7 @@ module ZendeskAppsSupport
8
7
  def to_flattened_namespaced_hash(hash, target_key = nil, prefix = nil)
9
8
  hash.inject({}) do |result, (key, value)|
10
9
  key = [prefix, key].compact.join('.')
11
- if value.kind_of?(Hash)
10
+ if value.is_a?(Hash)
12
11
  if target_key && is_translation_hash?(value)
13
12
  result[key] = value[target_key]
14
13
  else
@@ -22,7 +21,6 @@ module ZendeskAppsSupport
22
21
  end
23
22
 
24
23
  def remove_zendesk_keys(scope, translations = {})
25
-
26
24
  scope.each_key do |key|
27
25
  context = scope[key]
28
26
 
@@ -48,6 +46,5 @@ module ZendeskAppsSupport
48
46
  def is_translation_hash?(hash)
49
47
  hash.keys.sort == I18N_KEYS
50
48
  end
51
-
52
49
  end
53
50
  end
@@ -1,11 +1,9 @@
1
1
  if Object.const_defined?(:Rails) && Rails.const_defined?(:Engine)
2
2
 
3
3
  module ZendeskAppsSupport
4
-
5
4
  class Engine < Rails::Engine
6
5
  engine_name 'zendesk_apps_support'
7
6
  end
8
-
9
7
  end
10
8
 
11
9
  end
@@ -20,8 +20,8 @@ module ZendeskAppsSupport
20
20
  end
21
21
 
22
22
  def locale_files
23
- Dir[ File.expand_path('../../../config/locales/*.yml', __FILE__) ] -
24
- Dir[ File.expand_path('../../../config/locales/*.zendesk.yml', __FILE__) ]
23
+ Dir[File.expand_path('../../../config/locales/*.yml', __FILE__)] -
24
+ Dir[File.expand_path('../../../config/locales/*.zendesk.yml', __FILE__)]
25
25
  end
26
26
  end
27
27
  end
@@ -6,9 +6,9 @@ module ZendeskAppsSupport
6
6
  class Package
7
7
  include ZendeskAppsSupport::BuildTranslation
8
8
 
9
- DEFAULT_LAYOUT = Erubis::Eruby.new( File.read(File.expand_path('../assets/default_template.html.erb', __FILE__)) )
9
+ DEFAULT_LAYOUT = Erubis::Eruby.new(File.read(File.expand_path('../assets/default_template.html.erb', __FILE__)))
10
10
  DEFAULT_SCSS = File.read(File.expand_path('../assets/default_styles.scss', __FILE__))
11
- SRC_TEMPLATE = Erubis::Eruby.new( File.read(File.expand_path('../assets/src.js.erb', __FILE__)) )
11
+ SRC_TEMPLATE = Erubis::Eruby.new(File.read(File.expand_path('../assets/src.js.erb', __FILE__)))
12
12
 
13
13
  attr_reader :lib_root, :root, :warnings
14
14
  attr_accessor :requirements_only
@@ -22,7 +22,6 @@ module ZendeskAppsSupport
22
22
 
23
23
  def validate
24
24
  [].tap do |errors|
25
-
26
25
  errors << Validations::Manifest.call(self)
27
26
 
28
27
  if has_manifest?
@@ -48,7 +47,7 @@ module ZendeskAppsSupport
48
47
  end
49
48
 
50
49
  def app_js
51
- read_file("app.js")
50
+ read_file('app.js')
52
51
  end
53
52
 
54
53
  def commonjs_modules
@@ -78,22 +77,22 @@ module ZendeskAppsSupport
78
77
  end
79
78
 
80
79
  def manifest_json
81
- read_json("manifest.json")
80
+ read_json('manifest.json')
82
81
  end
83
82
 
84
83
  def requirements_json
85
- read_json("requirements.json")
84
+ read_json('requirements.json')
86
85
  end
87
86
 
88
87
  def translations
89
- read_json("translations/en.json", false)
88
+ read_json('translations/en.json', false)
90
89
  end
91
90
 
92
91
  def app_translations
93
92
  remove_zendesk_keys(translations)
94
93
  end
95
94
 
96
- def readified_js(app_name, app_id, asset_url_prefix, settings={})
95
+ def readified_js(app_name, app_id, asset_url_prefix, settings = {})
97
96
  manifest = manifest_json
98
97
  source = app_js
99
98
  name = app_name || manifest[:name] || 'Local App'
@@ -105,37 +104,37 @@ module ZendeskAppsSupport
105
104
  no_template = manifest[:noTemplate]
106
105
  templates = no_template ? {} : compiled_templates(app_id, asset_url_prefix)
107
106
 
108
- settings["title"] = name
107
+ settings['title'] = name
109
108
 
110
109
  app_settings = {
111
- :location => location,
112
- :noTemplate => no_template,
113
- :singleInstall => single_install
114
- }.select { |k,v| !v.nil? }
110
+ location: location,
111
+ noTemplate: no_template,
112
+ singleInstall: single_install
113
+ }.select { |_k, v| !v.nil? }
115
114
 
116
115
  SRC_TEMPLATE.result(
117
- :name => name,
118
- :source => source,
119
- :app_settings => app_settings,
120
- :asset_url_prefix => asset_url_prefix,
121
- :app_class_name => app_class_name,
122
- :author => author,
123
- :translations => app_translations,
124
- :framework_version => framework_version,
125
- :templates => templates,
126
- :settings => settings,
127
- :app_id => app_id,
128
- :modules => commonjs_modules
116
+ name: name,
117
+ source: source,
118
+ app_settings: app_settings,
119
+ asset_url_prefix: asset_url_prefix,
120
+ app_class_name: app_class_name,
121
+ author: author,
122
+ translations: app_translations,
123
+ framework_version: framework_version,
124
+ templates: templates,
125
+ settings: settings,
126
+ app_id: app_id,
127
+ modules: commonjs_modules
129
128
  )
130
129
  end
131
130
 
132
131
  def customer_css
133
132
  css_file = file_path('app.css')
134
- customer_css = File.exist?(css_file) ? File.read(css_file) : ""
133
+ File.exist?(css_file) ? File.read(css_file) : ''
135
134
  end
136
135
 
137
136
  def has_js?
138
- file_exists?("app.js")
137
+ file_exists?('app.js')
139
138
  end
140
139
 
141
140
  def has_lib_js?
@@ -143,7 +142,7 @@ module ZendeskAppsSupport
143
142
  end
144
143
 
145
144
  def has_manifest?
146
- file_exists?("manifest.json")
145
+ file_exists?('manifest.json')
147
146
  end
148
147
 
149
148
  def has_location?
@@ -151,11 +150,11 @@ module ZendeskAppsSupport
151
150
  end
152
151
 
153
152
  def has_requirements?
154
- file_exists?("requirements.json")
153
+ file_exists?('requirements.json')
155
154
  end
156
155
 
157
156
  def has_banner?
158
- file_exists?("assets/banner.png")
157
+ file_exists?('assets/banner.png')
159
158
  end
160
159
 
161
160
  def file_path(path)
@@ -168,7 +167,7 @@ module ZendeskAppsSupport
168
167
  compiled_css = ZendeskAppsSupport::StylesheetCompiler.new(DEFAULT_SCSS + customer_css, app_id, asset_url_prefix).compile
169
168
 
170
169
  templates = begin
171
- Dir["#{root.to_s}/templates/*.hdbs"].inject({}) do |h, file|
170
+ Dir["#{root}/templates/*.hdbs"].inject({}) do |h, file|
172
171
  str = File.read(file)
173
172
  str.chomp!
174
173
  h[File.basename(file, File.extname(file))] = str
@@ -185,7 +184,7 @@ module ZendeskAppsSupport
185
184
 
186
185
  def non_tmp_files
187
186
  files = []
188
- Dir[ root.join('**/**') ].each do |f|
187
+ Dir[root.join('**/**')].each do |f|
189
188
  next unless File.file?(f)
190
189
  relative_file_name = f.sub(/#{root}\/?/, '')
191
190
  next if relative_file_name =~ /^tmp\//
@@ -205,7 +204,7 @@ module ZendeskAppsSupport
205
204
  def read_json(path, symbolize_names = true)
206
205
  file = read_file(path)
207
206
  unless file.nil?
208
- JSON.parse(read_file(path), :symbolize_names => symbolize_names)
207
+ JSON.parse(read_file(path), symbolize_names: symbolize_names)
209
208
  end
210
209
  end
211
210
  end
@@ -1,11 +1,10 @@
1
1
  require 'sass'
2
2
 
3
3
  module Sass::Script::Functions
4
-
5
4
  module AppAssetUrl
6
5
  def app_asset_url(name)
7
6
  assert_type name, :String
8
- result = %Q{url("#{app_asset_url_helper(name)}")}
7
+ result = %{url("#{app_asset_url_helper(name)}")}
9
8
  Sass::Script::String.new(result)
10
9
  end
11
10
 
@@ -18,5 +17,4 @@ module Sass::Script::Functions
18
17
  end
19
18
 
20
19
  include AppAssetUrl
21
-
22
20
  end
@@ -2,13 +2,12 @@ require 'sass'
2
2
 
3
3
  module ZendeskAppsSupport
4
4
  class StylesheetCompiler
5
-
6
5
  def initialize(source, app_id, url_prefix)
7
6
  @source, @app_id, @url_prefix = source, app_id, url_prefix
8
7
  end
9
8
 
10
9
  def compile
11
- Sass::Engine.new(wrapped_source, :syntax => :scss, :app_asset_url_builder => self).render
10
+ Sass::Engine.new(wrapped_source, syntax: :scss, app_asset_url_builder: self).render
12
11
  end
13
12
 
14
13
  def app_asset_url(name)
@@ -20,6 +19,5 @@ module ZendeskAppsSupport
20
19
  def wrapped_source
21
20
  ".app-#{@app_id} {#{@source}}"
22
21
  end
23
-
24
22
  end
25
23
  end
@@ -17,11 +17,11 @@ module ZendeskAppsSupport
17
17
  end
18
18
 
19
19
  unless (image.width == BANNER_WIDTH && image.height == BANNER_HEIGHT) ||
20
- (image.width == 2*BANNER_WIDTH && image.height == 2*BANNER_HEIGHT)
21
- return [ValidationError.new('banner.invalid_size', :required_banner_width => BANNER_WIDTH,
22
- :required_banner_height => BANNER_HEIGHT)]
20
+ (image.width == 2 * BANNER_WIDTH && image.height == 2 * BANNER_HEIGHT)
21
+ return [ValidationError.new('banner.invalid_size', required_banner_width: BANNER_WIDTH,
22
+ required_banner_height: BANNER_HEIGHT)]
23
23
  end
24
- rescue => e
24
+ rescue
25
25
  return [ValidationError.new('banner.invalid_format')]
26
26
  end
27
27
  end
@@ -3,11 +3,10 @@ require 'multi_json'
3
3
  module ZendeskAppsSupport
4
4
  module Validations
5
5
  module Manifest
6
-
7
6
  REQUIRED_MANIFEST_FIELDS = %w( author defaultLocale ).freeze
8
7
  OAUTH_REQUIRED_FIELDS = %w( client_id client_secret authorize_uri access_token_uri ).freeze
9
8
  LOCATIONS_AVAILABLE = %w( top_bar nav_bar ticket_sidebar new_ticket_sidebar user_sidebar ).freeze
10
- TYPES_AVAILABLE = %W( text password checkbox url number multiline hidden ).freeze
9
+ TYPES_AVAILABLE = %w( text password checkbox url number multiline hidden ).freeze
11
10
 
12
11
  class <<self
13
12
  def call(package)
@@ -42,7 +41,7 @@ module ZendeskAppsSupport
42
41
  errors.compact!
43
42
  end
44
43
  rescue MultiJson::DecodeError => e
45
- return [ValidationError.new(:manifest_not_json, :errors => e)]
44
+ return [ValidationError.new(:manifest_not_json, errors: e)]
46
45
  end
47
46
 
48
47
  private
@@ -63,22 +62,21 @@ module ZendeskAppsSupport
63
62
  end
64
63
 
65
64
  if missing.any?
66
- ValidationError.new('oauth_keys.missing', :missing_keys => missing.join(', '), :count => missing.length)
65
+ ValidationError.new('oauth_keys.missing', missing_keys: missing.join(', '), count: missing.length)
67
66
  end
68
-
69
67
  end
70
68
 
71
69
  def parameters_error(manifest)
72
70
  return unless manifest['parameters']
73
71
 
74
- unless manifest['parameters'].kind_of?(Array)
72
+ unless manifest['parameters'].is_a?(Array)
75
73
  return ValidationError.new(:parameters_not_an_array)
76
74
  end
77
75
 
78
- para_names = manifest['parameters'].collect{|para| para['name']}
79
- duplicate_parameters = para_names.select {|name| para_names.count(name) > 1}.uniq
76
+ para_names = manifest['parameters'].collect { |para| para['name'] }
77
+ duplicate_parameters = para_names.select { |name| para_names.count(name) > 1 }.uniq
80
78
  unless duplicate_parameters.empty?
81
- return ValidationError.new(:duplicate_parameters, :duplicate_parameters => duplicate_parameters)
79
+ return ValidationError.new(:duplicate_parameters, duplicate_parameters: duplicate_parameters)
82
80
  end
83
81
  end
84
82
 
@@ -92,11 +90,11 @@ module ZendeskAppsSupport
92
90
 
93
91
  def default_locale_error(manifest, package)
94
92
  default_locale = manifest['defaultLocale']
95
- if !default_locale.nil?
93
+ unless default_locale.nil?
96
94
  if default_locale !~ Translations::VALID_LOCALE
97
- ValidationError.new(:invalid_default_locale, :defaultLocale => default_locale)
95
+ ValidationError.new(:invalid_default_locale, defaultLocale: default_locale)
98
96
  elsif package.translation_files.detect { |file| file.relative_path == "translations/#{default_locale}.json" }.nil?
99
- ValidationError.new(:missing_translation_file, :defaultLocale => default_locale)
97
+ ValidationError.new(:missing_translation_file, defaultLocale: default_locale)
100
98
  end
101
99
  end
102
100
  end
@@ -108,7 +106,7 @@ module ZendeskAppsSupport
108
106
  def invalid_location_error(manifest)
109
107
  invalid_locations = [*manifest['location']] - LOCATIONS_AVAILABLE
110
108
  unless invalid_locations.empty?
111
- ValidationError.new(:invalid_location, :invalid_locations => invalid_locations.join(', '), :count => invalid_locations.length)
109
+ ValidationError.new(:invalid_location, invalid_locations: invalid_locations.join(', '), count: invalid_locations.length)
112
110
  end
113
111
  end
114
112
 
@@ -117,7 +115,7 @@ module ZendeskAppsSupport
117
115
  duplicate_locations = *locations.select { |location| locations.count(location) > 1 }.uniq
118
116
 
119
117
  unless duplicate_locations.empty?
120
- ValidationError.new(:duplicate_location, :duplicate_locations => duplicate_locations.join(', '), :count => duplicate_locations.length)
118
+ ValidationError.new(:duplicate_location, duplicate_locations: duplicate_locations.join(', '), count: duplicate_locations.length)
121
119
  end
122
120
  end
123
121
 
@@ -134,12 +132,12 @@ module ZendeskAppsSupport
134
132
  end
135
133
 
136
134
  unless valid_to_serve.include?(target_version)
137
- return ValidationError.new(:invalid_version, :target_version => target_version, :available_versions => valid_to_serve.join(', '))
135
+ return ValidationError.new(:invalid_version, target_version: target_version, available_versions: valid_to_serve.join(', '))
138
136
  end
139
137
  end
140
138
 
141
139
  def name_as_parameter_name_error(manifest)
142
- if manifest['parameters'].kind_of?(Array)
140
+ if manifest['parameters'].is_a?(Array)
143
141
  if manifest['parameters'].any? { |p| p['name'] == 'name' }
144
142
  ValidationError.new(:name_as_parameter_name)
145
143
  end
@@ -149,35 +147,34 @@ module ZendeskAppsSupport
149
147
  def invalid_hidden_parameter_error(manifest)
150
148
  invalid_params = []
151
149
 
152
- if manifest.has_key?('parameters')
150
+ if manifest.key?('parameters')
153
151
  invalid_params = manifest['parameters'].select { |p| p['type'] == 'hidden' && p['required'] }.map { |p| p['name'] }
154
152
  end
155
153
 
156
154
  if invalid_params.any?
157
- ValidationError.new(:invalid_hidden_parameter, :invalid_params => invalid_params.join(', '), :count => invalid_params.length)
155
+ ValidationError.new(:invalid_hidden_parameter, invalid_params: invalid_params.join(', '), count: invalid_params.length)
158
156
  end
159
157
  end
160
158
 
161
159
  def invalid_type_error(manifest)
162
- return unless manifest['parameters'].kind_of?(Array)
160
+ return unless manifest['parameters'].is_a?(Array)
163
161
 
164
162
  invalid_types = []
165
163
 
166
- manifest["parameters"].each do |parameter|
167
- parameter_type = parameter.fetch("type", '')
164
+ manifest['parameters'].each do |parameter|
165
+ parameter_type = parameter.fetch('type', '')
168
166
 
169
167
  invalid_types << parameter_type unless TYPES_AVAILABLE.include?(parameter_type)
170
168
  end
171
169
 
172
170
  if invalid_types.any?
173
- ValidationError.new(:invalid_type_parameter, :invalid_types => invalid_types.join(', '), :count => invalid_types.length)
171
+ ValidationError.new(:invalid_type_parameter, invalid_types: invalid_types.join(', '), count: invalid_types.length)
174
172
  end
175
173
  end
176
174
 
177
175
  def missing_keys_validation_error(missing_keys)
178
- ValidationError.new('manifest_keys.missing', :missing_keys => missing_keys.join(', '), :count => missing_keys.length)
176
+ ValidationError.new('manifest_keys.missing', missing_keys: missing_keys.join(', '), count: missing_keys.length)
179
177
  end
180
-
181
178
  end
182
179
  end
183
180
  end
@@ -4,7 +4,6 @@ require 'json/stream'
4
4
  module ZendeskAppsSupport
5
5
  module Validations
6
6
  module Requirements
7
-
8
7
  MAX_REQUIREMENTS = 5000
9
8
 
10
9
  class <<self
@@ -16,7 +15,7 @@ module ZendeskAppsSupport
16
15
  requirements_stream = requirements_file.read
17
16
  duplicates = non_unique_type_keys(requirements_stream)
18
17
  unless duplicates.empty?
19
- return [ValidationError.new(:duplicate_requirements, :duplicate_keys => duplicates.join(', '), :count => duplicates.length)]
18
+ return [ValidationError.new(:duplicate_requirements, duplicate_keys: duplicates.join(', '), count: duplicates.length)]
20
19
  end
21
20
 
22
21
  requirements = MultiJson.load(requirements_stream)
@@ -28,7 +27,7 @@ module ZendeskAppsSupport
28
27
  errors.compact!
29
28
  end
30
29
  rescue MultiJson::DecodeError => e
31
- return [ValidationError.new(:requirements_not_json, :errors => e)]
30
+ return [ValidationError.new(:requirements_not_json, errors: e)]
32
31
  end
33
32
 
34
33
  private
@@ -38,14 +37,14 @@ module ZendeskAppsSupport
38
37
  requirements.values.each do |requirement|
39
38
  requirement.each do |identifier, fields|
40
39
  next if fields.include? 'title'
41
- errors << ValidationError.new(:missing_required_fields, :field => 'title', :identifier => identifier)
40
+ errors << ValidationError.new(:missing_required_fields, field: 'title', identifier: identifier)
42
41
  end
43
42
  end
44
43
 
45
44
  unless requirements['user_fields'].nil?
46
45
  requirements['user_fields'].each do |identifier, fields|
47
46
  next if fields.include? 'key'
48
- errors << ValidationError.new(:missing_required_fields, :field => 'key', :identifier => identifier)
47
+ errors << ValidationError.new(:missing_required_fields, field: 'key', identifier: identifier)
49
48
  end
50
49
  end
51
50
  end
@@ -54,7 +53,7 @@ module ZendeskAppsSupport
54
53
  def excessive_requirements(requirements)
55
54
  requirement_count = requirements.values.map(&:values).flatten.size
56
55
  if requirement_count > MAX_REQUIREMENTS
57
- ValidationError.new(:excessive_requirements, :max => MAX_REQUIREMENTS, :count => requirement_count)
56
+ ValidationError.new(:excessive_requirements, max: MAX_REQUIREMENTS, count: requirement_count)
58
57
  end
59
58
  end
60
59
 
@@ -62,7 +61,7 @@ module ZendeskAppsSupport
62
61
  invalid_types = requirements.keys - ZendeskAppsSupport::AppRequirement::TYPES
63
62
 
64
63
  unless invalid_types.empty?
65
- ValidationError.new(:invalid_requirements_types, :invalid_types => invalid_types.join(', '), :count => invalid_types.length)
64
+ ValidationError.new(:invalid_requirements_types, invalid_types: invalid_types.join(', '), count: invalid_types.length)
66
65
  end
67
66
  end
68
67
 
@@ -78,7 +77,6 @@ module ZendeskAppsSupport
78
77
 
79
78
  duplicates
80
79
  end
81
-
82
80
  end
83
81
  end
84
82
  end
@@ -3,21 +3,20 @@ require 'jshintrb'
3
3
  module ZendeskAppsSupport
4
4
  module Validations
5
5
  module Source
6
-
7
6
  LINTER_OPTIONS = {
8
7
  # enforcing options:
9
- :noarg => true,
10
- :undef => true,
8
+ noarg: true,
9
+ undef: true,
11
10
 
12
11
  # relaxing options:
13
- :eqnull => true,
14
- :laxcomma => true,
15
- :sub => true,
12
+ eqnull: true,
13
+ laxcomma: true,
14
+ sub: true,
16
15
 
17
16
  # predefined globals:
18
- :predef => %w(_ console services helpers alert window document self
19
- JSON Base64 clearInterval clearTimeout setInterval setTimeout
20
- require module exports top frames parent moment)
17
+ predef: %w(_ console services helpers alert window document self
18
+ JSON Base64 clearInterval clearTimeout setInterval setTimeout
19
+ require module exports top frames parent moment)
21
20
  }.freeze
22
21
 
23
22
  class <<self
@@ -26,10 +25,10 @@ module ZendeskAppsSupport
26
25
  files = package.lib_files << app
27
26
 
28
27
  if package.requirements_only
29
- return app ? [ ValidationError.new(:no_app_js_required) ] : []
28
+ return app ? [ValidationError.new(:no_app_js_required)] : []
30
29
  end
31
30
 
32
- return [ ValidationError.new(:missing_source) ] unless app
31
+ return [ValidationError.new(:missing_source)] unless app
33
32
 
34
33
  jshint_errors(files).flatten!
35
34
  end
@@ -38,7 +37,7 @@ module ZendeskAppsSupport
38
37
 
39
38
  def jshint_error(file)
40
39
  errors = linter.lint(file.read)
41
- [ JSHintValidationError.new(file.relative_path, errors) ] if errors.any?
40
+ [JSHintValidationError.new(file.relative_path, errors)] if errors.any?
42
41
  end
43
42
 
44
43
  def jshint_errors(files)
@@ -51,7 +50,6 @@ module ZendeskAppsSupport
51
50
  def linter
52
51
  Jshintrb::Lint.new(LINTER_OPTIONS)
53
52
  end
54
-
55
53
  end
56
54
  end
57
55
  end
@@ -3,9 +3,7 @@ require 'zendesk_apps_support/stylesheet_compiler'
3
3
  module ZendeskAppsSupport
4
4
  module Validations
5
5
  module Stylesheets
6
-
7
6
  class << self
8
-
9
7
  def call(package)
10
8
  if css_error = validate_styles(package.customer_css)
11
9
  [css_error]
@@ -21,11 +19,10 @@ module ZendeskAppsSupport
21
19
  begin
22
20
  compiler.compile
23
21
  rescue Sass::SyntaxError => e
24
- return ValidationError.new(:stylesheet_error, :sass_error => e.message)
22
+ return ValidationError.new(:stylesheet_error, sass_error: e.message)
25
23
  end
26
24
  nil
27
25
  end
28
-
29
26
  end
30
27
  end
31
28
  end
@@ -1,20 +1,18 @@
1
1
  module ZendeskAppsSupport
2
2
  module Validations
3
3
  module Templates
4
-
5
4
  class <<self
6
5
  def call(package)
7
6
  errors = []
8
7
  package.template_files.each do |template|
9
8
  contents = template.read
10
9
  if contents =~ /<\s*style\b/
11
- errors << ValidationError.new(:style_in_template, :template => template.relative_path)
10
+ errors << ValidationError.new(:style_in_template, template: template.relative_path)
12
11
  end
13
12
  end
14
13
  errors
15
14
  end
16
15
  end
17
-
18
16
  end
19
17
  end
20
18
  end
@@ -23,35 +23,35 @@ module ZendeskAppsSupport
23
23
 
24
24
  def locale_error(file, locale)
25
25
  return nil if VALID_LOCALE =~ locale
26
- ValidationError.new('translation.invalid_locale', :file => file.relative_path)
26
+ ValidationError.new('translation.invalid_locale', file: file.relative_path)
27
27
  end
28
28
 
29
29
  def json_error(file)
30
30
  json = MultiJson.load(file.read)
31
- if json.kind_of?(Hash)
32
- if json["app"] && json["app"]["package"]
33
- json["app"].delete("package")
31
+ if json.is_a?(Hash)
32
+ if json['app'] && json['app']['package']
33
+ json['app'].delete('package')
34
34
  begin
35
35
  validate_translation_format(json)
36
36
  return
37
37
  rescue TranslationFormatError => e
38
- ValidationError.new('translation.invalid_format', :field => e.message)
38
+ ValidationError.new('translation.invalid_format', field: e.message)
39
39
  end
40
40
  end
41
41
  else
42
- ValidationError.new('translation.not_json_object', :file => file.relative_path)
42
+ ValidationError.new('translation.not_json_object', file: file.relative_path)
43
43
  end
44
44
  rescue MultiJson::DecodeError => e
45
- ValidationError.new('translation.not_json', :file => file.relative_path, :errors => e)
45
+ ValidationError.new('translation.not_json', file: file.relative_path, errors: e)
46
46
  end
47
47
 
48
48
  def validate_translation_format(json)
49
49
  json.keys.each do |key|
50
- raise TranslationFormatError.new("'#{key}': '#{json[key]}'") unless json[key].kind_of? Hash
50
+ fail TranslationFormatError.new("'#{key}': '#{json[key]}'") unless json[key].is_a? Hash
51
51
 
52
52
  if json[key].keys.sort == BuildTranslation::I18N_KEYS &&
53
- json[key][BuildTranslation::I18N_TITLE_KEY].class == String &&
54
- json[key][BuildTranslation::I18N_VALUE_KEY].class == String
53
+ json[key][BuildTranslation::I18N_TITLE_KEY].class == String &&
54
+ json[key][BuildTranslation::I18N_VALUE_KEY].class == String
55
55
  next
56
56
  else
57
57
  validate_translation_format(json[key])
@@ -2,7 +2,6 @@ require 'multi_json'
2
2
 
3
3
  module ZendeskAppsSupport
4
4
  module Validations
5
-
6
5
  class ValidationError
7
6
  KEY_PREFIX = 'txt.apps.admin.error.app_build.'.freeze
8
7
 
@@ -13,20 +12,19 @@ module ZendeskAppsSupport
13
12
  end
14
13
 
15
14
  class << self
16
-
17
15
  # Turn a JSON string into a ValidationError.
18
16
  def from_json(json)
19
17
  hash = MultiJson.decode(json)
20
- raise DeserializationError.new(json) unless hash.is_a?(Hash)
18
+ fail DeserializationError.new(json) unless hash.is_a?(Hash)
21
19
  from_hash(hash)
22
20
  rescue MultiJson::DecodeError, NameError
23
21
  raise DeserializationError.new(json)
24
22
  end
25
23
 
26
24
  def from_hash(hash)
27
- raise DeserializationError.new(hash) unless hash['class']
25
+ fail DeserializationError.new(hash) unless hash['class']
28
26
  klass = constantize(hash['class'])
29
- raise DeserializationError.new(hash) unless klass <= self
27
+ fail DeserializationError.new(hash) unless klass <= self
30
28
  klass.vivify(hash)
31
29
  end
32
30
 
@@ -38,7 +36,7 @@ module ZendeskAppsSupport
38
36
  private
39
37
 
40
38
  def constantize(klass)
41
- klass.to_s.split('::').inject(Object) { |klass, part| klass = klass.const_get(part) }
39
+ klass.to_s.split('::').inject(Object) { |klass, part| klass.const_get(part) }
42
40
  end
43
41
  end
44
42
 
@@ -52,11 +50,11 @@ module ZendeskAppsSupport
52
50
  ZendeskAppsSupport::I18n.t("#{KEY_PREFIX}#{key}", data)
53
51
  end
54
52
 
55
- def to_json(*options)
53
+ def to_json(*)
56
54
  MultiJson.encode(as_json)
57
55
  end
58
56
 
59
- def as_json(*options)
57
+ def as_json(*)
60
58
  {
61
59
  'class' => self.class.to_s,
62
60
  'key' => key,
@@ -85,13 +83,13 @@ module ZendeskAppsSupport
85
83
  errors = jshint_errors.compact.map { |err| "\n L#{err['line']}: #{err['reason']}" }.join('')
86
84
  @filename = filename, @jshint_errors = jshint_errors
87
85
  super(:jshint, {
88
- :file => filename,
89
- :errors => errors,
90
- :count => jshint_errors.length
86
+ file: filename,
87
+ errors: errors,
88
+ count: jshint_errors.length
91
89
  })
92
90
  end
93
91
 
94
- def as_json(*options)
92
+ def as_json(*)
95
93
  {
96
94
  'class' => self.class.to_s,
97
95
  'filename' => filename,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_apps_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.0
4
+ version: 1.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James A. Rosen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-02-12 00:00:00.000000000 Z
14
+ date: 2015-02-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: i18n
@@ -131,14 +131,14 @@ dependencies:
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: 2.14.0
134
+ version: 3.1.0
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: 2.14.0
141
+ version: 3.1.0
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: bump
144
144
  requirement: !ruby/object:Gem::Requirement