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.
- checksums.yaml +4 -4
- data/.rubocop.yml +17 -1
- data/.rubocop_todo.yml +1 -1
- data/CHANGELOG.md +246 -0
- data/README.adoc +308 -153
- data/edoxen.gemspec +10 -10
- data/lib/edoxen/action.rb +1 -1
- data/lib/edoxen/agenda.rb +4 -7
- data/lib/edoxen/agenda_item.rb +10 -3
- data/lib/edoxen/approval.rb +1 -1
- data/lib/edoxen/attendance.rb +16 -10
- data/lib/edoxen/body_vocabulary_entry.rb +24 -0
- data/lib/edoxen/body_vocabulary_host.rb +29 -0
- data/lib/edoxen/cli.rb +117 -120
- data/lib/edoxen/component_localization.rb +11 -0
- data/lib/edoxen/consideration.rb +2 -2
- data/lib/edoxen/contact.rb +24 -0
- data/lib/edoxen/contact_identifier.rb +13 -0
- data/lib/edoxen/contact_method.rb +16 -0
- data/lib/edoxen/decision.rb +69 -0
- data/lib/edoxen/decision_collection.rb +10 -0
- data/lib/edoxen/decision_date.rb +9 -0
- data/lib/edoxen/{resolution_metadata.rb → decision_metadata.rb} +5 -6
- data/lib/edoxen/decision_relation.rb +11 -0
- data/lib/edoxen/entity_ref.rb +74 -0
- data/lib/edoxen/enums.rb +117 -9
- data/lib/edoxen/error.rb +1 -1
- data/lib/edoxen/extension_attribute.rb +78 -0
- data/lib/edoxen/host_ref.rb +1 -1
- data/lib/edoxen/link_checker.rb +8 -8
- data/lib/edoxen/localization.rb +2 -2
- data/lib/edoxen/localization_host.rb +23 -0
- data/lib/edoxen/meeting.rb +63 -39
- data/lib/edoxen/meeting_collection.rb +1 -2
- data/lib/edoxen/meeting_collection_metadata.rb +3 -1
- data/lib/edoxen/meeting_component.rb +41 -0
- data/lib/edoxen/meeting_extension.rb +25 -0
- data/lib/edoxen/meeting_identifier.rb +1 -1
- data/lib/edoxen/meeting_localization.rb +6 -1
- data/lib/edoxen/meeting_series.rb +21 -0
- data/lib/edoxen/minutes.rb +2 -2
- data/lib/edoxen/minutes_section.rb +8 -11
- data/lib/edoxen/motion.rb +51 -0
- data/lib/edoxen/name.rb +29 -0
- data/lib/edoxen/officer.rb +19 -0
- data/lib/edoxen/officers_host.rb +19 -0
- data/lib/edoxen/person.rb +5 -9
- data/lib/edoxen/physical_venue.rb +15 -0
- data/lib/edoxen/recurrence.rb +27 -0
- data/lib/edoxen/recurrence_by_day.rb +10 -0
- data/lib/edoxen/reference_data.rb +35 -41
- data/lib/edoxen/schema_validator.rb +2 -3
- data/lib/edoxen/source_url.rb +3 -3
- data/lib/edoxen/structured_identifier.rb +2 -2
- data/lib/edoxen/topic.rb +37 -0
- data/lib/edoxen/topic_asset.rb +14 -0
- data/lib/edoxen/topic_document.rb +16 -0
- data/lib/edoxen/venue.rb +80 -0
- data/lib/edoxen/venue_validator.rb +56 -0
- data/lib/edoxen/version.rb +1 -1
- data/lib/edoxen/virtual_venue.rb +15 -0
- data/lib/edoxen/vote_record.rb +17 -13
- data/lib/edoxen/voting.rb +45 -0
- data/lib/edoxen/voting_counts.rb +23 -0
- data/lib/edoxen.rb +40 -13
- data/schema/edoxen.yaml +792 -145
- data/schema/meeting.yaml +600 -142
- data/sig/edoxen.rbs +581 -1
- metadata +57 -20
- data/lib/edoxen/_metadata.rb.deprecated +0 -57
- data/lib/edoxen/location.rb +0 -15
- data/lib/edoxen/resolution.rb +0 -43
- data/lib/edoxen/resolution_collection.rb +0 -10
- data/lib/edoxen/resolution_date.rb +0 -11
- data/lib/edoxen/resolution_relation.rb +0 -11
- data/lib/edoxen/resolution_set.rb +0 -17
- data/lib/edoxen/schedule_item.rb +0 -27
- data/lib/edoxen/schedule_item_localization.rb +0 -21
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: edoxen
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json_schemer
|
|
@@ -54,6 +54,20 @@ dependencies:
|
|
|
54
54
|
version: '1.0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: unlocodes
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0.3'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0.3'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: iata
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
73
|
- - "~>"
|
|
@@ -67,11 +81,11 @@ dependencies:
|
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: '0.1'
|
|
69
83
|
description: |
|
|
70
|
-
Edoxen provides a Ruby library for working with
|
|
71
|
-
users to create, manipulate, and serialize
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
84
|
+
Edoxen provides a Ruby library for working with a generic meeting/decision
|
|
85
|
+
model, allowing users to create, manipulate, and serialize meeting, agenda,
|
|
86
|
+
motion, voting, and decision data in a structured format. Built on top of
|
|
87
|
+
the lutaml-model serialization framework, with profile-based customization
|
|
88
|
+
(ISO 8601-2 §15) for domain-specific extensions.
|
|
75
89
|
email:
|
|
76
90
|
- open.source@ribose.com
|
|
77
91
|
executables:
|
|
@@ -82,6 +96,7 @@ files:
|
|
|
82
96
|
- ".rspec"
|
|
83
97
|
- ".rubocop.yml"
|
|
84
98
|
- ".rubocop_todo.yml"
|
|
99
|
+
- CHANGELOG.md
|
|
85
100
|
- CLAUDE.md
|
|
86
101
|
- CODE_OF_CONDUCT.md
|
|
87
102
|
- Gemfile
|
|
@@ -101,47 +116,69 @@ files:
|
|
|
101
116
|
- edoxen.gemspec
|
|
102
117
|
- exe/edoxen
|
|
103
118
|
- lib/edoxen.rb
|
|
104
|
-
- lib/edoxen/_metadata.rb.deprecated
|
|
105
119
|
- lib/edoxen/action.rb
|
|
106
120
|
- lib/edoxen/agenda.rb
|
|
107
121
|
- lib/edoxen/agenda_item.rb
|
|
108
122
|
- lib/edoxen/approval.rb
|
|
109
123
|
- lib/edoxen/attendance.rb
|
|
124
|
+
- lib/edoxen/body_vocabulary_entry.rb
|
|
125
|
+
- lib/edoxen/body_vocabulary_host.rb
|
|
110
126
|
- lib/edoxen/cli.rb
|
|
127
|
+
- lib/edoxen/component_localization.rb
|
|
111
128
|
- lib/edoxen/consideration.rb
|
|
129
|
+
- lib/edoxen/contact.rb
|
|
130
|
+
- lib/edoxen/contact_identifier.rb
|
|
131
|
+
- lib/edoxen/contact_method.rb
|
|
112
132
|
- lib/edoxen/date_range.rb
|
|
113
133
|
- lib/edoxen/deadline.rb
|
|
134
|
+
- lib/edoxen/decision.rb
|
|
135
|
+
- lib/edoxen/decision_collection.rb
|
|
136
|
+
- lib/edoxen/decision_date.rb
|
|
137
|
+
- lib/edoxen/decision_metadata.rb
|
|
138
|
+
- lib/edoxen/decision_relation.rb
|
|
139
|
+
- lib/edoxen/entity_ref.rb
|
|
114
140
|
- lib/edoxen/enums.rb
|
|
115
141
|
- lib/edoxen/error.rb
|
|
142
|
+
- lib/edoxen/extension_attribute.rb
|
|
116
143
|
- lib/edoxen/host_ref.rb
|
|
117
144
|
- lib/edoxen/link_checker.rb
|
|
118
145
|
- lib/edoxen/localization.rb
|
|
119
|
-
- lib/edoxen/
|
|
146
|
+
- lib/edoxen/localization_host.rb
|
|
120
147
|
- lib/edoxen/meeting.rb
|
|
121
148
|
- lib/edoxen/meeting_collection.rb
|
|
122
149
|
- lib/edoxen/meeting_collection_metadata.rb
|
|
150
|
+
- lib/edoxen/meeting_component.rb
|
|
151
|
+
- lib/edoxen/meeting_extension.rb
|
|
123
152
|
- lib/edoxen/meeting_identifier.rb
|
|
124
153
|
- lib/edoxen/meeting_localization.rb
|
|
125
154
|
- lib/edoxen/meeting_relation.rb
|
|
155
|
+
- lib/edoxen/meeting_series.rb
|
|
126
156
|
- lib/edoxen/minutes.rb
|
|
127
157
|
- lib/edoxen/minutes_section.rb
|
|
158
|
+
- lib/edoxen/motion.rb
|
|
159
|
+
- lib/edoxen/name.rb
|
|
160
|
+
- lib/edoxen/officer.rb
|
|
161
|
+
- lib/edoxen/officers_host.rb
|
|
128
162
|
- lib/edoxen/person.rb
|
|
163
|
+
- lib/edoxen/physical_venue.rb
|
|
164
|
+
- lib/edoxen/recurrence.rb
|
|
165
|
+
- lib/edoxen/recurrence_by_day.rb
|
|
129
166
|
- lib/edoxen/reference.rb
|
|
130
167
|
- lib/edoxen/reference_data.rb
|
|
131
|
-
- lib/edoxen/resolution.rb
|
|
132
|
-
- lib/edoxen/resolution_collection.rb
|
|
133
|
-
- lib/edoxen/resolution_date.rb
|
|
134
|
-
- lib/edoxen/resolution_metadata.rb
|
|
135
|
-
- lib/edoxen/resolution_relation.rb
|
|
136
|
-
- lib/edoxen/resolution_set.rb
|
|
137
|
-
- lib/edoxen/schedule_item.rb
|
|
138
|
-
- lib/edoxen/schedule_item_localization.rb
|
|
139
168
|
- lib/edoxen/schema_validator.rb
|
|
140
169
|
- lib/edoxen/source_url.rb
|
|
141
170
|
- lib/edoxen/structured_identifier.rb
|
|
171
|
+
- lib/edoxen/topic.rb
|
|
172
|
+
- lib/edoxen/topic_asset.rb
|
|
173
|
+
- lib/edoxen/topic_document.rb
|
|
142
174
|
- lib/edoxen/url.rb
|
|
175
|
+
- lib/edoxen/venue.rb
|
|
176
|
+
- lib/edoxen/venue_validator.rb
|
|
143
177
|
- lib/edoxen/version.rb
|
|
178
|
+
- lib/edoxen/virtual_venue.rb
|
|
144
179
|
- lib/edoxen/vote_record.rb
|
|
180
|
+
- lib/edoxen/voting.rb
|
|
181
|
+
- lib/edoxen/voting_counts.rb
|
|
145
182
|
- schema/edoxen.yaml
|
|
146
183
|
- schema/meeting.yaml
|
|
147
184
|
- sig/edoxen.rbs
|
|
@@ -152,6 +189,7 @@ metadata:
|
|
|
152
189
|
homepage_uri: https://github.com/metanorma/edoxen
|
|
153
190
|
source_code_uri: https://github.com/metanorma/edoxen
|
|
154
191
|
changelog_uri: https://github.com/metanorma/edoxen
|
|
192
|
+
rubygems_mfa_required: 'true'
|
|
155
193
|
post_install_message:
|
|
156
194
|
rdoc_options: []
|
|
157
195
|
require_paths:
|
|
@@ -160,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
160
198
|
requirements:
|
|
161
199
|
- - ">="
|
|
162
200
|
- !ruby/object:Gem::Version
|
|
163
|
-
version: 3.
|
|
201
|
+
version: 3.1.0
|
|
164
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
203
|
requirements:
|
|
166
204
|
- - ">="
|
|
@@ -170,6 +208,5 @@ requirements: []
|
|
|
170
208
|
rubygems_version: 3.5.22
|
|
171
209
|
signing_key:
|
|
172
210
|
specification_version: 4
|
|
173
|
-
summary: Edoxen is a
|
|
174
|
-
decision information.
|
|
211
|
+
summary: Edoxen is a generic information model for meetings, agendas, and decisions.
|
|
175
212
|
test_files: []
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
require_relative "resolution_date"
|
|
5
|
-
require_relative "url"
|
|
6
|
-
require_relative "localization"
|
|
7
|
-
|
|
8
|
-
module Edoxen
|
|
9
|
-
# A per-language source-URL record. Carries the URL ref, its format
|
|
10
|
-
# (pdf, html, ...), and the language_code (ISO 639-3) for which the
|
|
11
|
-
# URL is the canonical source.
|
|
12
|
-
class SourceUrl < Lutaml::Model::Serializable
|
|
13
|
-
attribute :ref, :string
|
|
14
|
-
attribute :format, :string
|
|
15
|
-
attribute :language_code, :string
|
|
16
|
-
|
|
17
|
-
key_value do
|
|
18
|
-
map "ref", to: :ref
|
|
19
|
-
map "format", to: :format
|
|
20
|
-
map "language_code", to: :language_code
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
class Metadata < Lutaml::Model::Serializable
|
|
25
|
-
attribute :title, :string
|
|
26
|
-
attribute :identifier, :string
|
|
27
|
-
attribute :dates, ResolutionDate, collection: true
|
|
28
|
-
attribute :source, :string
|
|
29
|
-
attribute :venue, :string
|
|
30
|
-
attribute :chair, :string
|
|
31
|
-
attribute :urls, Url, collection: true
|
|
32
|
-
|
|
33
|
-
# OIML extensions — see TODO.complete/14 for the glossarist-style
|
|
34
|
-
# i18n model. `title_localized` carries the per-language title
|
|
35
|
-
# parallel to Resolution#localizations. `source_urls` carries the
|
|
36
|
-
# per-language PDF URLs. `city`/`country_code` carry the IATA /
|
|
37
|
-
# ISO 3166-1 alpha-2 codes for the host venue.
|
|
38
|
-
attribute :title_localized, Localization, collection: true
|
|
39
|
-
attribute :source_urls, SourceUrl, collection: true
|
|
40
|
-
attribute :city, :string
|
|
41
|
-
attribute :country_code, :string
|
|
42
|
-
|
|
43
|
-
key_value do
|
|
44
|
-
map "title", to: :title
|
|
45
|
-
map "identifier", to: :identifier
|
|
46
|
-
map "dates", to: :dates
|
|
47
|
-
map "source", to: :source
|
|
48
|
-
map "venue", to: :venue
|
|
49
|
-
map "chair", to: :chair
|
|
50
|
-
map "urls", to: :urls
|
|
51
|
-
map "title_localized", to: :title_localized
|
|
52
|
-
map "source_urls", to: :source_urls
|
|
53
|
-
map "city", to: :city
|
|
54
|
-
map "country_code", to: :country_code
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
data/lib/edoxen/location.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# Venue geography. Multi-venue meetings (e.g., a plenary week with
|
|
5
|
-
# different hotels) carry one Location per venue.
|
|
6
|
-
class Location < Lutaml::Model::Serializable
|
|
7
|
-
attribute :name, :string
|
|
8
|
-
attribute :address, :string
|
|
9
|
-
attribute :link, :string
|
|
10
|
-
attribute :phone, :string
|
|
11
|
-
attribute :note, :string
|
|
12
|
-
attribute :lat, :float
|
|
13
|
-
attribute :lon, :float
|
|
14
|
-
end
|
|
15
|
-
end
|
data/lib/edoxen/resolution.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# A formal Resolution. Language-agnostic admin fields live here; every
|
|
5
|
-
# translatable field is wrapped inside `localizations[]` (one entry per
|
|
6
|
-
# available language; at least one is required by the schema).
|
|
7
|
-
#
|
|
8
|
-
# Wire names follow lutaml-model's default convention: each declared
|
|
9
|
-
# attribute serializes to its snake_case name on the wire. Override
|
|
10
|
-
# with an explicit `key_value do; map "wire", to: :attr; end` block
|
|
11
|
-
# only when the wire name differs.
|
|
12
|
-
class Resolution < Lutaml::Model::Serializable
|
|
13
|
-
attribute :identifier, StructuredIdentifier, collection: true
|
|
14
|
-
attribute :type, :string, values: Enums::RESOLUTION_TYPE
|
|
15
|
-
attribute :doi, :string
|
|
16
|
-
attribute :urn, :string
|
|
17
|
-
attribute :agenda_item, :string
|
|
18
|
-
attribute :dates, ResolutionDate, collection: true
|
|
19
|
-
attribute :categories, :string, collection: true
|
|
20
|
-
attribute :meeting, MeetingIdentifier
|
|
21
|
-
attribute :relations, ResolutionRelation, collection: true
|
|
22
|
-
attribute :urls, Url, collection: true
|
|
23
|
-
attribute :localizations, Localization, collection: true
|
|
24
|
-
|
|
25
|
-
# Lookup by ISO 639-3 language code. Returns nil when no exact match
|
|
26
|
-
# exists and `fallback:` is false (the default); returns the first
|
|
27
|
-
# localization otherwise. Keeps the language-preference policy in
|
|
28
|
-
# one place so callers stop reimplementing `find { |l| ... }`.
|
|
29
|
-
def in_language(code, fallback: false)
|
|
30
|
-
match = localizations&.find { |loc| loc.language_code == code.to_s }
|
|
31
|
-
return match if match
|
|
32
|
-
|
|
33
|
-
fallback ? localizations&.first : nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# The canonical rendering — English when available, else the first
|
|
37
|
-
# declared localization. Mirrors the glossarist LocalizedConcept
|
|
38
|
-
# "preferred language" notion.
|
|
39
|
-
def primary_localization
|
|
40
|
-
in_language("eng", fallback: true)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# Top-level container for a published resolution collection: metadata
|
|
5
|
-
# plus the list of resolutions.
|
|
6
|
-
class ResolutionCollection < Lutaml::Model::Serializable
|
|
7
|
-
attribute :metadata, ResolutionMetadata
|
|
8
|
-
attribute :resolutions, Resolution, collection: true
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# Date with semantic kind (adoption, drafted, discussed).
|
|
5
|
-
# ResolutionDate is the only carrier of a *typed* date in the model —
|
|
6
|
-
# plain `Date` in lutaml-model has no semantic context.
|
|
7
|
-
class ResolutionDate < Lutaml::Model::Serializable
|
|
8
|
-
attribute :date, :date
|
|
9
|
-
attribute :type, :string, values: Enums::RESOLUTION_DATE_TYPE
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# Directed relation between two resolutions, identified by their
|
|
5
|
-
# StructuredIdentifier (prefix + number).
|
|
6
|
-
class ResolutionRelation < Lutaml::Model::Serializable
|
|
7
|
-
attribute :source, StructuredIdentifier
|
|
8
|
-
attribute :destination, StructuredIdentifier
|
|
9
|
-
attribute :type, :string, values: Enums::RESOLUTION_RELATION_TYPE
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
require_relative "metadata"
|
|
5
|
-
require_relative "resolution"
|
|
6
|
-
|
|
7
|
-
module Edoxen
|
|
8
|
-
class ResolutionSet < Lutaml::Model::Serializable
|
|
9
|
-
attribute :metadata, Metadata
|
|
10
|
-
attribute :resolutions, Resolution, collection: true
|
|
11
|
-
|
|
12
|
-
key_value do
|
|
13
|
-
map "metadata", to: :metadata
|
|
14
|
-
map "resolutions", to: :resolutions
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
data/lib/edoxen/schedule_item.rb
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# One entry in the meeting timetable. Structural fields (date, time,
|
|
5
|
-
# room) are language-agnostic; per-language content (event name,
|
|
6
|
-
# description) lives in `localizations[]`. Mirrors the glossarist
|
|
7
|
-
# LocalizedConcept pattern.
|
|
8
|
-
class ScheduleItem < Lutaml::Model::Serializable
|
|
9
|
-
attribute :date, :date
|
|
10
|
-
attribute :time, :string
|
|
11
|
-
attribute :event, :string
|
|
12
|
-
attribute :description, :string
|
|
13
|
-
attribute :room, :string
|
|
14
|
-
attribute :localizations, ScheduleItemLocalization, collection: true
|
|
15
|
-
|
|
16
|
-
def in_language(code, fallback: false)
|
|
17
|
-
match = localizations&.find { |loc| loc.language_code == code.to_s }
|
|
18
|
-
return match if match
|
|
19
|
-
|
|
20
|
-
fallback ? localizations&.first : nil
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def primary_localization
|
|
24
|
-
in_language("eng", fallback: true)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Edoxen
|
|
4
|
-
# Per-language content for a ScheduleItem. Mirrors the glossarist
|
|
5
|
-
# LocalizedConcept pattern: structural fields (date, time, room) live
|
|
6
|
-
# on the parent ScheduleItem; per-language content (event name,
|
|
7
|
-
# description) lives here.
|
|
8
|
-
class ScheduleItemLocalization < Lutaml::Model::Serializable
|
|
9
|
-
attribute :language_code, :string
|
|
10
|
-
attribute :script, :string
|
|
11
|
-
attribute :event, :string
|
|
12
|
-
attribute :description, :string
|
|
13
|
-
|
|
14
|
-
key_value do
|
|
15
|
-
map "language_code", to: :language_code
|
|
16
|
-
map "script", to: :script
|
|
17
|
-
map "event", to: :event
|
|
18
|
-
map "description", to: :description
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|