zendesk_apps_support 1.6.0 → 1.7.0
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.
data/lib/zendesk_apps_support.rb
CHANGED
@@ -4,6 +4,7 @@ module ZendeskAppsSupport
|
|
4
4
|
require 'zendesk_apps_support/engine'
|
5
5
|
|
6
6
|
autoload :AppFile, 'zendesk_apps_support/app_file'
|
7
|
+
autoload :BuildTranslation, 'zendesk_apps_support/build_translation'
|
7
8
|
autoload :I18n, 'zendesk_apps_support/i18n'
|
8
9
|
autoload :Package, 'zendesk_apps_support/package'
|
9
10
|
autoload :AppVersion, 'zendesk_apps_support/app_version'
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module ZendeskAppsSupport
|
2
|
+
module BuildTranslation
|
3
|
+
|
4
|
+
I18N_TITLE_KEY = 'title'
|
5
|
+
I18N_VALUE_KEY = 'value'
|
6
|
+
I18N_KEYS = [ I18N_TITLE_KEY, I18N_VALUE_KEY ]
|
7
|
+
|
8
|
+
def to_flattened_namespaced_hash(hash, prefix = nil)
|
9
|
+
|
10
|
+
hash.inject({}) do |result, (key, value)|
|
11
|
+
key = [ prefix, key ].compact.join('.')
|
12
|
+
|
13
|
+
if value.kind_of?(Hash)
|
14
|
+
|
15
|
+
if is_translation_hash?(value)
|
16
|
+
result[key] = value[I18N_VALUE_KEY]
|
17
|
+
else
|
18
|
+
result.update( to_flattened_namespaced_hash(value, key) )
|
19
|
+
end
|
20
|
+
|
21
|
+
else
|
22
|
+
result[key] = value
|
23
|
+
end
|
24
|
+
result
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def remove_zendesk_keys(scope, translations = {})
|
30
|
+
|
31
|
+
scope.each_key do |key|
|
32
|
+
context = scope[key]
|
33
|
+
|
34
|
+
if context.is_a?(Hash)
|
35
|
+
|
36
|
+
if is_translation_hash?(context)
|
37
|
+
translations[key] = context[I18N_VALUE_KEY]
|
38
|
+
else
|
39
|
+
translations[key] ||= {}
|
40
|
+
translations[key] = remove_zendesk_keys(context, translations[key])
|
41
|
+
end
|
42
|
+
|
43
|
+
else
|
44
|
+
translations[key] = context
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
translations
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def is_translation_hash?(hash)
|
54
|
+
hash.keys.sort == I18N_KEYS
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -4,6 +4,7 @@ require 'json'
|
|
4
4
|
|
5
5
|
module ZendeskAppsSupport
|
6
6
|
class Package
|
7
|
+
include ZendeskAppsSupport::BuildTranslation
|
7
8
|
|
8
9
|
DEFAULT_LAYOUT = Erubis::Eruby.new( File.read(File.expand_path('../assets/default_template.html.erb', __FILE__)) )
|
9
10
|
DEFAULT_SCSS = File.read(File.expand_path('../assets/default_styles.scss', __FILE__))
|
@@ -40,6 +41,14 @@ module ZendeskAppsSupport
|
|
40
41
|
JSON.parse(File.read(File.join(root, "manifest.json")), :symbolize_names => true)
|
41
42
|
end
|
42
43
|
|
44
|
+
def translations
|
45
|
+
JSON.parse(File.read(File.join(root, "translations/en.json")))
|
46
|
+
end
|
47
|
+
|
48
|
+
def app_translations
|
49
|
+
remove_zendesk_keys(translations)
|
50
|
+
end
|
51
|
+
|
43
52
|
def readified_js(app_name, app_id, asset_url_prefix, settings={})
|
44
53
|
manifest = manifest_json
|
45
54
|
source = File.read(File.join(root, "app.js"))
|
@@ -47,7 +56,6 @@ module ZendeskAppsSupport
|
|
47
56
|
location = manifest[:location]
|
48
57
|
app_class_name = "app-#{app_id}"
|
49
58
|
author = manifest[:author]
|
50
|
-
translations = JSON.parse(File.read(File.join(root, "translations/en.json")))
|
51
59
|
framework_version = manifest[:frameworkVersion]
|
52
60
|
templates = manifest[:noTemplate] ? {} : compiled_templates(app_id, asset_url_prefix)
|
53
61
|
|
@@ -60,7 +68,7 @@ module ZendeskAppsSupport
|
|
60
68
|
:asset_url_prefix => asset_url_prefix,
|
61
69
|
:app_class_name => app_class_name,
|
62
70
|
:author => author,
|
63
|
-
:translations =>
|
71
|
+
:translations => app_translations,
|
64
72
|
:framework_version => framework_version,
|
65
73
|
:templates => templates,
|
66
74
|
:settings => settings,
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'zendesk_apps_support'
|
2
|
+
include ZendeskAppsSupport::BuildTranslation
|
3
|
+
|
4
|
+
describe ZendeskAppsSupport::BuildTranslation do
|
5
|
+
|
6
|
+
let(:en_json) {
|
7
|
+
{
|
8
|
+
"app" => {
|
9
|
+
"description" => "Shows related tickets",
|
10
|
+
"title" => "Related tickets",
|
11
|
+
"parameters" => {
|
12
|
+
"disable_tooltip" => {
|
13
|
+
"label" => "Disable tooltip"
|
14
|
+
}
|
15
|
+
}
|
16
|
+
},
|
17
|
+
"parent_without_child" => "Foo",
|
18
|
+
"parent_with_child" => {
|
19
|
+
"child" => "Foo"
|
20
|
+
},
|
21
|
+
"parent_with_child_title" => {
|
22
|
+
"title" => "Foo"
|
23
|
+
},
|
24
|
+
"parent_with_zendesk_tranlation" => {
|
25
|
+
"title" => "Bar",
|
26
|
+
"value" => "Foo"
|
27
|
+
},
|
28
|
+
"parent_with_child_title_nested" => {
|
29
|
+
"title" => {
|
30
|
+
"value" => "Foo"
|
31
|
+
}
|
32
|
+
},
|
33
|
+
"parent_with_nested_invalid_zendesk_translation" => {
|
34
|
+
"title" => {
|
35
|
+
"title" => "Bar",
|
36
|
+
"desc" => "Foo"
|
37
|
+
}
|
38
|
+
},
|
39
|
+
"parent_with_nested_zendesk_translation" => {
|
40
|
+
"title" => {
|
41
|
+
"title" => "Bar",
|
42
|
+
"value" => "Foo"
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
describe '#market_translations' do
|
49
|
+
|
50
|
+
context "flatten translations" do
|
51
|
+
|
52
|
+
before do
|
53
|
+
@market_translations = to_flattened_namespaced_hash(en_json)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "value is correct parent with a child that has an valid nested zendesk translation" do
|
57
|
+
@market_translations['parent_with_nested_zendesk_translation.title'].should eq 'Foo'
|
58
|
+
end
|
59
|
+
|
60
|
+
it "value is correct parent with a child that has an invalid nested zendesk translation" do
|
61
|
+
@market_translations['parent_with_nested_invalid_zendesk_translation.title.title'].should eq 'Bar'
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#app_translations' do
|
69
|
+
|
70
|
+
context "reformat translations" do
|
71
|
+
|
72
|
+
before do
|
73
|
+
@app_translations = remove_zendesk_keys(en_json)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "value is correct parent without a child" do
|
77
|
+
@app_translations['parent_without_child'].should eq 'Foo'
|
78
|
+
end
|
79
|
+
|
80
|
+
it "value is correct parent with a child" do
|
81
|
+
@app_translations['parent_with_child']['child'].should eq 'Foo'
|
82
|
+
end
|
83
|
+
|
84
|
+
it "value is correct parent with a child with a title" do
|
85
|
+
@app_translations['parent_with_child_title']['title'].should eq 'Foo'
|
86
|
+
end
|
87
|
+
|
88
|
+
it "value is correct parent with a zendesk translation" do
|
89
|
+
@app_translations['parent_with_child_title_nested']['title']['value'].should eq 'Foo'
|
90
|
+
end
|
91
|
+
|
92
|
+
it "value is correct parent with a child that has a nested zendesk translation" do
|
93
|
+
@app_translations['parent_with_nested_zendesk_translation']['title'].should eq 'Foo'
|
94
|
+
end
|
95
|
+
|
96
|
+
it "value is correct parent with a child that has an invalid nested zendesk translation" do
|
97
|
+
@app_translations['parent_with_nested_invalid_zendesk_translation']['title'].should eq({ "title" => "Bar", "desc" => "Foo" })
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
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.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-10-
|
15
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: i18n
|
@@ -154,6 +154,7 @@ files:
|
|
154
154
|
- lib/zendesk_apps_support/assets/default_styles.scss
|
155
155
|
- lib/zendesk_apps_support/assets/default_template.html.erb
|
156
156
|
- lib/zendesk_apps_support/assets/src.js.erb
|
157
|
+
- lib/zendesk_apps_support/build_translation.rb
|
157
158
|
- lib/zendesk_apps_support/engine.rb
|
158
159
|
- lib/zendesk_apps_support/i18n.rb
|
159
160
|
- lib/zendesk_apps_support/package.rb
|
@@ -179,6 +180,7 @@ files:
|
|
179
180
|
- spec/app/translations/en.json
|
180
181
|
- spec/app_file_spec.rb
|
181
182
|
- spec/app_version_spec.rb
|
183
|
+
- spec/build_translation_spec.rb
|
182
184
|
- spec/i18n_spec.rb
|
183
185
|
- spec/package_spec.rb
|
184
186
|
- spec/validations/jshint_error_spec.rb
|
@@ -223,6 +225,7 @@ test_files:
|
|
223
225
|
- spec/app/translations/en.json
|
224
226
|
- spec/app_file_spec.rb
|
225
227
|
- spec/app_version_spec.rb
|
228
|
+
- spec/build_translation_spec.rb
|
226
229
|
- spec/i18n_spec.rb
|
227
230
|
- spec/package_spec.rb
|
228
231
|
- spec/validations/jshint_error_spec.rb
|