edoxen 0.7.2 → 2.1.1

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +17 -1
  3. data/.rubocop_todo.yml +1 -1
  4. data/CHANGELOG.md +246 -0
  5. data/README.adoc +308 -153
  6. data/edoxen.gemspec +10 -10
  7. data/lib/edoxen/action.rb +1 -1
  8. data/lib/edoxen/agenda.rb +4 -7
  9. data/lib/edoxen/agenda_item.rb +10 -3
  10. data/lib/edoxen/approval.rb +1 -1
  11. data/lib/edoxen/attendance.rb +16 -10
  12. data/lib/edoxen/body_vocabulary_entry.rb +24 -0
  13. data/lib/edoxen/body_vocabulary_host.rb +29 -0
  14. data/lib/edoxen/cli.rb +117 -120
  15. data/lib/edoxen/component_localization.rb +11 -0
  16. data/lib/edoxen/consideration.rb +2 -2
  17. data/lib/edoxen/contact.rb +24 -0
  18. data/lib/edoxen/contact_identifier.rb +13 -0
  19. data/lib/edoxen/contact_method.rb +16 -0
  20. data/lib/edoxen/decision.rb +69 -0
  21. data/lib/edoxen/decision_collection.rb +10 -0
  22. data/lib/edoxen/decision_date.rb +9 -0
  23. data/lib/edoxen/{resolution_metadata.rb → decision_metadata.rb} +5 -6
  24. data/lib/edoxen/decision_relation.rb +11 -0
  25. data/lib/edoxen/entity_ref.rb +74 -0
  26. data/lib/edoxen/enums.rb +117 -9
  27. data/lib/edoxen/error.rb +1 -1
  28. data/lib/edoxen/extension_attribute.rb +78 -0
  29. data/lib/edoxen/host_ref.rb +1 -1
  30. data/lib/edoxen/link_checker.rb +8 -8
  31. data/lib/edoxen/localization.rb +2 -2
  32. data/lib/edoxen/localization_host.rb +23 -0
  33. data/lib/edoxen/meeting.rb +63 -39
  34. data/lib/edoxen/meeting_collection.rb +1 -2
  35. data/lib/edoxen/meeting_collection_metadata.rb +3 -1
  36. data/lib/edoxen/meeting_component.rb +41 -0
  37. data/lib/edoxen/meeting_extension.rb +25 -0
  38. data/lib/edoxen/meeting_identifier.rb +1 -1
  39. data/lib/edoxen/meeting_localization.rb +6 -1
  40. data/lib/edoxen/meeting_series.rb +21 -0
  41. data/lib/edoxen/minutes.rb +2 -2
  42. data/lib/edoxen/minutes_section.rb +8 -11
  43. data/lib/edoxen/motion.rb +51 -0
  44. data/lib/edoxen/name.rb +29 -0
  45. data/lib/edoxen/officer.rb +19 -0
  46. data/lib/edoxen/officers_host.rb +19 -0
  47. data/lib/edoxen/person.rb +5 -9
  48. data/lib/edoxen/physical_venue.rb +15 -0
  49. data/lib/edoxen/recurrence.rb +27 -0
  50. data/lib/edoxen/recurrence_by_day.rb +10 -0
  51. data/lib/edoxen/reference_data.rb +35 -41
  52. data/lib/edoxen/schema_validator.rb +2 -3
  53. data/lib/edoxen/source_url.rb +3 -3
  54. data/lib/edoxen/structured_identifier.rb +2 -2
  55. data/lib/edoxen/topic.rb +37 -0
  56. data/lib/edoxen/topic_asset.rb +14 -0
  57. data/lib/edoxen/topic_document.rb +16 -0
  58. data/lib/edoxen/venue.rb +80 -0
  59. data/lib/edoxen/venue_validator.rb +56 -0
  60. data/lib/edoxen/version.rb +1 -1
  61. data/lib/edoxen/virtual_venue.rb +15 -0
  62. data/lib/edoxen/vote_record.rb +17 -13
  63. data/lib/edoxen/voting.rb +45 -0
  64. data/lib/edoxen/voting_counts.rb +23 -0
  65. data/lib/edoxen.rb +40 -13
  66. data/schema/edoxen.yaml +792 -145
  67. data/schema/meeting.yaml +600 -142
  68. data/sig/edoxen.rbs +581 -1
  69. metadata +57 -20
  70. data/lib/edoxen/_metadata.rb.deprecated +0 -57
  71. data/lib/edoxen/location.rb +0 -15
  72. data/lib/edoxen/resolution.rb +0 -43
  73. data/lib/edoxen/resolution_collection.rb +0 -10
  74. data/lib/edoxen/resolution_date.rb +0 -11
  75. data/lib/edoxen/resolution_relation.rb +0 -11
  76. data/lib/edoxen/resolution_set.rb +0 -17
  77. data/lib/edoxen/schedule_item.rb +0 -27
  78. data/lib/edoxen/schedule_item_localization.rb +0 -21
data/sig/edoxen.rbs CHANGED
@@ -1,4 +1,584 @@
1
1
  module Edoxen
2
2
  VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
3
+
4
+ module Enums
5
+ ACTION_TYPE: Array[String]
6
+ CONSIDERATION_TYPE: Array[String]
7
+ DECISION_KIND: Array[String]
8
+ DECISION_STATUS: Array[String]
9
+ DECISION_DATE_TYPE: Array[String]
10
+ DECISION_RELATION_TYPE: Array[String]
11
+ APPROVAL_TYPE: Array[String]
12
+ APPROVAL_DEGREE: Array[String]
13
+ URL_KIND: Array[String]
14
+ MEETING_TYPE: Array[String]
15
+ MEETING_STATUS: Array[String]
16
+ AGENDA_STATUS: Array[String]
17
+ AGENDA_ITEM_KIND: Array[String]
18
+ AGENDA_ITEM_OUTCOME: Array[String]
19
+ HOST_TYPE: Array[String]
20
+ MEETING_RELATION_TYPE: Array[String]
21
+ SOURCE_URL_KIND: Array[String]
22
+ PARTICIPATION_STATUS: Array[String]
23
+ VOTE_TYPE: Array[String]
24
+ VENUE_KIND: Array[String]
25
+ VIRTUAL_FEATURE: Array[String]
26
+ VISIBILITY: Array[String]
27
+ ATTENDANCE_ROLE: Array[String]
28
+ ATTENDANCE_RESPONSE: Array[String]
29
+ COMPONENT_KIND: Array[String]
30
+ MOTION_STATUS: Array[String]
31
+ VOTING_STATUS: Array[String]
32
+ VOTING_METHOD: Array[String]
33
+ VOTING_OUTCOME: Array[String]
34
+ TOPIC_STATUS: Array[String]
35
+ OFFICER_ROLE: Array[String]
36
+ RECURRENCE_FREQ: Array[String]
37
+ end
38
+
39
+ module ReferenceData
40
+ def self.find_unlocode: (String code) -> untyped
41
+ def self.unlocode_exists?: (String code) -> bool
42
+ def self.find_iata: (String code) -> untyped
43
+ def self.iata_exists?: (String code) -> bool
44
+ end
45
+
46
+ class Error < StandardError
47
+ end
48
+
49
+ class ValidationError < Error
50
+ SOURCE_SCHEMA: Symbol
51
+ SOURCE_MODEL: Symbol
52
+ SOURCE_SYNTAX: Symbol
53
+ attr_reader file: String
54
+ attr_reader line: Integer
55
+ attr_reader column: Integer
56
+ attr_reader pointer: String
57
+ attr_reader message_text: String
58
+ attr_reader source: Symbol
59
+ def initialize: (file: String, line: Integer, column: Integer, message_text: String, ?pointer: String, ?source: Symbol) -> void
60
+ def to_clickable_format: -> String
61
+ end
62
+
63
+ # Identifiers / references.
64
+ class StructuredIdentifier < Lutaml::Model::Serializable
65
+ attr_reader prefix: String?
66
+ attr_reader number: String?
67
+ end
68
+
69
+ class MeetingIdentifier < Lutaml::Model::Serializable
70
+ attr_reader venue: String?
71
+ attr_reader date: Date?
72
+ end
73
+
74
+ class Url < Lutaml::Model::Serializable
75
+ attr_reader kind: String?
76
+ attr_reader ref: String?
77
+ attr_reader format: String?
78
+ end
79
+
80
+ class SourceUrl < Lutaml::Model::Serializable
81
+ attr_reader ref: String?
82
+ attr_reader format: String?
83
+ attr_reader language_code: String?
84
+ attr_reader kind: String?
85
+ end
86
+
87
+ class DateRange < Lutaml::Model::Serializable
88
+ attr_reader start: Date?
89
+ attr_reader end: Date?
90
+ end
91
+
92
+ class Deadline < Lutaml::Model::Serializable
93
+ attr_reader date: Date?
94
+ attr_reader description: String?
95
+ end
96
+
97
+ class HostRef < Lutaml::Model::Serializable
98
+ attr_reader ref: String?
99
+ attr_reader type: String?
100
+ attr_reader role: String?
101
+ attr_reader contact: Person?
102
+ end
103
+
104
+ class Reference < Lutaml::Model::Serializable
105
+ attr_reader ref: String?
106
+ attr_reader kind: String?
107
+ attr_reader title: String?
108
+ end
109
+
110
+ class Person < Lutaml::Model::Serializable
111
+ attr_reader name: String?
112
+ attr_reader kind: String?
113
+ attr_reader role: String?
114
+ attr_reader affiliation: String?
115
+ attr_reader email: String?
116
+ attr_reader phone: String?
117
+ attr_reader orcid: String?
118
+ end
119
+
120
+ # Decision-Side.
121
+ class DecisionDate < Lutaml::Model::Serializable
122
+ attr_reader date: Date?
123
+ attr_reader type: String?
124
+ end
125
+
126
+ class DecisionRelation < Lutaml::Model::Serializable
127
+ attr_reader source: StructuredIdentifier?
128
+ attr_reader destination: StructuredIdentifier?
129
+ attr_reader type: String?
130
+ end
131
+
132
+ class Action < Lutaml::Model::Serializable
133
+ attr_reader type: String?
134
+ attr_reader date_effective: DecisionDate?
135
+ attr_reader message: String?
136
+ end
137
+
138
+ class Approval < Lutaml::Model::Serializable
139
+ attr_reader type: String?
140
+ attr_reader degree: String?
141
+ attr_reader date: DecisionDate?
142
+ attr_reader message: String?
143
+ end
144
+
145
+ class Consideration < Lutaml::Model::Serializable
146
+ attr_reader type: String?
147
+ attr_reader date_effective: DecisionDate?
148
+ attr_reader message: String?
149
+ end
150
+
151
+ class Localization < Lutaml::Model::Serializable
152
+ attr_reader language_code: String?
153
+ attr_reader script: String?
154
+ attr_reader title: String?
155
+ attr_reader subject: String?
156
+ attr_reader message: String?
157
+ attr_reader considering: String?
158
+ end
159
+
160
+ class Decision < Lutaml::Model::Serializable
161
+ attr_reader identifier: Array[StructuredIdentifier]?
162
+ attr_reader kind: String?
163
+ attr_reader status: String?
164
+ attr_reader doi: String?
165
+ attr_reader urn: String?
166
+ attr_reader agenda_item: String?
167
+ attr_reader dates: Array[DecisionDate]?
168
+ attr_reader categories: Array[String]?
169
+ attr_reader meeting: MeetingIdentifier?
170
+ attr_reader relations: Array[DecisionRelation]?
171
+ attr_reader urls: Array[Url]?
172
+ attr_reader brought_by_motions: Array[String]?
173
+ attr_reader about_topics: Array[String]?
174
+ attr_reader made_in_component: String?
175
+ attr_reader localizations: Array[Localization]?
176
+ def in_language: (String|Symbol code, ?fallback: bool) -> Localization?
177
+ def primary_localization: -> Localization?
178
+ end
179
+
180
+ class DecisionMetadata < Lutaml::Model::Serializable
181
+ attr_reader title: String?
182
+ attr_reader date: Date?
183
+ attr_reader source: String?
184
+ attr_reader source_urls: Array[SourceUrl]?
185
+ attr_reader city: String?
186
+ attr_reader country_code: String?
187
+ attr_reader meeting_urn: String?
188
+ def city_entry: -> untyped
189
+ end
190
+
191
+ class DecisionCollection < Lutaml::Model::Serializable
192
+ attr_reader metadata: DecisionMetadata?
193
+ attr_reader decisions: Array[Decision]?
194
+ end
195
+
196
+ # Procedural.
197
+ class Motion < Lutaml::Model::Serializable
198
+ attr_reader identifier: String?
199
+ attr_reader urn: String?
200
+ attr_reader text: String?
201
+ attr_reader mover: Person?
202
+ attr_reader seconders: Array[Person]?
203
+ attr_reader status: String?
204
+ attr_reader introduced_at: untyped
205
+ attr_reader proposed_decision: String?
206
+ attr_reader resulting_decision: String?
207
+ attr_reader votings: Array[String]?
208
+ def carried?: -> bool
209
+ def pending?: -> bool
210
+ end
211
+
212
+ class VotingCounts < Lutaml::Model::Serializable
213
+ attr_reader ayes: Integer?
214
+ attr_reader noes: Integer?
215
+ attr_reader abstentions: Integer?
216
+ attr_reader absent: Integer?
217
+ def total: -> Integer
218
+ def margin: -> Integer
219
+ def tied?: -> bool
220
+ end
221
+
222
+ class VoteRecord < Lutaml::Model::Serializable
223
+ attr_reader decision_ref: String?
224
+ attr_reader voting_ref: String?
225
+ attr_reader person: Person?
226
+ attr_reader affiliation: String?
227
+ attr_reader vote: String?
228
+ attr_reader role: String?
229
+ attr_reader notes: String?
230
+ def affirmative?: -> bool
231
+ def teller?: -> bool
232
+ end
233
+
234
+ class Voting < Lutaml::Model::Serializable
235
+ attr_reader identifier: String?
236
+ attr_reader urn: String?
237
+ attr_reader on_motion: String?
238
+ attr_reader status: String?
239
+ attr_reader voting_method: String?
240
+ attr_reader called_by: Person?
241
+ attr_reader called_at: untyped
242
+ attr_reader result_declared_at: untyped
243
+ attr_reader result: String?
244
+ attr_reader counts: VotingCounts?
245
+ attr_reader casting_vote: VoteRecord?
246
+ attr_reader vote_records: Array[VoteRecord]?
247
+ def decided?: -> bool
248
+ def in_progress?: -> bool
249
+ def passed?: -> bool
250
+ def negatived?: -> bool
251
+ def tied?: -> bool
252
+ end
253
+
254
+ # Topic.
255
+ class TopicDocument < Lutaml::Model::Serializable
256
+ attr_reader identifier: String?
257
+ attr_reader title: String?
258
+ attr_reader version: String?
259
+ attr_reader status: String?
260
+ attr_reader url: String?
261
+ attr_reader format: String?
262
+ attr_reader language_code: String?
263
+ end
264
+
265
+ class TopicAsset < Lutaml::Model::Serializable
266
+ attr_reader identifier: String?
267
+ attr_reader title: String?
268
+ attr_reader kind: String?
269
+ attr_reader url: String?
270
+ attr_reader format: String?
271
+ end
272
+
273
+ class Topic < Lutaml::Model::Serializable
274
+ attr_reader identifier: String?
275
+ attr_reader urn: String?
276
+ attr_reader title: String?
277
+ attr_reader description: String?
278
+ attr_reader status: String?
279
+ attr_reader resumption_of: String?
280
+ attr_reader documents: Array[TopicDocument]?
281
+ attr_reader assets: Array[TopicAsset]?
282
+ attr_reader references: Array[Reference]?
283
+ attr_reader motions: Array[String]?
284
+ attr_reader decisions: Array[String]?
285
+ end
286
+
287
+ # Venue.
288
+ class Venue < Lutaml::Model::Serializable
289
+ attr_reader kind: String?
290
+ attr_reader name: String?
291
+ attr_reader label: String?
292
+ attr_reader description: String?
293
+ attr_reader capacity: Integer?
294
+ attr_reader url: String?
295
+ attr_reader unlocode: String?
296
+ attr_reader iata_code: String?
297
+ attr_reader address: String?
298
+ attr_reader city: String?
299
+ attr_reader country_code: String?
300
+ attr_reader lat: Float?
301
+ attr_reader lon: Float?
302
+ attr_reader building: String?
303
+ attr_reader floor: String?
304
+ attr_reader room: String?
305
+ attr_reader access_notes: String?
306
+ attr_reader uri: String?
307
+ attr_reader features: Array[String]?
308
+ attr_reader passcode: String?
309
+ attr_reader meeting_id: String?
310
+ attr_reader dial_in_numbers: Array[String]?
311
+ attr_reader waiting_room: bool?
312
+ attr_reader registration_required: bool?
313
+ def physical?: -> bool
314
+ def virtual?: -> bool
315
+ def unlocode_entry: -> untyped
316
+ def iata_entry: -> untyped
317
+ def features_list: -> String
318
+ end
319
+
320
+ class PhysicalVenue < Venue
321
+ end
322
+
323
+ class VirtualVenue < Venue
324
+ end
325
+
326
+ class VenueValidator
327
+ attr_reader venue: Venue
328
+ attr_reader errors: Array[String]
329
+ def initialize: (Venue venue) -> void
330
+ def validate: (?auto_populate: bool) -> Array[String]
331
+ def valid?: -> bool
332
+ end
333
+
334
+ # Recurrence.
335
+ class RecurrenceByDay < Lutaml::Model::Serializable
336
+ attr_reader ordinal: Integer?
337
+ attr_reader weekday: String?
338
+ end
339
+
340
+ class Recurrence < Lutaml::Model::Serializable
341
+ attr_reader freq: String?
342
+ attr_reader interval: Integer
343
+ attr_reader count: Integer?
344
+ attr_reader until: untyped
345
+ attr_reader by_day: Array[RecurrenceByDay]?
346
+ attr_reader by_month_day: Array[Integer]?
347
+ attr_reader by_month: Array[Integer]?
348
+ attr_reader by_week_no: Array[Integer]?
349
+ attr_reader by_year_day: Array[Integer]?
350
+ attr_reader by_hour: Array[Integer]?
351
+ attr_reader by_minute: Array[Integer]?
352
+ attr_reader by_second: Array[Integer]?
353
+ attr_reader by_set_pos: Array[Integer]?
354
+ attr_reader week_start: String
355
+ end
356
+
357
+ # Profile mechanism.
358
+ class ExtensionAttribute < Lutaml::Model::Serializable
359
+ attr_reader key: String?
360
+ attr_reader value: String?
361
+ attr_reader integer_value: Integer?
362
+ attr_reader float_value: Float?
363
+ attr_reader boolean_value: bool?
364
+ attr_reader date_value: Date?
365
+ attr_reader date_time_value: untyped
366
+ attr_reader type: String?
367
+ def typed_value: -> untyped
368
+ alias string_value value
369
+ end
370
+
371
+ class MeetingExtension < Lutaml::Model::Serializable
372
+ attr_reader profile: String?
373
+ attr_reader kind: String?
374
+ attr_reader ref: String?
375
+ attr_reader attributes: Array[ExtensionAttribute]?
376
+ end
377
+
378
+ # Officer.
379
+ class Officer < Lutaml::Model::Serializable
380
+ attr_reader role: String?
381
+ attr_reader person: Person?
382
+ attr_reader term_start: Date?
383
+ attr_reader term_end: Date?
384
+ def current?: (?Date date) -> bool
385
+ end
386
+
387
+ # Component.
388
+ class ComponentLocalization < Lutaml::Model::Serializable
389
+ attr_reader language_code: String?
390
+ attr_reader script: String?
391
+ attr_reader title: String?
392
+ attr_reader description: String?
393
+ end
394
+
395
+ class MeetingComponent < Lutaml::Model::Serializable
396
+ attr_reader identifier: String?
397
+ attr_reader urn: String?
398
+ attr_reader kind: String?
399
+ attr_reader title: String?
400
+ attr_reader description: String?
401
+ attr_reader starts_at: untyped
402
+ attr_reader ends_at: untyped
403
+ attr_reader venue_refs: Array[String]?
404
+ attr_reader chair: Person?
405
+ attr_reader agenda_ref: String?
406
+ attr_reader minutes_ref: String?
407
+ attr_reader attendance_refs: Array[String]?
408
+ attr_reader localizations: Array[ComponentLocalization]?
409
+ def duration_seconds: -> Integer?
410
+ end
411
+
412
+ # Series.
413
+ class MeetingSeries < Lutaml::Model::Serializable
414
+ attr_reader identifier: Array[StructuredIdentifier]?
415
+ attr_reader urn: String?
416
+ attr_reader name: String?
417
+ attr_reader description: String?
418
+ attr_reader recurrence: Recurrence?
419
+ attr_reader term: String?
420
+ attr_reader organizer: Person?
421
+ attr_reader hosts: Array[HostRef]?
422
+ attr_reader kind: String?
423
+ attr_reader meeting_refs: Array[String]?
424
+ end
425
+
426
+ # Meeting side.
427
+ class Attendance < Lutaml::Model::Serializable
428
+ attr_reader person: Person?
429
+ attr_reader status: String?
430
+ attr_reader role: String?
431
+ attr_reader response: String?
432
+ attr_reader affiliation: String?
433
+ attr_reader proxy_for: Person?
434
+ attr_reader notes: String?
435
+ def present?: -> bool
436
+ def declined?: -> bool
437
+ end
438
+
439
+ class AgendaItem < Lutaml::Model::Serializable
440
+ attr_reader label: String?
441
+ attr_reader kind: String?
442
+ attr_reader title: String?
443
+ attr_reader description: String?
444
+ attr_reader references: Array[Reference]?
445
+ attr_reader outcome: String?
446
+ attr_reader decision_ref: String?
447
+ attr_reader topics: Array[Topic]?
448
+ attr_reader components: Array[String]?
449
+ end
450
+
451
+ class Agenda < Lutaml::Model::Serializable
452
+ attr_reader identifier: Array[StructuredIdentifier]?
453
+ attr_reader status: String?
454
+ attr_reader source_doc: String?
455
+ attr_reader items: Array[AgendaItem]?
456
+ def find_item: (String|Symbol label) -> AgendaItem?
457
+ end
458
+
459
+ class MinutesSection < Lutaml::Model::Serializable
460
+ attr_reader number: String?
461
+ attr_reader title: String?
462
+ attr_reader narrative: String?
463
+ attr_reader page_start: Integer?
464
+ attr_reader page_end: Integer?
465
+ attr_reader references: Array[Reference]?
466
+ end
467
+
468
+ class Minutes < Lutaml::Model::Serializable
469
+ attr_reader identifier: Array[StructuredIdentifier]?
470
+ attr_reader urn: String?
471
+ attr_reader language_code: String?
472
+ attr_reader script: String?
473
+ attr_reader source_doc: String?
474
+ attr_reader source_pages: String?
475
+ attr_reader sections: Array[MinutesSection]?
476
+ def find_section: (String|Integer number) -> MinutesSection?
477
+ end
478
+
479
+ class MeetingRelation < Lutaml::Model::Serializable
480
+ attr_reader source: StructuredIdentifier?
481
+ attr_reader destination: StructuredIdentifier?
482
+ attr_reader type: String?
483
+ end
484
+
485
+ class MeetingLocalization < Lutaml::Model::Serializable
486
+ attr_reader language_code: String?
487
+ attr_reader script: String?
488
+ attr_reader title: String?
489
+ attr_reader general_area: String?
490
+ attr_reader practical_info: String?
491
+ end
492
+
493
+ class Meeting < Lutaml::Model::Serializable
494
+ attr_reader identifier: Array[StructuredIdentifier]?
495
+ attr_reader urn: String?
496
+ attr_reader ordinal: Integer?
497
+ attr_reader series_ref: String?
498
+ attr_reader type: String?
499
+ attr_reader status: String?
500
+ attr_reader visibility: String?
501
+ attr_reader date_range: DateRange?
502
+ attr_reader recurrence: Recurrence?
503
+ attr_reader venues: Array[Venue]?
504
+ attr_reader general_area: String?
505
+ attr_reader city: String?
506
+ attr_reader country_code: String?
507
+ attr_reader committee: String?
508
+ attr_reader committee_group: String?
509
+ attr_reader officers: Array[Officer]?
510
+ attr_reader hosts: Array[HostRef]?
511
+ attr_reader source_urls: Array[SourceUrl]?
512
+ attr_reader landing_url: String?
513
+ attr_reader registration_url: String?
514
+ attr_reader agenda: Agenda?
515
+ attr_reader components: Array[MeetingComponent]?
516
+ attr_reader deadlines: Array[Deadline]?
517
+ attr_reader attendance: Array[Attendance]?
518
+ attr_reader minutes: Array[Minutes]?
519
+ attr_reader decisions: Array[Decision]?
520
+ attr_reader motions: Array[Motion]?
521
+ attr_reader votings: Array[Voting]?
522
+ attr_reader localizations: Array[MeetingLocalization]?
523
+ attr_reader relations: Array[MeetingRelation]?
524
+ def in_language: (String|Symbol code, ?fallback: bool) -> MeetingLocalization?
525
+ def primary_localization: -> MeetingLocalization?
526
+ def find_agenda_item: (String|Symbol label) -> AgendaItem?
527
+ def city_entry: -> untyped
528
+ def officers_with_role: (String|Symbol role) -> Array[Officer]
529
+ def chair: -> Person?
530
+ def secretary: -> Person?
531
+ def physical_venues: -> Array[Venue]
532
+ def virtual_venues: -> Array[Venue]
533
+ def hybrid?: -> bool
534
+ def virtual_only?: -> bool
535
+ def physical_only?: -> bool
536
+ end
537
+
538
+ class MeetingCollectionMetadata < Lutaml::Model::Serializable
539
+ attr_reader title: String?
540
+ attr_reader source: String?
541
+ end
542
+
543
+ class MeetingCollection < Lutaml::Model::Serializable
544
+ attr_reader metadata: MeetingCollectionMetadata?
545
+ attr_reader meetings: Array[Meeting]?
546
+ def find_by_urn: (String urn) -> Meeting?
547
+ def find_by_identifier: (prefix: String|Symbol, number: String|Symbol) -> Meeting?
548
+ end
549
+
550
+ # Services.
551
+ class SchemaValidator
552
+ ValidationError: class Edoxen::ValidationError
553
+ def initialize: (?String schema_path) -> void
554
+ def validate_file: (String file_path) -> Array[Edoxen::ValidationError]
555
+ def validate_content: (String content, String file_path) -> Array[Edoxen::ValidationError]
556
+ end
557
+
558
+ class LinkChecker
559
+ LinkError: untyped
560
+ def self.check: (String dir) -> Array[LinkError]
561
+ def initialize: (String dir) -> void
562
+ def check: -> Array[LinkError]
563
+ end
564
+
565
+ class Cli
566
+ Profile: Struct[untyped]
567
+ PROFILES: Hash[Symbol, Profile]
568
+
569
+ module Batch
570
+ Result: Struct[untyped]
571
+ def self?.run: (untyped cli, String pattern, ?header: String, ?summary_extra: Array[[String, untyped]]) { (String file) -> Result } -> void
572
+ def self?.expand: (String pattern) -> Array[String]
573
+ def self?.print_summary: (untyped cli, Integer total, Integer ok, Integer bad, Array[[String, untyped]] extra) -> void
574
+ end
575
+
576
+ def initialize: (*untyped args) -> void
577
+ def validate: (String pattern) -> void
578
+ def normalize: (String pattern) -> void
579
+ def validate_meetings: (String pattern) -> void
580
+ def normalize_meetings: (String pattern) -> void
581
+ def unlocode: (String code) -> void
582
+ def iata: (String code) -> void
583
+ end
4
584
  end