i18n_yaml_editor 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/views/layout.erb ADDED
@@ -0,0 +1,171 @@
1
+ <html>
2
+ <head>
3
+ <title>I18n Yaml Editor</title>
4
+ <link href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAMAAAC8EZcfAAACLlBMVEX///8CFn8BLngAAAAABQIRJJgdTIQAE3UADWMAAAUAFxYAAAQAEhMAHnQAKpQAAAAGPZ0HPJUGO5AfTakGOowHPZsBJXsBI28BJHYBJXwBJX4AZzcAJXgHOoIHOZIBI3ECJX8DJ4wDKZYDKpwoQMUDKJkBJ48GOJAPUp0DJHcFJ4sGKpwGLakGL7MROb0SgT0Ugz4FG68FGqUDI50HPZwIKpAJLqQKMbUKM8MKNc8nnUQupkYrokgJIsQIH7UGGqIVSKUPMqUPNboPOMwPLNgpP+o0u0Iwvz4vwD0wvz8iOeMPKM8OJb0LNq8AZzwYK7EXLscWL90VMvAVNv4VQ/8g1Ckf1Sgh0yoYNvgYM+YZMdMVKrsAaDgWhz4zSu0cQf8cV/8bZf8ba/8udPgUiYguXushQPklPuQoPc5DWscLdzsjl0I3tUgjb6IlW/8jbv8ogv8rk/8rkf4NUsMpdf8VlnczTfBAV9sAZzkURacspEUxvj8wUv8taf8wiP89p/9Hv/9Bs/81mP8ygv8H6BYTc5dab+MZiUFHadssxDo7a/82fP89lv9Tvv9u7P9bzv94y1lK5iAB/QATnmwbjUE1sEgvUdtGcf9Af/9Flv9Xt/9yxfzN5WWo4EBk5x4V/gBegfcsWL1hgepTePpNgP9Ljf9RoP+g4k232U2d4S9d7hIO/gBefeBegPBdgv5WiP9Uj/9Wlf9Ne9Bp7BUuzDRegPFegvxdhv9aiP9ch//3mJK5AAAAEHRSTlMAQkICAn6F1dEyMjw68e8KaIdkvgAAAhBJREFUGJXt3Nf7z3UYx3FCRsleWSWZyd5SUokKZURCdnYkO6EIWdkz2avIiv47Z4/Pyffgd/m5XD5dr8fhffJ+nt3XffKuUaOKavIfj3jIvzzgBar62hNIYAITmMAEPkeBtbjPPe5yh3+4zS3+5i8SmMAEJjCB/7/AIusmN7jONa5yhctc4iIXOE9tEpjABCYwgeUO/JNz/MFZznCaU5zkBMc5xlGOkMAEJjCBCSxjYB0Oc4jfOcgB9rOPvfzGHnazi195kQQmMIEJTGB5Aneyg1/4me1sYys/sYUf2cwmNrKB9SQwgQlMYALLE7iOtfzAGr5nNav4jpWsYDnLWMoSFpPABCYwgQksT+C3LGIhC5jPPOYyh2+YzSyKBTeTrytIYAITmMAElidwBl8xnWl8yVSmMJlJfMHnTGQCRdZ4EpjABCYwgeUJ/IxP+YRxjOVjxvARH/IBo3mfURSB75HABCYwgQksT2Bd3mUk7zCC4RQn0DCGMoTBDGIgRWA9EpjABCYwgeUJLAygP/3oSx968za9eIue9KA73aiYlcAEJjCBCSxNYH260oU3KVZTZ96gE6/zGh3pQAMSmMAEJjCB5Q4svER72tGWV2lDa1rRkha8TJWzEpjABCYwgaUJrKQhzWlGU5rQmFd4SjEJTGACE5jAEgZWUnwl1ohi9oxjKklgdSWwuhJYXQmsrmcR+BjUxljOlxq/tAAAAABJRU5ErkJggg==" rel="icon" type="image/x-icon" />
5
+ <style>
6
+ /* GENERAL */
7
+ body {
8
+ font-family: sans-serif;
9
+ font-size: 0.7em;
10
+ margin: 0;
11
+ margin-top: 60px;
12
+ }
13
+
14
+ /* HEADER */
15
+ .header {
16
+ min-width: 946px;
17
+ margin: 0;
18
+ padding: 1em;
19
+ background-color: #fff;
20
+ z-index: 999 !important;
21
+ position: fixed;
22
+ top: 0;
23
+ width: 100%;
24
+ -webkit-box-shadow: 0 8px 6px -6px #ccc;
25
+ -moz-box-shadow: 0 8px 6px -6px #ccc;
26
+ box-shadow: 0 8px 6px -6px #ccc;
27
+ }
28
+
29
+ .header h1, .header form {
30
+ display: inline;
31
+ vertical-align: middle;
32
+ }
33
+
34
+ .header h1 {
35
+ margin-right: 2em;
36
+ }
37
+
38
+ .pull-right {
39
+ float:right;
40
+ padding-right:20px;
41
+ }
42
+
43
+ /* STATS */
44
+ .content > .stats {
45
+ padding-left: 0.5em;
46
+ font-size: 1.2em;
47
+ border-bottom: 1px solid #bbb;
48
+ }
49
+
50
+ .content > .stats > span {
51
+ display: inline-block;
52
+ margin-bottom: 0.5em;
53
+ }
54
+
55
+ .content > .stats > .done {
56
+ border-bottom: 2px solid #3f3;
57
+ }
58
+
59
+ .content > .stats > .incomplete {
60
+ border-bottom: 2px solid #f33;
61
+ }
62
+
63
+ .content > .stats > .empty {
64
+ border-bottom: 2px solid #33f;
65
+ }
66
+
67
+ /* TRANSLATIONS */
68
+ table.keys {
69
+ width: 100%;
70
+ }
71
+
72
+ table.keys .key {
73
+ padding-left: 0.5em;
74
+ }
75
+
76
+ table.keys tr.translation > td {
77
+ border-bottom: 1px solid #bbb;
78
+ }
79
+
80
+ table.keys tr.translation.incomplete .key .text {
81
+ border-bottom: 3px solid #f33;
82
+ }
83
+
84
+ table.keys tr.translation.empty .key .text {
85
+ border-bottom: 3px solid #33f;
86
+ }
87
+
88
+ table.keys td.key {
89
+ width: 300px;
90
+ }
91
+
92
+ table.locales td.value input {
93
+ width: 600px;
94
+ }
95
+
96
+ table.locales td.value input[type=radio] {
97
+ width: 20px;
98
+ }
99
+
100
+ table.locales td.value label {
101
+ margin-right: 20px;
102
+ }
103
+
104
+ /* CATEGORIES */
105
+
106
+ table.categories {
107
+ width: 100%;
108
+ }
109
+
110
+ table.categories .key {
111
+ padding-left: 0.5em;
112
+ }
113
+
114
+ table.categories tr.category a {
115
+ text-decoration: none;
116
+ }
117
+
118
+ table.categories tr.category > td {
119
+ border-bottom: 1px solid #bbb;
120
+ }
121
+
122
+ table.categories tr.category > td {
123
+ padding-top: 1em;
124
+ padding-bottom: 1em;
125
+ }
126
+
127
+ table.categories tr.category.incomplete .key .text {
128
+ border-bottom: 3px solid #f33;
129
+ }
130
+ </style>
131
+ </head>
132
+
133
+ <body>
134
+ <div class="header">
135
+ <h1>I18n Yaml Editor</h1>
136
+
137
+ <form action="/" method="get">
138
+ <label>
139
+ Key:
140
+ <input name="filters[key]" type="text" value="<%= filters["key"] %>" />
141
+ </label>
142
+
143
+ <label>
144
+ Text:
145
+ <input name="filters[text]" type="text" value="<%= filters["text"] %>" />
146
+ </label>
147
+
148
+ <label>
149
+ <input name="filters[incomplete]" type="checkbox" <%= "checked=checked" if filters["incomplete"] == "on" %> />
150
+ Incomplete
151
+ </label>
152
+ <label>
153
+ <input name="filters[empty]" type="checkbox" <%= "checked=checked" if filters["empty"] == "on" %> />
154
+ Empty
155
+ </label>
156
+
157
+ <input type="submit" value="Filter" />
158
+ </form>
159
+
160
+ <form action="/" method="get">
161
+ <input type="submit" value="Clear" />
162
+ </form>
163
+
164
+ <div id="save-on-top-container" class="pull-right"></div>
165
+ </div>
166
+
167
+ <div class="content">
168
+ <%= content %>
169
+ </div>
170
+ </body>
171
+ </html>
@@ -0,0 +1,119 @@
1
+ <div class="stats">
2
+ stats: {
3
+ total: <span class=""><%= keys.length %></span>,
4
+ <span class="done">done: <%= keys.count{|_,key| key.complete? && !key.empty?} %></span>,
5
+ <span class="incomplete">incomplete: <%= keys.count{|_,key| !key.complete?} %></span>,
6
+ <span class="empty">empty: <%= keys.count{|_,key| key.empty?} %></span>}
7
+ </div>
8
+
9
+ <form id="updateform" action="/update" method="post">
10
+ <% filters.each do |filter, value| %>
11
+ <input name="filters[<%= filter %>" type="hidden" value="<%= value %>" class="changed"/>
12
+ <% end %>
13
+
14
+ <table class="keys" cellspacing="0">
15
+ <% keys.each do |name, key| %>
16
+ <tr class="translation
17
+ <%= "incomplete" unless key.complete? %>
18
+ <%= "empty" if key.empty? %>
19
+ ">
20
+ <td class="key">
21
+ <span class="text"><%= key.name %></span>
22
+ </td>
23
+ <td class="translations">
24
+ <table class="locales">
25
+ <%
26
+ data_type = key.translations.map(&:text).find { |t| t.present? || t == false }.class
27
+ data_type = String if data_type == NilClass
28
+ %>
29
+ <%
30
+ key.translations.sort_by(&:locale).each do |translation|
31
+ translation.text = [] if data_type == Array && translation.text.blank?
32
+ klasses = translation.text.map(&:class).uniq if data_type == Array
33
+ %>
34
+ <tr>
35
+ <td class="locale"><%= translation.locale %>:</td>
36
+ <td class="value">
37
+ <% if data_type == String || data_type < Numeric %>
38
+ <input type="text" name="translations[<%= translation.name %>]" value="<%= Rack::Utils.escape_html translation.text %>" />
39
+ <% elsif [TrueClass, FalseClass].include?(data_type) %>
40
+ <input type="radio" name="translations[<%= translation.name %>]" value="true" <%= 'checked' if translation.text == true %>/><label> True</label>
41
+ <input type="radio" name="translations[<%= translation.name %>]" value="false" <%= 'checked' if translation.text == false %>/><label> False</label>
42
+ <% elsif data_type == Array && (klasses.all? { |klass| klass == String } || klasses.all? { |klass| klass < Numeric}) %>
43
+ <textarea name="translations[<%= translation.name %>]" cols="35" rows="<%= translation.text.count %>"><%= translation.text.join("\n") %></textarea>
44
+ <% else %>
45
+ [read only]
46
+ <%= translation.text.class.name %>
47
+ <%= Rack::Utils.escape_html translation.text.inspect %>
48
+ <% end %>
49
+ </td>
50
+ </tr>
51
+ <% end %>
52
+ </table>
53
+ </td>
54
+ </tr>
55
+ <% end %>
56
+ </table>
57
+
58
+ <p class="pull-right"><input type="submit" id="save" value="Save" /></p>
59
+ </form>
60
+ <script>
61
+ var updateForm = document.getElementById('updateform'),
62
+ saveOnTop = document.createElement('button'),
63
+ idx,
64
+ changes,
65
+ submitForm,
66
+ input,
67
+ inputs = updateForm.getElementsByTagName('input'),
68
+ keygens = updateForm.getElementsByTagName('keygen'),
69
+ selects = updateForm.getElementsByTagName('select'),
70
+ textareas = updateForm.getElementsByTagName('textarea'),
71
+ markChanged = function () {
72
+ if (!(/(?:^|\s)changed(?!\S)/).test(this.className)) {
73
+ this.className += ' changed';
74
+ }
75
+ };
76
+
77
+ saveOnTop.innerHTML = 'Save';
78
+ saveOnTop.onclick = function () { updateForm.onsubmit();};
79
+ document.getElementById('save-on-top-container').appendChild(saveOnTop);
80
+
81
+
82
+ for (idx in inputs) {
83
+ input = inputs[idx];
84
+ if (input.type === 'checkbox' ||
85
+ input.type === 'file' ||
86
+ input.type === 'password' ||
87
+ input.type === 'radio' ||
88
+ input.type === 'range' ||
89
+ input.type === 'search' ||
90
+ input.type === 'text') {
91
+ input.onchange = markChanged;
92
+ }
93
+ }
94
+
95
+ for (idx in keygens) {
96
+ keygens[idx].onchange = markChanged;
97
+ }
98
+
99
+ for (idx in selects) {
100
+ selects[idx].onchange = markChanged;
101
+ }
102
+
103
+ for (idx in textareas) {
104
+ textareas[idx].onchange = markChanged;
105
+ }
106
+
107
+ updateForm.onsubmit = function () {
108
+ submitForm = document.createElement('form');
109
+ submitForm.action = this.action;
110
+ submitForm.method = this.method;
111
+ changes = this.getElementsByClassName('changed');
112
+ while (changes.length > 0) {
113
+ submitForm.appendChild(changes[0]);
114
+ }
115
+ document.body.appendChild(submitForm);
116
+ submitForm.submit();
117
+ return false;
118
+ };
119
+ </script>
metadata ADDED
@@ -0,0 +1,401 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i18n_yaml_editor
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Harry Vangberg
8
+ - Wolfgang Teuber
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-10-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 4.0.2
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 4.0.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: cuba
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '3'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '3'
42
+ - !ruby/object:Gem::Dependency
43
+ name: psych
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 1.3.4
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 1.3.4
56
+ - !ruby/object:Gem::Dependency
57
+ name: tilt
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '1.3'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ - !ruby/object:Gem::Dependency
71
+ name: awesome_print
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: cane
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: flay
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: flog
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: github-markup
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: guard
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: guard-minitest
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: guard-rubocop
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: inch
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: minitest-line
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: minitest-reporters
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: pry-byebug
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: pry-doc
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: rack-test
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: rake
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ - !ruby/object:Gem::Dependency
281
+ name: redcarpet
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ - !ruby/object:Gem::Dependency
295
+ name: rubocop
296
+ requirement: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: '0'
301
+ type: :development
302
+ prerelease: false
303
+ version_requirements: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ - !ruby/object:Gem::Dependency
309
+ name: simplecov
310
+ requirement: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ type: :development
316
+ prerelease: false
317
+ version_requirements: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ version: '0'
322
+ - !ruby/object:Gem::Dependency
323
+ name: yard
324
+ requirement: !ruby/object:Gem::Requirement
325
+ requirements:
326
+ - - ">="
327
+ - !ruby/object:Gem::Version
328
+ version: '0'
329
+ type: :development
330
+ prerelease: false
331
+ version_requirements: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - ">="
334
+ - !ruby/object:Gem::Version
335
+ version: '0'
336
+ description: I18n Yaml Editor
337
+ email: wolfgang.teuber@sage.com
338
+ executables:
339
+ - i18n_yaml_editor
340
+ extensions: []
341
+ extra_rdoc_files: []
342
+ files:
343
+ - README.md
344
+ - Rakefile
345
+ - bin/i18n_yaml_editor
346
+ - i18n_yaml_editor.gemspec
347
+ - lib/i18n_yaml_editor.rb
348
+ - lib/i18n_yaml_editor/app.rb
349
+ - lib/i18n_yaml_editor/cast.rb
350
+ - lib/i18n_yaml_editor/category.rb
351
+ - lib/i18n_yaml_editor/core_ext.rb
352
+ - lib/i18n_yaml_editor/filter.rb
353
+ - lib/i18n_yaml_editor/key.rb
354
+ - lib/i18n_yaml_editor/store.rb
355
+ - lib/i18n_yaml_editor/transformation.rb
356
+ - lib/i18n_yaml_editor/translation.rb
357
+ - lib/i18n_yaml_editor/update.rb
358
+ - lib/i18n_yaml_editor/web.rb
359
+ - test/test_helper.rb
360
+ - test/unit/test_app.rb
361
+ - test/unit/test_category.rb
362
+ - test/unit/test_key.rb
363
+ - test/unit/test_store.rb
364
+ - test/unit/test_transformation.rb
365
+ - test/unit/test_translation.rb
366
+ - views/categories.html.erb
367
+ - views/debug.html.erb
368
+ - views/layout.erb
369
+ - views/translations.html.erb
370
+ homepage: http://github.com/Sage/i18n_yaml_editor
371
+ licenses: []
372
+ metadata: {}
373
+ post_install_message:
374
+ rdoc_options: []
375
+ require_paths:
376
+ - lib
377
+ required_ruby_version: !ruby/object:Gem::Requirement
378
+ requirements:
379
+ - - ">="
380
+ - !ruby/object:Gem::Version
381
+ version: '0'
382
+ required_rubygems_version: !ruby/object:Gem::Requirement
383
+ requirements:
384
+ - - ">="
385
+ - !ruby/object:Gem::Version
386
+ version: '0'
387
+ requirements: []
388
+ rubyforge_project:
389
+ rubygems_version: 2.5.1
390
+ signing_key:
391
+ specification_version: 4
392
+ summary: I18n Yaml Editor
393
+ test_files:
394
+ - test/test_helper.rb
395
+ - test/unit/test_app.rb
396
+ - test/unit/test_category.rb
397
+ - test/unit/test_key.rb
398
+ - test/unit/test_store.rb
399
+ - test/unit/test_transformation.rb
400
+ - test/unit/test_translation.rb
401
+ has_rdoc: