edoxen 0.5.0 → 0.8.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +26 -1
  3. data/.rubocop_todo.yml +1 -1
  4. data/CHANGELOG.md +133 -0
  5. data/CLAUDE.md +10 -6
  6. data/Gemfile +4 -0
  7. data/README.adoc +417 -181
  8. data/TODO.meeting-agenda/02-lutaml-canonical.md +1 -1
  9. data/TODO.meeting-agenda/09-verify-and-release.md +3 -3
  10. data/TODO.meeting-agenda/README.md +2 -2
  11. data/edoxen.gemspec +10 -9
  12. data/lib/edoxen/action.rb +5 -4
  13. data/lib/edoxen/agenda.rb +4 -7
  14. data/lib/edoxen/agenda_item.rb +12 -5
  15. data/lib/edoxen/approval.rb +2 -2
  16. data/lib/edoxen/attendance.rb +29 -0
  17. data/lib/edoxen/body_vocabulary_entry.rb +24 -0
  18. data/lib/edoxen/body_vocabulary_host.rb +40 -0
  19. data/lib/edoxen/cli.rb +186 -108
  20. data/lib/edoxen/consideration.rb +6 -4
  21. data/lib/edoxen/contact.rb +35 -0
  22. data/lib/edoxen/contact_collection.rb +26 -0
  23. data/lib/edoxen/contact_identifier.rb +13 -0
  24. data/lib/edoxen/contact_method.rb +16 -0
  25. data/lib/edoxen/date_time_range.rb +16 -0
  26. data/lib/edoxen/deadline.rb +1 -1
  27. data/lib/edoxen/decision.rb +57 -0
  28. data/lib/edoxen/decision_collection.rb +10 -0
  29. data/lib/edoxen/decision_date.rb +9 -0
  30. data/lib/edoxen/decision_metadata.rb +27 -0
  31. data/lib/edoxen/decision_relation.rb +11 -0
  32. data/lib/edoxen/declaration.rb +25 -0
  33. data/lib/edoxen/entity_ref.rb +74 -0
  34. data/lib/edoxen/enums.rb +129 -8
  35. data/lib/edoxen/error.rb +1 -1
  36. data/lib/edoxen/extension_attribute.rb +78 -0
  37. data/lib/edoxen/host_ref.rb +1 -1
  38. data/lib/edoxen/link_checker.rb +194 -0
  39. data/lib/edoxen/localized_name.rb +16 -0
  40. data/lib/edoxen/localized_string.rb +22 -0
  41. data/lib/edoxen/meeting.rb +42 -36
  42. data/lib/edoxen/meeting_collection.rb +1 -2
  43. data/lib/edoxen/meeting_collection_metadata.rb +4 -2
  44. data/lib/edoxen/meeting_component.rb +37 -0
  45. data/lib/edoxen/meeting_extension.rb +25 -0
  46. data/lib/edoxen/meeting_identifier.rb +1 -1
  47. data/lib/edoxen/meeting_series.rb +26 -0
  48. data/lib/edoxen/minutes.rb +30 -0
  49. data/lib/edoxen/minutes_section.rb +26 -0
  50. data/lib/edoxen/motion.rb +51 -0
  51. data/lib/edoxen/name.rb +29 -0
  52. data/lib/edoxen/officer.rb +19 -0
  53. data/lib/edoxen/officers_host.rb +19 -0
  54. data/lib/edoxen/person.rb +5 -9
  55. data/lib/edoxen/physical_venue.rb +15 -0
  56. data/lib/edoxen/recurrence.rb +27 -0
  57. data/lib/edoxen/recurrence_by_day.rb +10 -0
  58. data/lib/edoxen/reference.rb +1 -1
  59. data/lib/edoxen/reference_data.rb +85 -0
  60. data/lib/edoxen/schema_validator.rb +3 -4
  61. data/lib/edoxen/source_url.rb +4 -4
  62. data/lib/edoxen/statement.rb +21 -0
  63. data/lib/edoxen/structured_identifier.rb +2 -2
  64. data/lib/edoxen/topic.rb +39 -0
  65. data/lib/edoxen/topic_asset.rb +14 -0
  66. data/lib/edoxen/topic_document.rb +16 -0
  67. data/lib/edoxen/venue.rb +79 -0
  68. data/lib/edoxen/venue_collection.rb +18 -0
  69. data/lib/edoxen/venue_validator.rb +74 -0
  70. data/lib/edoxen/version.rb +1 -1
  71. data/lib/edoxen/virtual_venue.rb +15 -0
  72. data/lib/edoxen/vote_record.rb +29 -0
  73. data/lib/edoxen/voting.rb +45 -0
  74. data/lib/edoxen/voting_counts.rb +23 -0
  75. data/lib/edoxen.rb +53 -14
  76. data/schema/edoxen.yaml +1378 -247
  77. data/schema/meeting.yaml +1258 -201
  78. data/sig/edoxen.rbs +581 -1
  79. metadata +82 -21
  80. data/lib/edoxen/_metadata.rb.deprecated +0 -57
  81. data/lib/edoxen/localization.rb +0 -18
  82. data/lib/edoxen/location.rb +0 -15
  83. data/lib/edoxen/meeting_localization.rb +0 -15
  84. data/lib/edoxen/resolution.rb +0 -43
  85. data/lib/edoxen/resolution_collection.rb +0 -10
  86. data/lib/edoxen/resolution_date.rb +0 -11
  87. data/lib/edoxen/resolution_metadata.rb +0 -22
  88. data/lib/edoxen/resolution_relation.rb +0 -11
  89. data/lib/edoxen/resolution_set.rb +0 -17
  90. data/lib/edoxen/schedule_item.rb +0 -16
data/lib/edoxen.rb CHANGED
@@ -18,45 +18,84 @@ module Edoxen
18
18
  # There are intentionally NO `require_relative` calls in this gem —
19
19
  # autoload keeps load-order semantics clean and lets us tolerate the
20
20
  # extensive cross-references between model classes
21
- # (Resolution <-> Localization, ResolutionMetadata <-> Localization, etc.).
21
+ # (Decision <-> Localization, DecisionMetadata <-> Localization, etc.).
22
22
  autoload :VERSION, "edoxen/version"
23
23
  autoload :Error, "edoxen/error"
24
24
  autoload :ValidationError, "edoxen/error"
25
25
  autoload :Enums, "edoxen/enums"
26
+ autoload :ReferenceData, "edoxen/reference_data"
26
27
 
27
- # Information-model classes (one per file, one concept per class).
28
- # Names mirror ../edoxen-model/models/*.lutaml.
28
+ # --- Shared behaviours (mixed into entity + metadata classes) --------
29
+ autoload :OfficersHost, "edoxen/officers_host"
30
+ autoload :BodyVocabularyHost, "edoxen/body_vocabulary_host"
31
+
32
+ # --- Decision side ----------------------------------------------------
29
33
  autoload :StructuredIdentifier, "edoxen/structured_identifier"
30
34
  autoload :MeetingIdentifier, "edoxen/meeting_identifier"
31
- autoload :ResolutionDate, "edoxen/resolution_date"
35
+ autoload :DecisionDate, "edoxen/decision_date"
32
36
  autoload :Action, "edoxen/action"
33
37
  autoload :Approval, "edoxen/approval"
34
38
  autoload :Consideration, "edoxen/consideration"
35
39
  autoload :SourceUrl, "edoxen/source_url"
36
- autoload :Localization, "edoxen/localization"
37
40
  autoload :Url, "edoxen/url"
38
- autoload :ResolutionRelation, "edoxen/resolution_relation"
39
- autoload :Resolution, "edoxen/resolution"
40
- autoload :ResolutionMetadata, "edoxen/resolution_metadata"
41
- autoload :ResolutionCollection, "edoxen/resolution_collection"
41
+ autoload :DecisionRelation, "edoxen/decision_relation"
42
+ autoload :Decision, "edoxen/decision"
43
+ autoload :DecisionMetadata, "edoxen/decision_metadata"
44
+ autoload :DecisionCollection, "edoxen/decision_collection"
42
45
 
43
- # Meeting / Agenda side. Mirrors edoxen-model/models/meeting*.lutaml.
46
+ # --- Meeting/Agenda side ----------------------------------------------
44
47
  autoload :DateRange, "edoxen/date_range"
45
- autoload :Location, "edoxen/location"
48
+ autoload :ContactMethod, "edoxen/contact_method"
49
+ autoload :ContactIdentifier, "edoxen/contact_identifier"
50
+ autoload :Name, "edoxen/name"
51
+ autoload :Contact, "edoxen/contact"
52
+ autoload :LocalizedString, "edoxen/localized_string"
53
+ autoload :LocalizedName, "edoxen/localized_name"
46
54
  autoload :Person, "edoxen/person"
47
55
  autoload :HostRef, "edoxen/host_ref"
48
- autoload :ScheduleItem, "edoxen/schedule_item"
49
56
  autoload :Deadline, "edoxen/deadline"
50
57
  autoload :Reference, "edoxen/reference"
51
58
  autoload :AgendaItem, "edoxen/agenda_item"
52
59
  autoload :Agenda, "edoxen/agenda"
60
+ autoload :Attendance, "edoxen/attendance"
61
+ autoload :VoteRecord, "edoxen/vote_record"
62
+ autoload :MinutesSection, "edoxen/minutes_section"
63
+ autoload :Minutes, "edoxen/minutes"
53
64
  autoload :MeetingRelation, "edoxen/meeting_relation"
54
- autoload :MeetingLocalization, "edoxen/meeting_localization"
55
65
  autoload :Meeting, "edoxen/meeting"
56
66
  autoload :MeetingCollectionMetadata, "edoxen/meeting_collection_metadata"
57
67
  autoload :MeetingCollection, "edoxen/meeting_collection"
58
68
 
59
- # Services.
69
+ # --- BS 0:2006 meeting-minutes concepts --------------------------------
70
+ autoload :Statement, "edoxen/statement"
71
+ autoload :Declaration, "edoxen/declaration"
72
+ autoload :DateTimeRange, "edoxen/date_time_range"
73
+
74
+ # --- v2 broadened-scope entities --------------------------------------
75
+ autoload :ExtensionAttribute, "edoxen/extension_attribute"
76
+ autoload :MeetingExtension, "edoxen/meeting_extension"
77
+ autoload :BodyVocabularyEntry, "edoxen/body_vocabulary_entry"
78
+ autoload :EntityRef, "edoxen/entity_ref"
79
+ autoload :Venue, "edoxen/venue"
80
+ autoload :PhysicalVenue, "edoxen/physical_venue"
81
+ autoload :VirtualVenue, "edoxen/virtual_venue"
82
+ autoload :Motion, "edoxen/motion"
83
+ autoload :VotingCounts, "edoxen/voting_counts"
84
+ autoload :Voting, "edoxen/voting"
85
+ autoload :TopicDocument, "edoxen/topic_document"
86
+ autoload :TopicAsset, "edoxen/topic_asset"
87
+ autoload :Topic, "edoxen/topic"
88
+ autoload :RecurrenceByDay, "edoxen/recurrence_by_day"
89
+ autoload :Recurrence, "edoxen/recurrence"
90
+ autoload :MeetingSeries, "edoxen/meeting_series"
91
+ autoload :MeetingComponent, "edoxen/meeting_component"
92
+ autoload :Officer, "edoxen/officer"
93
+ autoload :VenueValidator, "edoxen/venue_validator"
94
+ autoload :ContactCollection, "edoxen/contact_collection"
95
+ autoload :VenueCollection, "edoxen/venue_collection"
96
+
97
+ # --- Services ---------------------------------------------------------
60
98
  autoload :SchemaValidator, "edoxen/schema_validator"
99
+ autoload :LinkChecker, "edoxen/link_checker"
61
100
  autoload :Cli, "edoxen/cli"
62
101
  end