meibo 0.27.1 → 0.28.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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +4 -0
  3. data/.rubocop.yml +14 -2
  4. data/.rubocop_todo.yml +0 -7
  5. data/Gemfile.lock +157 -56
  6. data/README.md +14 -3
  7. data/flake.lock +188 -0
  8. data/flake.nix +55 -0
  9. data/gemset.nix +658 -0
  10. data/lib/meibo/academic_session.rb +21 -21
  11. data/lib/meibo/classroom.rb +47 -34
  12. data/lib/meibo/classroom_set.rb +5 -1
  13. data/lib/meibo/converter.rb +16 -18
  14. data/lib/meibo/course.rb +34 -21
  15. data/lib/meibo/course_set.rb +5 -1
  16. data/lib/meibo/data_model.rb +46 -36
  17. data/lib/meibo/data_set.rb +8 -10
  18. data/lib/meibo/demographic.rb +36 -36
  19. data/lib/meibo/enrollment.rb +22 -22
  20. data/lib/meibo/enrollment_set.rb +9 -2
  21. data/lib/meibo/eportal/v3/classroom.rb +11 -0
  22. data/lib/meibo/eportal/v3/course.rb +11 -0
  23. data/lib/meibo/eportal/v3/enrollment.rb +11 -0
  24. data/lib/meibo/eportal/v3/organization.rb +11 -0
  25. data/lib/meibo/eportal/v3/user.rb +16 -0
  26. data/lib/meibo/eportal/v3/user_profile.rb +11 -0
  27. data/lib/meibo/eportal/v3.rb +30 -0
  28. data/lib/meibo/eportal/v4/user.rb +37 -0
  29. data/lib/meibo/eportal/v4.rb +16 -0
  30. data/lib/meibo/eportal.rb +6 -0
  31. data/lib/meibo/errors.rb +27 -5
  32. data/lib/meibo/factory_bot/academic_session.rb +1 -1
  33. data/lib/meibo/factory_bot/classroom.rb +1 -1
  34. data/lib/meibo/factory_bot/course.rb +1 -1
  35. data/lib/meibo/factory_bot/demographic.rb +1 -1
  36. data/lib/meibo/factory_bot/enrollment.rb +1 -1
  37. data/lib/meibo/factory_bot/manifest.rb +0 -21
  38. data/lib/meibo/factory_bot/organization.rb +1 -1
  39. data/lib/meibo/factory_bot/role.rb +2 -4
  40. data/lib/meibo/factory_bot/user.rb +5 -5
  41. data/lib/meibo/factory_bot/user_profile.rb +1 -1
  42. data/lib/meibo/japan_k12_schools_profile/v1/enrollment.rb +16 -0
  43. data/lib/meibo/japan_k12_schools_profile/v1.rb +20 -0
  44. data/lib/meibo/japan_k12_schools_profile.rb +6 -0
  45. data/lib/meibo/japan_profile/v1_1/academic_session.rb +29 -0
  46. data/lib/meibo/japan_profile/v1_1/classroom.rb +27 -0
  47. data/lib/meibo/japan_profile/v1_1/course.rb +16 -0
  48. data/lib/meibo/japan_profile/v1_1/demographic.rb +11 -0
  49. data/lib/meibo/japan_profile/v1_1/enrollment.rb +47 -0
  50. data/lib/meibo/japan_profile/v1_1/organization.rb +16 -0
  51. data/lib/meibo/japan_profile/v1_1/organization_set.rb +23 -0
  52. data/lib/meibo/japan_profile/v1_1/user.rb +39 -0
  53. data/lib/meibo/japan_profile/v1_1/user_set.rb +17 -0
  54. data/lib/meibo/japan_profile/v1_1.rb +35 -0
  55. data/lib/meibo/japan_profile/v1_1_1.rb +9 -0
  56. data/lib/meibo/japan_profile/v1_2/user.rb +42 -0
  57. data/lib/meibo/japan_profile/v1_2.rb +20 -0
  58. data/lib/meibo/japan_profile.rb +6 -0
  59. data/lib/meibo/manifest.rb +41 -46
  60. data/lib/meibo/oneroster/v1_2/user.rb +43 -0
  61. data/lib/meibo/oneroster/v1_2.rb +62 -0
  62. data/lib/meibo/oneroster/v1_2_1.rb +22 -0
  63. data/lib/meibo/oneroster.rb +6 -0
  64. data/lib/meibo/organization.rb +17 -17
  65. data/lib/meibo/processing_mode.rb +53 -0
  66. data/lib/meibo/profile.rb +8 -4
  67. data/lib/meibo/profiles.rb +12 -120
  68. data/lib/meibo/pse_interoperability_standard/v5.rb +9 -0
  69. data/lib/meibo/pse_interoperability_standard/v6/enrollment.rb +11 -0
  70. data/lib/meibo/pse_interoperability_standard/v6.rb +18 -0
  71. data/lib/meibo/pse_interoperability_standard.rb +6 -0
  72. data/lib/meibo/reader.rb +24 -36
  73. data/lib/meibo/role.rb +24 -24
  74. data/lib/meibo/roster.rb +46 -47
  75. data/lib/meibo/user.rb +35 -35
  76. data/lib/meibo/user_profile.rb +20 -20
  77. data/lib/meibo/user_set.rb +1 -1
  78. data/lib/meibo/version.rb +1 -1
  79. data/lib/meibo.rb +10 -2
  80. data/meibo.gemspec +1 -1
  81. metadata +45 -28
  82. data/lib/meibo/eportal_v3/classroom.rb +0 -15
  83. data/lib/meibo/eportal_v3/course.rb +0 -15
  84. data/lib/meibo/eportal_v3/enrollment.rb +0 -15
  85. data/lib/meibo/eportal_v3/organization.rb +0 -15
  86. data/lib/meibo/eportal_v3/user.rb +0 -16
  87. data/lib/meibo/eportal_v3/user_profile.rb +0 -15
  88. data/lib/meibo/japan_profile/academic_session.rb +0 -29
  89. data/lib/meibo/japan_profile/classroom.rb +0 -24
  90. data/lib/meibo/japan_profile/course.rb +0 -18
  91. data/lib/meibo/japan_profile/demographic.rb +0 -15
  92. data/lib/meibo/japan_profile/enrollment.rb +0 -40
  93. data/lib/meibo/japan_profile/organization.rb +0 -20
  94. data/lib/meibo/japan_profile/organization_set.rb +0 -17
  95. data/lib/meibo/japan_profile/role_jp_m0.rb +0 -26
  96. data/lib/meibo/japan_profile/user.rb +0 -45
  97. data/lib/meibo/japan_profile/user_m0.rb +0 -12
  98. data/lib/meibo/japan_profile/user_set.rb +0 -14
  99. data/lib/meibo/manifest/processing_mode.rb +0 -41
  100. data/lib/meibo/user_m0.rb +0 -47
data/gemset.nix ADDED
@@ -0,0 +1,658 @@
1
+ {
2
+ activesupport = {
3
+ dependencies = ["base64" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "json" "logger" "minitest" "securerandom" "tzinfo" "uri"];
4
+ groups = ["default"];
5
+ platforms = [];
6
+ source = {
7
+ remotes = ["https://rubygems.org"];
8
+ sha256 = "03m2vjhq3nmc8c3hpivxhvkjd8igg16nmv0p2fgdsgacppgy1991";
9
+ target = "ruby";
10
+ type = "gem";
11
+ };
12
+ targets = [];
13
+ version = "8.1.3";
14
+ };
15
+ ast = {
16
+ groups = ["default"];
17
+ platforms = [];
18
+ source = {
19
+ remotes = ["https://rubygems.org"];
20
+ sha256 = "10yknjyn0728gjn6b5syynvrvrwm66bhssbxq8mkhshxghaiailm";
21
+ target = "ruby";
22
+ type = "gem";
23
+ };
24
+ targets = [];
25
+ version = "2.4.3";
26
+ };
27
+ base64 = {
28
+ groups = ["default"];
29
+ platforms = [];
30
+ source = {
31
+ remotes = ["https://rubygems.org"];
32
+ sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7";
33
+ target = "ruby";
34
+ type = "gem";
35
+ };
36
+ targets = [];
37
+ version = "0.3.0";
38
+ };
39
+ bigdecimal = {
40
+ groups = ["default"];
41
+ platforms = [];
42
+ source = {
43
+ remotes = ["https://rubygems.org"];
44
+ sha256 = "1g9zi8c4i7g8zz0c3hxrw6mblrjvgn7akys60clb9si7c1k1gljk";
45
+ target = "ruby";
46
+ type = "gem";
47
+ };
48
+ targets = [];
49
+ version = "4.1.2";
50
+ };
51
+ concurrent-ruby = {
52
+ groups = ["default"];
53
+ platforms = [];
54
+ source = {
55
+ remotes = ["https://rubygems.org"];
56
+ sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb";
57
+ target = "ruby";
58
+ type = "gem";
59
+ };
60
+ targets = [];
61
+ version = "1.3.6";
62
+ };
63
+ connection_pool = {
64
+ groups = ["default"];
65
+ platforms = [];
66
+ source = {
67
+ remotes = ["https://rubygems.org"];
68
+ sha256 = "02ifws3c4x7b54fv17sm4cca18d2pfw1saxpdji2lbd1f6xgbzrk";
69
+ target = "ruby";
70
+ type = "gem";
71
+ };
72
+ targets = [];
73
+ version = "3.0.2";
74
+ };
75
+ csv = {
76
+ groups = ["default"];
77
+ platforms = [];
78
+ source = {
79
+ remotes = ["https://rubygems.org"];
80
+ sha256 = "0gz7r2kazwwwyrwi95hbnhy54kwkfac5swh2gy5p5vw36fn38lbf";
81
+ target = "ruby";
82
+ type = "gem";
83
+ };
84
+ targets = [];
85
+ version = "3.3.5";
86
+ };
87
+ date = {
88
+ groups = ["default"];
89
+ platforms = [];
90
+ source = {
91
+ remotes = ["https://rubygems.org"];
92
+ sha256 = "1h0db8r2v5llxdbzkzyllkfniqw9gm092qn7cbaib73v9lw0c3bm";
93
+ target = "ruby";
94
+ type = "gem";
95
+ };
96
+ targets = [];
97
+ version = "3.5.1";
98
+ };
99
+ debug = {
100
+ dependencies = ["irb" "reline"];
101
+ groups = ["default"];
102
+ platforms = [];
103
+ source = {
104
+ remotes = ["https://rubygems.org"];
105
+ sha256 = "1djjx5332d1hdh9s782dyr0f9d4fr9rllzdcz2k0f8lz2730l2rf";
106
+ target = "ruby";
107
+ type = "gem";
108
+ };
109
+ targets = [];
110
+ version = "1.11.1";
111
+ };
112
+ diff-lcs = {
113
+ groups = ["default"];
114
+ platforms = [];
115
+ source = {
116
+ remotes = ["https://rubygems.org"];
117
+ sha256 = "0qlrj2qyysc9avzlr4zs1py3x684hqm61n4czrsk1pyllz5x5q4s";
118
+ target = "ruby";
119
+ type = "gem";
120
+ };
121
+ targets = [];
122
+ version = "1.6.2";
123
+ };
124
+ drb = {
125
+ groups = ["default"];
126
+ platforms = [];
127
+ source = {
128
+ remotes = ["https://rubygems.org"];
129
+ sha256 = "0wrkl7yiix268s2md1h6wh91311w95ikd8fy8m5gx589npyxc00b";
130
+ target = "ruby";
131
+ type = "gem";
132
+ };
133
+ targets = [];
134
+ version = "2.2.3";
135
+ };
136
+ erb = {
137
+ groups = ["default"];
138
+ platforms = [];
139
+ source = {
140
+ remotes = ["https://rubygems.org"];
141
+ sha256 = "1ncmbdjf2bwmk0jf5cxywns9zbxyfiy4h4p3pzi7yddyjhv81qrq";
142
+ target = "ruby";
143
+ type = "gem";
144
+ };
145
+ targets = [];
146
+ version = "6.0.4";
147
+ };
148
+ factory_bot = {
149
+ dependencies = ["activesupport"];
150
+ groups = ["default"];
151
+ platforms = [];
152
+ source = {
153
+ remotes = ["https://rubygems.org"];
154
+ sha256 = "12abilw8sgpr8250x5rfjs1cll62r1p1pv3slak81j8fcasv7h8z";
155
+ target = "ruby";
156
+ type = "gem";
157
+ };
158
+ targets = [];
159
+ version = "6.6.0";
160
+ };
161
+ i18n = {
162
+ dependencies = ["concurrent-ruby"];
163
+ groups = ["default"];
164
+ platforms = [];
165
+ source = {
166
+ remotes = ["https://rubygems.org"];
167
+ sha256 = "1994i044vdmzzkyr76g8rpl1fq1532wf0sb21xg5r1ilj5iphmr8";
168
+ target = "ruby";
169
+ type = "gem";
170
+ };
171
+ targets = [];
172
+ version = "1.14.8";
173
+ };
174
+ io-console = {
175
+ groups = ["default"];
176
+ platforms = [];
177
+ source = {
178
+ remotes = ["https://rubygems.org"];
179
+ sha256 = "1k0lk3pwadm2myvpg893n8jshmrf2sigrd4ki15lymy7gixaxqyn";
180
+ target = "ruby";
181
+ type = "gem";
182
+ };
183
+ targets = [];
184
+ version = "0.8.2";
185
+ };
186
+ irb = {
187
+ dependencies = ["pp" "prism" "rdoc" "reline"];
188
+ groups = ["default"];
189
+ platforms = [];
190
+ source = {
191
+ remotes = ["https://rubygems.org"];
192
+ sha256 = "1qs8a9vprg7s8krgq4s0pygr91hclqqyz98ik15p0m1sf2h5956y";
193
+ target = "ruby";
194
+ type = "gem";
195
+ };
196
+ targets = [];
197
+ version = "1.18.0";
198
+ };
199
+ json = {
200
+ groups = ["default"];
201
+ platforms = [];
202
+ source = {
203
+ remotes = ["https://rubygems.org"];
204
+ sha256 = "1anz6a6n33x4s3906s0bz6x161kk1ns3h7xxsn3rpxkfsw7k2m33";
205
+ target = "ruby";
206
+ type = "gem";
207
+ };
208
+ targets = [];
209
+ version = "2.19.8";
210
+ };
211
+ language_server-protocol = {
212
+ groups = ["default"];
213
+ platforms = [];
214
+ source = {
215
+ remotes = ["https://rubygems.org"];
216
+ sha256 = "1k0311vah76kg5m6zr7wmkwyk5p2f9d9hyckjpn3xgr83ajkj7px";
217
+ target = "ruby";
218
+ type = "gem";
219
+ };
220
+ targets = [];
221
+ version = "3.17.0.5";
222
+ };
223
+ lint_roller = {
224
+ groups = ["default"];
225
+ platforms = [];
226
+ source = {
227
+ remotes = ["https://rubygems.org"];
228
+ sha256 = "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c";
229
+ target = "ruby";
230
+ type = "gem";
231
+ };
232
+ targets = [];
233
+ version = "1.1.0";
234
+ };
235
+ logger = {
236
+ groups = ["default"];
237
+ platforms = [];
238
+ source = {
239
+ remotes = ["https://rubygems.org"];
240
+ sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
241
+ target = "ruby";
242
+ type = "gem";
243
+ };
244
+ targets = [];
245
+ version = "1.7.0";
246
+ };
247
+ meibo = {
248
+ dependencies = ["csv" "rubyzip" "zeitwerk"];
249
+ groups = ["default"];
250
+ platforms = [];
251
+ source = {
252
+ path = ".";
253
+ type = "path";
254
+ };
255
+ targets = [];
256
+ version = "0.28.0";
257
+ };
258
+ minitest = {
259
+ dependencies = ["drb" "prism"];
260
+ groups = ["default"];
261
+ platforms = [];
262
+ source = {
263
+ remotes = ["https://rubygems.org"];
264
+ sha256 = "1wfnqyfayx9n9j7x871v2ars4hjhfisi1dl24fa64ylq3mns6ghm";
265
+ target = "ruby";
266
+ type = "gem";
267
+ };
268
+ targets = [];
269
+ version = "6.0.6";
270
+ };
271
+ parallel = {
272
+ groups = ["default"];
273
+ platforms = [];
274
+ source = {
275
+ remotes = ["https://rubygems.org"];
276
+ sha256 = "0mlkn1vhh9lr7vljibpgspwsswk7mzm8nw6bbr616c9fbj35hlmk";
277
+ target = "ruby";
278
+ type = "gem";
279
+ };
280
+ targets = [];
281
+ version = "2.1.0";
282
+ };
283
+ parser = {
284
+ dependencies = ["ast" "racc"];
285
+ groups = ["default"];
286
+ platforms = [];
287
+ source = {
288
+ remotes = ["https://rubygems.org"];
289
+ sha256 = "0m2xqvn1la62hji1mn04y59giikww95p2hs0r4y2rrz3mdxcwyni";
290
+ target = "ruby";
291
+ type = "gem";
292
+ };
293
+ targets = [];
294
+ version = "3.3.11.1";
295
+ };
296
+ pp = {
297
+ dependencies = ["prettyprint"];
298
+ groups = ["default"];
299
+ platforms = [];
300
+ source = {
301
+ remotes = ["https://rubygems.org"];
302
+ sha256 = "1xlxmg86k5kifci1xvlmgw56x88dmqf04zfzn7zcr4qb8ladal99";
303
+ target = "ruby";
304
+ type = "gem";
305
+ };
306
+ targets = [];
307
+ version = "0.6.3";
308
+ };
309
+ prettyprint = {
310
+ groups = ["default"];
311
+ platforms = [];
312
+ source = {
313
+ remotes = ["https://rubygems.org"];
314
+ sha256 = "14zicq3plqi217w6xahv7b8f7aj5kpxv1j1w98344ix9h5ay3j9b";
315
+ target = "ruby";
316
+ type = "gem";
317
+ };
318
+ targets = [];
319
+ version = "0.2.0";
320
+ };
321
+ prism = {
322
+ groups = ["default"];
323
+ platforms = [];
324
+ source = {
325
+ remotes = ["https://rubygems.org"];
326
+ sha256 = "11ggfikcs1lv17nhmhqyyp6z8nq5pkfcj6a904047hljkxm0qlvv";
327
+ target = "ruby";
328
+ type = "gem";
329
+ };
330
+ targets = [];
331
+ version = "1.9.0";
332
+ };
333
+ psych = {
334
+ dependencies = ["date" "stringio"];
335
+ groups = ["default"];
336
+ platforms = [];
337
+ source = {
338
+ remotes = ["https://rubygems.org"];
339
+ sha256 = "1dx5bc3s1mb1i53np4cdkypg7ccygnvagr3hglyndbqilrljvxql";
340
+ target = "ruby";
341
+ type = "gem";
342
+ };
343
+ targets = [];
344
+ version = "5.4.0";
345
+ };
346
+ racc = {
347
+ groups = ["default"];
348
+ platforms = [];
349
+ source = {
350
+ remotes = ["https://rubygems.org"];
351
+ sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
352
+ target = "ruby";
353
+ type = "gem";
354
+ };
355
+ targets = [];
356
+ version = "1.8.1";
357
+ };
358
+ rainbow = {
359
+ groups = ["default"];
360
+ platforms = [];
361
+ source = {
362
+ remotes = ["https://rubygems.org"];
363
+ sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
364
+ target = "ruby";
365
+ type = "gem";
366
+ };
367
+ targets = [];
368
+ version = "3.1.1";
369
+ };
370
+ rake = {
371
+ groups = ["default"];
372
+ platforms = [];
373
+ source = {
374
+ remotes = ["https://rubygems.org"];
375
+ sha256 = "009p524zl0p0kfa65nii8wdmaigkmawv9pbvlcffky7islmmp0nb";
376
+ target = "ruby";
377
+ type = "gem";
378
+ };
379
+ targets = [];
380
+ version = "13.4.2";
381
+ };
382
+ rdoc = {
383
+ dependencies = ["erb" "psych" "tsort"];
384
+ groups = ["default"];
385
+ platforms = [];
386
+ source = {
387
+ remotes = ["https://rubygems.org"];
388
+ sha256 = "14iiyb4yi1chdzrynrk74xbhmikml3ixgdayjma3p700singfl46";
389
+ target = "ruby";
390
+ type = "gem";
391
+ };
392
+ targets = [];
393
+ version = "7.2.0";
394
+ };
395
+ regexp_parser = {
396
+ groups = ["default"];
397
+ platforms = [];
398
+ source = {
399
+ remotes = ["https://rubygems.org"];
400
+ sha256 = "1fwfw26a32rps78920nn29shqg2zmqv72i89j1fap41isshida9m";
401
+ target = "ruby";
402
+ type = "gem";
403
+ };
404
+ targets = [];
405
+ version = "2.12.0";
406
+ };
407
+ reline = {
408
+ dependencies = ["io-console"];
409
+ groups = ["default"];
410
+ platforms = [];
411
+ source = {
412
+ remotes = ["https://rubygems.org"];
413
+ sha256 = "0d8q5c4nh2g9pp758kizh8sfrvngynrjlm0i1zn3cnsnfd4v160i";
414
+ target = "ruby";
415
+ type = "gem";
416
+ };
417
+ targets = [];
418
+ version = "0.6.3";
419
+ };
420
+ rspec = {
421
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
422
+ groups = ["default"];
423
+ platforms = [];
424
+ source = {
425
+ remotes = ["https://rubygems.org"];
426
+ sha256 = "11q5hagj6vr694innqj4r45jrm8qcwvkxjnphqgyd66piah88qi0";
427
+ target = "ruby";
428
+ type = "gem";
429
+ };
430
+ targets = [];
431
+ version = "3.13.2";
432
+ };
433
+ rspec-core = {
434
+ dependencies = ["rspec-support"];
435
+ groups = ["default"];
436
+ platforms = [];
437
+ source = {
438
+ remotes = ["https://rubygems.org"];
439
+ sha256 = "0bcbh9yv6cs6pv299zs4bvalr8yxa51kcdd1pjl60yv625j3r0m8";
440
+ target = "ruby";
441
+ type = "gem";
442
+ };
443
+ targets = [];
444
+ version = "3.13.6";
445
+ };
446
+ rspec-expectations = {
447
+ dependencies = ["diff-lcs" "rspec-support"];
448
+ groups = ["default"];
449
+ platforms = [];
450
+ source = {
451
+ remotes = ["https://rubygems.org"];
452
+ sha256 = "0dl8npj0jfpy31bxi6syc7jymyd861q277sfr6jawq2hv6hx791k";
453
+ target = "ruby";
454
+ type = "gem";
455
+ };
456
+ targets = [];
457
+ version = "3.13.5";
458
+ };
459
+ rspec-mocks = {
460
+ dependencies = ["diff-lcs" "rspec-support"];
461
+ groups = ["default"];
462
+ platforms = [];
463
+ source = {
464
+ remotes = ["https://rubygems.org"];
465
+ sha256 = "0iqxmw0knjiz5nf6pgr8ihs6cjzh89f0ppj3fqiz8cvms79x6sh8";
466
+ target = "ruby";
467
+ type = "gem";
468
+ };
469
+ targets = [];
470
+ version = "3.13.8";
471
+ };
472
+ rspec-support = {
473
+ groups = ["default"];
474
+ platforms = [];
475
+ source = {
476
+ remotes = ["https://rubygems.org"];
477
+ sha256 = "0z64h5rznm2zv21vjdjshz4v0h7bxvg02yc6g7yzxakj11byah06";
478
+ target = "ruby";
479
+ type = "gem";
480
+ };
481
+ targets = [];
482
+ version = "3.13.7";
483
+ };
484
+ rubocop = {
485
+ dependencies = ["json" "language_server-protocol" "lint_roller" "parallel" "parser" "rainbow" "regexp_parser" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
486
+ groups = ["default"];
487
+ platforms = [];
488
+ source = {
489
+ remotes = ["https://rubygems.org"];
490
+ sha256 = "138qbhxb6r8qyq6kz38i3wq4k2rdcrhfcyicxzw1798na7sxvndr";
491
+ target = "ruby";
492
+ type = "gem";
493
+ };
494
+ targets = [];
495
+ version = "1.87.0";
496
+ };
497
+ rubocop-ast = {
498
+ dependencies = ["parser" "prism"];
499
+ groups = ["default"];
500
+ platforms = [];
501
+ source = {
502
+ remotes = ["https://rubygems.org"];
503
+ sha256 = "0dahfpnzz63hyqxa03x8rypnrxzwyvh4i5a8ri34bzpnf3pg64j4";
504
+ target = "ruby";
505
+ type = "gem";
506
+ };
507
+ targets = [];
508
+ version = "1.49.1";
509
+ };
510
+ rubocop-rake = {
511
+ dependencies = ["lint_roller" "rubocop"];
512
+ groups = ["default"];
513
+ platforms = [];
514
+ source = {
515
+ remotes = ["https://rubygems.org"];
516
+ sha256 = "0kdfrckz1v32dy7c7bdiksjysx9l9zsda9kc6zvrsghch6vg55rp";
517
+ target = "ruby";
518
+ type = "gem";
519
+ };
520
+ targets = [];
521
+ version = "0.7.1";
522
+ };
523
+ rubocop-rspec = {
524
+ dependencies = ["lint_roller" "regexp_parser" "rubocop"];
525
+ groups = ["default"];
526
+ platforms = [];
527
+ source = {
528
+ remotes = ["https://rubygems.org"];
529
+ sha256 = "1qk5bx4vg7n17i9475h6dqkhay9m3s6vanq9y35hxl9cb762wghb";
530
+ target = "ruby";
531
+ type = "gem";
532
+ };
533
+ targets = [];
534
+ version = "3.10.2";
535
+ };
536
+ ruby-progressbar = {
537
+ groups = ["default"];
538
+ platforms = [];
539
+ source = {
540
+ remotes = ["https://rubygems.org"];
541
+ sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40";
542
+ target = "ruby";
543
+ type = "gem";
544
+ };
545
+ targets = [];
546
+ version = "1.13.0";
547
+ };
548
+ rubyzip = {
549
+ groups = ["default"];
550
+ platforms = [];
551
+ source = {
552
+ remotes = ["https://rubygems.org"];
553
+ sha256 = "0khy3d43cr2i4x9as2k41ckrjb4wkpcycdbzaara4fy4qw923n9f";
554
+ target = "ruby";
555
+ type = "gem";
556
+ };
557
+ targets = [];
558
+ version = "3.3.1";
559
+ };
560
+ securerandom = {
561
+ groups = ["default"];
562
+ platforms = [];
563
+ source = {
564
+ remotes = ["https://rubygems.org"];
565
+ sha256 = "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc";
566
+ target = "ruby";
567
+ type = "gem";
568
+ };
569
+ targets = [];
570
+ version = "0.4.1";
571
+ };
572
+ stringio = {
573
+ groups = ["default"];
574
+ platforms = [];
575
+ source = {
576
+ remotes = ["https://rubygems.org"];
577
+ sha256 = "1q92y9627yisykyscv0bdsrrgyaajc2qr56dwlzx7ysgigjv4z63";
578
+ target = "ruby";
579
+ type = "gem";
580
+ };
581
+ targets = [];
582
+ version = "3.2.0";
583
+ };
584
+ tsort = {
585
+ groups = ["default"];
586
+ platforms = [];
587
+ source = {
588
+ remotes = ["https://rubygems.org"];
589
+ sha256 = "17q8h020dw73wjmql50lqw5ddsngg67jfw8ncjv476l5ys9sfl4n";
590
+ target = "ruby";
591
+ type = "gem";
592
+ };
593
+ targets = [];
594
+ version = "0.2.0";
595
+ };
596
+ tzinfo = {
597
+ dependencies = ["concurrent-ruby"];
598
+ groups = ["default"];
599
+ platforms = [];
600
+ source = {
601
+ remotes = ["https://rubygems.org"];
602
+ sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
603
+ target = "ruby";
604
+ type = "gem";
605
+ };
606
+ targets = [];
607
+ version = "2.0.6";
608
+ };
609
+ unicode-display_width = {
610
+ dependencies = ["unicode-emoji"];
611
+ groups = ["default"];
612
+ platforms = [];
613
+ source = {
614
+ remotes = ["https://rubygems.org"];
615
+ sha256 = "0hiwhnqpq271xqari6mg996fgjps42sffm9cpk6ljn8sd2srdp8c";
616
+ target = "ruby";
617
+ type = "gem";
618
+ };
619
+ targets = [];
620
+ version = "3.2.0";
621
+ };
622
+ unicode-emoji = {
623
+ groups = ["default"];
624
+ platforms = [];
625
+ source = {
626
+ remotes = ["https://rubygems.org"];
627
+ sha256 = "03zqn207zypycbz5m9mn7ym763wgpk7hcqbkpx02wrbm1wank7ji";
628
+ target = "ruby";
629
+ type = "gem";
630
+ };
631
+ targets = [];
632
+ version = "4.2.0";
633
+ };
634
+ uri = {
635
+ groups = ["default"];
636
+ platforms = [];
637
+ source = {
638
+ remotes = ["https://rubygems.org"];
639
+ sha256 = "1ijpbj7mdrq7rhpq2kb51yykhrs2s54wfs6sm9z3icgz4y6sb7rp";
640
+ target = "ruby";
641
+ type = "gem";
642
+ };
643
+ targets = [];
644
+ version = "1.1.1";
645
+ };
646
+ zeitwerk = {
647
+ groups = ["default"];
648
+ platforms = [];
649
+ source = {
650
+ remotes = ["https://rubygems.org"];
651
+ sha256 = "04hx33lsnp4q0qf8982mz0acs1dap5s2bsmihi0n0g08249sc4kj";
652
+ target = "ruby";
653
+ type = "gem";
654
+ };
655
+ targets = [];
656
+ version = "2.8.2";
657
+ };
658
+ }
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Meibo
4
4
  class AcademicSession
5
+ include DataModel
6
+
5
7
  TYPES = {
6
8
  grading_period: "gradingPeriod",
7
9
  semester: "semester",
@@ -9,27 +11,25 @@ module Meibo
9
11
  term: "term"
10
12
  }.freeze
11
13
 
12
- DataModel.define(
13
- self,
14
- attribute_name_to_header_field_map: {
15
- sourced_id: "sourcedId",
16
- status: "status",
17
- date_last_modified: "dateLastModified",
18
- title: "title",
19
- type: "type",
20
- start_date: "startDate",
21
- end_date: "endDate",
22
- parent_sourced_id: "parentSourcedId",
23
- school_year: "schoolYear"
24
- }.freeze,
25
- converters: {
26
- enum: { type: [*TYPES.values.freeze, ENUM_EXT_PATTERN] }.freeze,
27
- date: %i[start_date end_date].freeze,
28
- datetime: [:date_last_modified].freeze,
29
- required: %i[sourced_id title type start_date end_date school_year].freeze,
30
- status: [:status].freeze,
31
- year: [:school_year].freeze
32
- }.freeze
14
+ define_attributes(
15
+ sourced_id: "sourcedId",
16
+ status: "status",
17
+ date_last_modified: "dateLastModified",
18
+ title: "title",
19
+ type: "type",
20
+ start_date: "startDate",
21
+ end_date: "endDate",
22
+ parent_sourced_id: "parentSourcedId",
23
+ school_year: "schoolYear"
24
+ )
25
+
26
+ define_converters(
27
+ enum: { type: [*TYPES.values, ENUM_EXT_PATTERN] },
28
+ date: %i[start_date end_date],
29
+ datetime: [:date_last_modified],
30
+ required: %i[sourced_id title type start_date end_date school_year],
31
+ status: [:status],
32
+ year: [:school_year]
33
33
  )
34
34
 
35
35
  def initialize(sourced_id:, school_year:, type:, start_date:, end_date:, status: nil, date_last_modified: nil,