decidim-dev 0.27.4 → 0.28.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/{dummy_resources → dev}/create_dummy_resource.rb +1 -2
  3. data/app/controllers/decidim/{dummy_resources → dev}/dummy_resources_controller.rb +2 -2
  4. data/app/events/decidim/dev/dummy_resource_event.rb +10 -0
  5. data/app/forms/decidim/{dummy_resources → dev}/dummy_resource_form.rb +1 -1
  6. data/app/jobs/decidim/dev/hide_all_created_by_author_job.rb +13 -0
  7. data/app/mailers/decidim/{dummy_resources → dev}/dummy_resource_mailer.rb +1 -1
  8. data/app/models/decidim/dev/application_record.rb +9 -0
  9. data/app/models/decidim/dev/coauthorable_dummy_resource.rb +10 -0
  10. data/app/models/decidim/dev/dummy_resource.rb +93 -0
  11. data/app/models/decidim/dev/nested_dummy_resource.rb +10 -0
  12. data/app/packs/src/decidim/dev/accessibility.js +3 -3
  13. data/app/packs/src/decidim/dev/test/custom_map_factory.js +1 -1
  14. data/app/packs/stylesheets/decidim/dev/_accessibility.scss +24 -24
  15. data/app/packs/stylesheets/decidim/dev/_map.scss +10 -0
  16. data/app/packs/stylesheets/decidim/dev.scss +1 -0
  17. data/app/presenters/decidim/dev/official_author_presenter.rb +33 -0
  18. data/app/serializers/decidim/dev/dummy_serializer.rb +21 -0
  19. data/app/views/decidim/dev/dummy_resources/show.html.erb +25 -0
  20. data/config/environment.rb +3 -0
  21. data/config/locales/ar.yml +0 -1
  22. data/config/locales/bg.yml +0 -1
  23. data/config/locales/cs.yml +4 -4
  24. data/config/locales/de.yml +2 -2
  25. data/config/locales/el.yml +0 -1
  26. data/config/locales/en.yml +1 -1
  27. data/config/locales/es-MX.yml +1 -1
  28. data/config/locales/es-PY.yml +1 -1
  29. data/config/locales/eu.yml +14 -8
  30. data/config/locales/gl.yml +0 -1
  31. data/config/locales/hu.yml +0 -1
  32. data/config/locales/id-ID.yml +0 -1
  33. data/config/locales/it.yml +0 -1
  34. data/config/locales/lv.yml +0 -1
  35. data/config/locales/nl.yml +0 -1
  36. data/config/locales/no.yml +0 -1
  37. data/config/locales/pl.yml +0 -1
  38. data/config/locales/pt-BR.yml +0 -1
  39. data/config/locales/pt.yml +0 -1
  40. data/config/locales/ru.yml +0 -1
  41. data/config/locales/sk.yml +0 -1
  42. data/config/locales/sq-AL.yml +1 -0
  43. data/config/locales/sv.yml +1 -1
  44. data/config/locales/th-TH.yml +1 -0
  45. data/config/locales/tr-TR.yml +0 -1
  46. data/config/locales/zh-CN.yml +0 -1
  47. data/config/rubocop/disabled.yml +11 -0
  48. data/config/rubocop/faker.yml +480 -0
  49. data/config/rubocop/rails.yml +105 -0
  50. data/config/rubocop/rspec.yml +69 -0
  51. data/config/rubocop/ruby.yml +1207 -0
  52. data/lib/decidim/dev/admin.rb +8 -0
  53. data/lib/decidim/dev/admin_engine.rb +43 -0
  54. data/lib/decidim/dev/assets/import_participatory_space_private_users.csv +2 -2
  55. data/lib/decidim/dev/assets/import_participatory_space_private_users_invalid_col_sep.csv +2 -0
  56. data/lib/decidim/dev/assets/import_participatory_space_private_users_nok.csv +2 -2
  57. data/lib/decidim/dev/assets/import_participatory_space_private_users_with_bom.csv +1 -1
  58. data/lib/decidim/dev/assets/iso-8859-15.md +1 -1
  59. data/lib/decidim/dev/assets/participatory_text.md +4 -2
  60. data/lib/decidim/dev/assets/verify_user_groups.csv +22 -22
  61. data/lib/decidim/dev/component.rb +94 -0
  62. data/lib/decidim/dev/engine.rb +21 -3
  63. data/lib/decidim/dev/test/base_spec_helper.rb +1 -0
  64. data/lib/decidim/dev/test/factories.rb +50 -0
  65. data/lib/decidim/dev/test/form_to_param_shared_examples.rb +1 -1
  66. data/lib/decidim/dev/test/promoted_participatory_processes_shared_examples.rb +9 -9
  67. data/lib/decidim/dev/test/rspec_support/accessibility_examples.rb +119 -1
  68. data/lib/decidim/dev/test/rspec_support/attachment_helpers.rb +2 -2
  69. data/lib/decidim/dev/test/rspec_support/bullet.rb +32 -0
  70. data/lib/decidim/dev/test/rspec_support/capybara.rb +26 -21
  71. data/lib/decidim/dev/test/rspec_support/cell_matchers.rb +1 -1
  72. data/lib/decidim/dev/test/rspec_support/component.rb +7 -317
  73. data/lib/decidim/dev/test/rspec_support/component_context.rb +10 -10
  74. data/lib/decidim/dev/test/rspec_support/confirmation_helpers.rb +18 -14
  75. data/lib/decidim/dev/test/rspec_support/data_consent.rb +2 -2
  76. data/lib/decidim/dev/test/rspec_support/dynamic_attach.rb +19 -4
  77. data/lib/decidim/dev/test/rspec_support/editor_context.rb +35 -0
  78. data/lib/decidim/dev/test/rspec_support/engine_examples.rb +15 -0
  79. data/lib/decidim/dev/test/rspec_support/filters.rb +11 -0
  80. data/lib/decidim/dev/test/rspec_support/forms_validations.rb +20 -0
  81. data/lib/decidim/dev/test/rspec_support/geocoder.rb +7 -7
  82. data/lib/decidim/dev/test/rspec_support/helpers.rb +187 -34
  83. data/lib/decidim/dev/test/rspec_support/imports_controller_shared_examples.rb +13 -13
  84. data/lib/decidim/dev/test/rspec_support/tom_select.rb +26 -0
  85. data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +8 -8
  86. data/lib/decidim/dev/test/rspec_support/warden.rb +1 -1
  87. data/lib/decidim/dev/test/rspec_support/webpacker.rb +10 -0
  88. data/lib/decidim/dev/test/spec_helper.rb +15 -4
  89. data/lib/decidim/dev/test/w3c_rspec_validators_overrides.rb +1 -5
  90. data/lib/decidim/dev/version.rb +1 -1
  91. data/lib/decidim/dev.rb +22 -0
  92. data/lib/decidim-dev.rb +1 -1
  93. data/lib/tasks/lighthouse_report.rake +29 -7
  94. data/rubocop-decidim.yml +13 -0
  95. metadata +125 -71
  96. data/app/views/decidim/dummy_resources/dummy_resources/show.html.erb +0 -15
  97. data/lib/decidim/dev/test/rspec_support/capybara_data_picker.rb +0 -36
  98. data/lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb +0 -92
  99. data/lib/decidim/dev/test/rspec_support/summary_notification.rb +0 -51
  100. data/lib/rubocop/cop/decidim/hash_shorthand_syntax_backports.rb +0 -175
  101. data/lib/rubocop/cop/decidim.rb +0 -9
  102. /data/app/views/decidim/{dummy_resources → dev}/dummy_resources/foo.html.erb +0 -0
@@ -34,7 +34,6 @@ id:
34
34
  description_own: Anda telah membuat %{score} tes.
35
35
  name: Tes
36
36
  next_level_in: Buat %{score} tes lagi untuk mencapai level selanjutnya!
37
- unearned_another: Peserta ini belum membuat tes apa pun.
38
37
  unearned_own: Anda belum membuat tes.
39
38
  resource_links:
40
39
  test_link:
@@ -47,7 +47,6 @@ it:
47
47
  description_own: Hai creato %{score} test.
48
48
  name: Test
49
49
  next_level_in: Crea altri %{score} test per raggiungere il livello successivo!
50
- unearned_another: Questo utente non ha ancora creato alcun test.
51
50
  unearned_own: Non hai ancora creato alcun test.
52
51
  resource_links:
53
52
  test_link:
@@ -39,7 +39,6 @@ lv:
39
39
  description_own: Jūs esat izveidojis %{score} testus.
40
40
  name: Testi
41
41
  next_level_in: Izveidojiet vēl dažus %{score} testus, lai sasniegtu nākamo līmeni!
42
- unearned_another: Šis dalībnieks vēl nav izveidojis nevienu testu.
43
42
  unearned_own: Jūs vēl neesat izveidojis nevienu testu.
44
43
  resource_links:
45
44
  test_link:
@@ -47,7 +47,6 @@ nl:
47
47
  description_own: U hebt %{score} tests gemaakt.
48
48
  name: Tests
49
49
  next_level_in: Maak %{score} extra tests om het volgende niveau te bereiken!
50
- unearned_another: Deze gebruiker heeft nog geen tests gemaakt.
51
50
  unearned_own: U hebt nog geen tests gemaakt.
52
51
  resource_links:
53
52
  test_link:
@@ -47,7 +47,6 @@
47
47
  description_own: Du har opprettet %{score} tester.
48
48
  name: Tester
49
49
  next_level_in: Opprett %{score} flere tester for å nå neste nivå!
50
- unearned_another: Denne deltakeren har ikke opprettet en test ennå.
51
50
  unearned_own: Du har ikke laget noen tester ennå.
52
51
  resource_links:
53
52
  test_link:
@@ -45,7 +45,6 @@ pl:
45
45
  description_own: Utworzyłeś %{score} testów.
46
46
  name: Testy
47
47
  next_level_in: Stwórz %{score} dodatkowych testów, aby przejść do następnego poziomu!
48
- unearned_another: Ten użytkownik nie utworzył jeszcze żadnych testów.
49
48
  unearned_own: Nie stworzyłeś jeszcze żadnych testów.
50
49
  resource_links:
51
50
  test_link:
@@ -45,7 +45,6 @@ pt-BR:
45
45
  description_own: Você criou %{score} testes.
46
46
  name: Testes
47
47
  next_level_in: Crie mais %{score} testes para alcançar o próximo nível!
48
- unearned_another: Este usuário ainda não criou nenhum teste.
49
48
  unearned_own: Você não criou testes ainda.
50
49
  resource_links:
51
50
  test_link:
@@ -47,7 +47,6 @@ pt:
47
47
  description_own: Criou %{score} testes.
48
48
  name: Testes
49
49
  next_level_in: Crie mais %{score} testes para alcançar o próximo nível!
50
- unearned_another: Este participante ainda não criou nenhum teste.
51
50
  unearned_own: Ainda não criou qualquer teste.
52
51
  resource_links:
53
52
  test_link:
@@ -35,7 +35,6 @@ ru:
35
35
  description_own: Вы написали %{score} тест.
36
36
  name: Тесты
37
37
  next_level_in: Напишите еще %{score} тестов, чтобы достичь следующего уровня!
38
- unearned_another: Этот участник еще не написал тестов.
39
38
  unearned_own: Вы еще не написали тестов.
40
39
  resource_links:
41
40
  test_link:
@@ -37,7 +37,6 @@ sk:
37
37
  description_own: Vytvorili ste %{score} testov.
38
38
  name: Testy
39
39
  next_level_in: Vytvorte o %{score} testov viac pre dosiahnutie ďalšej úrovne!
40
- unearned_another: Tento účastník nevytvoril žiadny test.
41
40
  unearned_own: Zatiaľ ste nevytvorili žiadny test.
42
41
  resource_links:
43
42
  test_link:
@@ -0,0 +1 @@
1
+ sq:
@@ -16,6 +16,7 @@ sv:
16
16
  settings:
17
17
  global:
18
18
  guided: Guidad ingång
19
+ guided_help: Hjälptext
19
20
  readonly_attribute: Skrivskyddat attribut
20
21
  test: Ett test
21
22
  test_choices:
@@ -48,7 +49,6 @@ sv:
48
49
  description_own: Du har skapat %{score} tester.
49
50
  name: Tester
50
51
  next_level_in: Skapa %{score} till tester för att nå nästa nivå!
51
- unearned_another: Deltagaren har inte skapat några tester än.
52
52
  unearned_own: Du har inte skapat några tester än.
53
53
  resource_links:
54
54
  test_link:
@@ -0,0 +1 @@
1
+ th:
@@ -45,7 +45,6 @@ tr:
45
45
  description_own: '%{score} test oluşturdunuz.'
46
46
  name: Testler
47
47
  next_level_in: Bir sonraki seviyeye ulaşmak için %{score} test daha oluştur!
48
- unearned_another: Bu katılımcı henüz bir test oluşturmadı.
49
48
  unearned_own: Henüz bir test oluşturmadınız.
50
49
  resource_links:
51
50
  test_link:
@@ -45,7 +45,6 @@ zh-CN:
45
45
  description_own: 您已创建了 %{score} 个测试。
46
46
  name: 测试
47
47
  next_level_in: 再创建 %{score} 个测试以达到下一关!
48
- unearned_another: 此参与者尚未创建任何测试。
49
48
  unearned_own: 您还没有创建测试。
50
49
  resource_links:
51
50
  test_link:
@@ -0,0 +1,11 @@
1
+ Style/OpenStructUse:
2
+ Enabled: false
3
+
4
+ Gemspec/RequireMFA:
5
+ Enabled: false
6
+
7
+ Naming/MemoizedInstanceVariableName:
8
+ Enabled: false
9
+
10
+ RSpec/VerifiedDoubleReference:
11
+ Enabled: false
@@ -0,0 +1,480 @@
1
+ require: rubocop-faker
2
+
3
+ Faker/DeprecatedArguments:
4
+ Description: 'Checks that Faker arguments style is based on Faker 2.'
5
+ Enabled: true
6
+ VersionAdded: '0.1'
7
+ Reference: 'https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md#v20-2019-31-07'
8
+ ArgumentKeywords:
9
+ #
10
+ # FakerClassName:
11
+ # method_name:
12
+ # - keyword_name_for_first_argument
13
+ # - keyword_name_for_second_argument
14
+ # - keyword_name_for_third_argument
15
+ #
16
+ Faker::Dune:
17
+ quote:
18
+ - character
19
+ saying:
20
+ - source
21
+ Faker::Books::Lovecraft:
22
+ fhtagn:
23
+ - number
24
+ sentence:
25
+ - word_count
26
+ - random_words_to_add
27
+ words:
28
+ - number
29
+ - spaces_allowed
30
+ sentences:
31
+ - number
32
+ paragraph:
33
+ - sentence_count
34
+ - random_sentences_to_add
35
+ paragraphs:
36
+ - number
37
+ paragraph_by_chars:
38
+ - characters
39
+ Faker::Address:
40
+ city:
41
+ - options
42
+ street_address:
43
+ - include_secondary
44
+ zip_code:
45
+ - state_abbreviation
46
+ country_by_code:
47
+ - code
48
+ country_name_to_code:
49
+ - name
50
+ Faker::Alphanumeric:
51
+ alpha:
52
+ - number
53
+ alphanumeric:
54
+ - number
55
+ Faker::App:
56
+ semantic_version:
57
+ - major
58
+ - minor
59
+ - patch
60
+ Faker::Avatar:
61
+ image:
62
+ - slug
63
+ - size
64
+ - format
65
+ - set
66
+ - bgset
67
+ Faker::Bank:
68
+ account_number:
69
+ - digits
70
+ iban:
71
+ - country_code
72
+ Faker::Boolean:
73
+ boolean:
74
+ - true_ratio
75
+ Faker::ChileRut:
76
+ rut:
77
+ - min_rut
78
+ - fixed
79
+ full_rut:
80
+ - min_rut
81
+ - fixed
82
+ Faker::Code:
83
+ isbn:
84
+ - base
85
+ ean:
86
+ - base
87
+ nric:
88
+ - min_age
89
+ - max_age
90
+ Faker::Commerce:
91
+ promotion_code:
92
+ - digits
93
+ department:
94
+ - max
95
+ - fixed_amount
96
+ price:
97
+ - range
98
+ - as_string
99
+ Faker::Company:
100
+ polish_register_of_national_economy:
101
+ - length
102
+ brazilian_company_number:
103
+ - formatted
104
+ Faker::CryptoCoin:
105
+ coin_name:
106
+ - coin
107
+ acronym:
108
+ - coin
109
+ url_logo:
110
+ - coin
111
+ Faker::Date:
112
+ between:
113
+ - from
114
+ - to
115
+ between_except:
116
+ - from
117
+ - to
118
+ - excepted
119
+ forward:
120
+ - days
121
+ backward:
122
+ - days
123
+ birthday:
124
+ - min_age
125
+ - max_age
126
+ Faker::Demographic:
127
+ height:
128
+ - unit
129
+ Faker::DrivingLicence:
130
+ british_driving_licence:
131
+ - last_name
132
+ - initials
133
+ - gender
134
+ - date_of_birth
135
+ Faker::File:
136
+ dir:
137
+ - segment_count
138
+ - root
139
+ - directory_separator
140
+ file_name:
141
+ - dir
142
+ - name
143
+ - ext
144
+ - directory_separator
145
+ Faker::Fillmurray:
146
+ image:
147
+ - grayscale
148
+ - width
149
+ - height
150
+ Faker::Finance:
151
+ vat_number:
152
+ - country
153
+ Faker::Hipster:
154
+ words:
155
+ - number
156
+ - supplemental
157
+ - spaces_allowed
158
+ sentence:
159
+ - word_count
160
+ - supplemental
161
+ - random_words_to_add
162
+ sentences:
163
+ - number
164
+ - supplemental
165
+ paragraph:
166
+ - sentence_count
167
+ - supplemental
168
+ - random_sentences_to_add
169
+ paragraphs:
170
+ - number
171
+ - supplemental
172
+ paragraph_by_chars:
173
+ - characters
174
+ - supplemental
175
+ Faker::IDNumber:
176
+ brazilian_citizen_number:
177
+ - formatted
178
+ brazilian_id:
179
+ - formatted
180
+ Faker::Internet:
181
+ email:
182
+ - name
183
+ - separators
184
+ free_email:
185
+ - name
186
+ safe_email:
187
+ - name
188
+ username:
189
+ - specifier
190
+ - separators
191
+ password:
192
+ - min_length
193
+ - max_length
194
+ - mix_case
195
+ - special_characters
196
+ domain_name:
197
+ - subdomain
198
+ fix_umlauts:
199
+ - string
200
+ mac_address:
201
+ - prefix
202
+ url:
203
+ - host
204
+ - path
205
+ - scheme
206
+ slug:
207
+ - words
208
+ - glue
209
+ user_agent:
210
+ - vendor
211
+ Faker::Invoice:
212
+ amount_between:
213
+ - from
214
+ - to
215
+ creditor_reference:
216
+ - ref
217
+ reference:
218
+ - ref
219
+ Faker::Json:
220
+ shallow_json:
221
+ - width
222
+ - options
223
+ add_depth_to_json:
224
+ - json
225
+ - width
226
+ - options
227
+ Faker::Lorem:
228
+ words:
229
+ - number
230
+ - supplemental
231
+ characters:
232
+ - number
233
+ sentence:
234
+ - word_count
235
+ - supplemental
236
+ - random_words_to_add
237
+ sentences:
238
+ - number
239
+ - supplemental
240
+ paragraph:
241
+ - sentence_count
242
+ - supplemental
243
+ - random_sentences_to_add
244
+ paragraphs:
245
+ - number
246
+ - supplemental
247
+ paragraph_by_chars:
248
+ - number
249
+ - supplemental
250
+ question:
251
+ - word_count
252
+ - supplemental
253
+ - random_words_to_add
254
+ questions:
255
+ - number
256
+ - supplemental
257
+ Faker::LoremFlickr:
258
+ image:
259
+ - size
260
+ - search_terms
261
+ - match_all
262
+ grayscale_image:
263
+ - size
264
+ - search_terms
265
+ - match_all
266
+ pixelated_image:
267
+ - size
268
+ - search_terms
269
+ - match_all
270
+ colorized_image:
271
+ - size
272
+ - color
273
+ - search_terms
274
+ - match_all
275
+ Faker::LoremPixel:
276
+ image:
277
+ - size
278
+ - is_gray
279
+ - category
280
+ - number
281
+ - text
282
+ - secure
283
+ Faker::Markdown:
284
+ sandwich:
285
+ - sentences
286
+ - repeat
287
+ Faker::Measurement:
288
+ height:
289
+ - amount
290
+ length:
291
+ - amount
292
+ volume:
293
+ - amount
294
+ weight:
295
+ - amount
296
+ metric_height:
297
+ - amount
298
+ metric_length:
299
+ - amount
300
+ metric_volume:
301
+ - amount
302
+ metric_weight:
303
+ - amount
304
+ Faker::Name:
305
+ initials:
306
+ - number
307
+ Faker::NationalHealthService:
308
+ check_digit:
309
+ - number
310
+ Faker::Number:
311
+ number:
312
+ - digits
313
+ leading_zero_number:
314
+ - digits
315
+ decimal_part:
316
+ - digits
317
+ decimal:
318
+ - l_digits
319
+ - r_digits
320
+ hexadecimal:
321
+ - digits
322
+ normal:
323
+ - mean
324
+ - standard_deviation
325
+ between:
326
+ - from
327
+ - to
328
+ within:
329
+ - range
330
+ positive:
331
+ - from
332
+ - to
333
+ negative:
334
+ - from
335
+ - to
336
+ Faker::Omniauth:
337
+ google:
338
+ - name
339
+ - email
340
+ - uid
341
+ facebook:
342
+ - name
343
+ - email
344
+ - username
345
+ - uid
346
+ twitter:
347
+ - name
348
+ - nickname
349
+ - uid
350
+ linkedin:
351
+ - name
352
+ - email
353
+ - uid
354
+ github:
355
+ - name
356
+ - email
357
+ - uid
358
+ Faker::PhoneNumber:
359
+ subscriber_number:
360
+ - length
361
+ Faker::Placeholdit:
362
+ image:
363
+ - size
364
+ - format
365
+ - background_color
366
+ - text_color
367
+ - text
368
+ Faker::Relationship:
369
+ familial:
370
+ - connection
371
+ Faker::Source:
372
+ hello_world:
373
+ - lang
374
+ print:
375
+ - str
376
+ - lang
377
+ print_1_to_10:
378
+ - lang
379
+ Faker::String:
380
+ random:
381
+ - length
382
+ Faker::Stripe:
383
+ valid_card:
384
+ - card_type
385
+ valid_token:
386
+ - card_type
387
+ invalid_card:
388
+ - card_error
389
+ ccv:
390
+ - card_type
391
+ Faker::Time:
392
+ between:
393
+ - from
394
+ - to
395
+ - format
396
+ between_dates:
397
+ - from
398
+ - to
399
+ - period
400
+ - format
401
+ forward:
402
+ - days
403
+ - period
404
+ - format
405
+ backward:
406
+ - days
407
+ - period
408
+ - format
409
+ Faker::Twitter:
410
+ user:
411
+ - include_status
412
+ - include_email
413
+ status:
414
+ - include_user
415
+ - include_photo
416
+ status_entities:
417
+ - include_photo
418
+ Faker::Types:
419
+ rb_string:
420
+ - words
421
+ rb_integer:
422
+ - from
423
+ - to
424
+ rb_hash:
425
+ - number
426
+ - type
427
+ complex_rb_hash:
428
+ - number
429
+ rb_array:
430
+ - len
431
+ Faker::Vehicle:
432
+ model:
433
+ - make_of_model
434
+ mileage:
435
+ - min
436
+ - max
437
+ license_plate:
438
+ - state_abbreviation
439
+ Faker::WorldCup:
440
+ group:
441
+ - group
442
+ roster:
443
+ - country
444
+ - type
445
+ Faker::Dota:
446
+ quote:
447
+ - hero
448
+ Faker::Movies::StarWars:
449
+ quote:
450
+ - character
451
+ Decidim::Faker::Localized:
452
+ words:
453
+ - number
454
+ - supplemental
455
+ characters:
456
+ - number
457
+ sentence:
458
+ - word_count
459
+ - supplemental
460
+ - random_words_to_add
461
+ sentences:
462
+ - number
463
+ - supplemental
464
+ paragraph:
465
+ - sentence_count
466
+ - supplemental
467
+ - random_sentences_to_add
468
+ paragraphs:
469
+ - number
470
+ - supplemental
471
+ paragraph_by_chars:
472
+ - number
473
+ - supplemental
474
+ question:
475
+ - word_count
476
+ - supplemental
477
+ - random_words_to_add
478
+ questions:
479
+ - number
480
+ - supplemental