relaton-bipm 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d7a5ceebc3dca34d8a3b78bff607bbe9c371228c2daec7573754146115ab954
4
- data.tar.gz: f3c03e5999e94a7419cc29ec121372bdd84556ceac60baac3d5fb5bc295c9c8d
3
+ metadata.gz: 6155907dfcf708b034a914e45245ab8fd8262de9c83d29fb6436fcd8130c5ad3
4
+ data.tar.gz: 251bf3228d0717ca3fcc4a181b50d2ae62f5e1df7fe6a7b3284404463ab389e4
5
5
  SHA512:
6
- metadata.gz: 027a41b07adfae1ae37fea8bd0d6c70951f1c6d274e1c343ec3f4dc4506f0b14989cf69ab0f695b08253cb723c05be13e5214a848188781dbe2ca26d2e383494
7
- data.tar.gz: 74248e6a19fab3d461b9e0eae44b947a63224701a48844ab03f210e480deb4b2403da653a840eeaacc232f0b1f780265c231b5b966e5db5fd9972e729607745c
6
+ metadata.gz: cbc54d6dfc3c066aada2bcd84cdde54a9218b02de719149fd8d556e281d3e232fe74a1094bb349b91a6bef748afe0c0398aeebbe3c96e27b8c55526efc1ed349
7
+ data.tar.gz: dfd7cf7dc70e74c3f4ec56b3f32e6c9816e3c49a2c94d26c4fbf0048f06bb21df15fea401e4c33a0e5927cdb2486888ecb312d670b04105dabb194620b3d62eb
@@ -42,9 +42,158 @@
42
42
  <data type="boolean"/>
43
43
  </attribute>
44
44
  </optional>
45
+ <optional>
46
+ <attribute name="nosee">
47
+ <data type="boolean"/>
48
+ </attribute>
49
+ </optional>
45
50
  <text/>
46
51
  </element>
47
52
  </define>
53
+ <define name="Clause-Section">
54
+ <optional>
55
+ <attribute name="id">
56
+ <data type="ID"/>
57
+ </attribute>
58
+ </optional>
59
+ <optional>
60
+ <attribute name="language"/>
61
+ </optional>
62
+ <optional>
63
+ <attribute name="script"/>
64
+ </optional>
65
+ <optional>
66
+ <attribute name="inline-header">
67
+ <data type="boolean"/>
68
+ </attribute>
69
+ </optional>
70
+ <optional>
71
+ <attribute name="obligation">
72
+ <choice>
73
+ <value>normative</value>
74
+ <value>informative</value>
75
+ </choice>
76
+ </attribute>
77
+ </optional>
78
+ <optional>
79
+ <attribute name="type"/>
80
+ </optional>
81
+ <optional>
82
+ <attribute name="unnumbered">
83
+ <data type="boolean"/>
84
+ </attribute>
85
+ </optional>
86
+ <optional>
87
+ <ref name="section-title"/>
88
+ </optional>
89
+ <group>
90
+ <choice>
91
+ <group>
92
+ <zeroOrMore>
93
+ <ref name="BasicBlock"/>
94
+ </zeroOrMore>
95
+ <zeroOrMore>
96
+ <ref name="note"/>
97
+ </zeroOrMore>
98
+ </group>
99
+ <ref name="amend"/>
100
+ </choice>
101
+ <zeroOrMore>
102
+ <choice>
103
+ <ref name="clause-subsection"/>
104
+ <ref name="terms"/>
105
+ <ref name="definitions"/>
106
+ </choice>
107
+ </zeroOrMore>
108
+ </group>
109
+ </define>
110
+ <define name="Annex-Section">
111
+ <optional>
112
+ <attribute name="id">
113
+ <data type="ID"/>
114
+ </attribute>
115
+ </optional>
116
+ <optional>
117
+ <attribute name="language"/>
118
+ </optional>
119
+ <optional>
120
+ <attribute name="script"/>
121
+ </optional>
122
+ <optional>
123
+ <attribute name="inline-header">
124
+ <data type="boolean"/>
125
+ </attribute>
126
+ </optional>
127
+ <optional>
128
+ <attribute name="obligation">
129
+ <choice>
130
+ <value>normative</value>
131
+ <value>informative</value>
132
+ </choice>
133
+ </attribute>
134
+ </optional>
135
+ <optional>
136
+ <attribute name="unnumbered">
137
+ <data type="boolean"/>
138
+ </attribute>
139
+ </optional>
140
+ <optional>
141
+ <ref name="section-title"/>
142
+ </optional>
143
+ <group>
144
+ <group>
145
+ <zeroOrMore>
146
+ <ref name="BasicBlock"/>
147
+ </zeroOrMore>
148
+ <zeroOrMore>
149
+ <ref name="note"/>
150
+ </zeroOrMore>
151
+ </group>
152
+ <zeroOrMore>
153
+ <choice>
154
+ <ref name="annex-subsection"/>
155
+ <ref name="terms"/>
156
+ <ref name="definitions"/>
157
+ <ref name="references"/>
158
+ </choice>
159
+ </zeroOrMore>
160
+ </group>
161
+ </define>
162
+ <define name="ol">
163
+ <element name="ol">
164
+ <attribute name="id">
165
+ <data type="ID"/>
166
+ </attribute>
167
+ <optional>
168
+ <attribute name="keep-with-next">
169
+ <data type="boolean"/>
170
+ </attribute>
171
+ </optional>
172
+ <optional>
173
+ <attribute name="keep-lines-together">
174
+ <data type="boolean"/>
175
+ </attribute>
176
+ </optional>
177
+ <attribute name="type">
178
+ <choice>
179
+ <value>roman</value>
180
+ <value>alphabet</value>
181
+ <value>arabic</value>
182
+ <value>roman_upper</value>
183
+ <value>alphabet_upper</value>
184
+ </choice>
185
+ </attribute>
186
+ <optional>
187
+ <attribute name="start"/>
188
+ </optional>
189
+ <oneOrMore>
190
+ <ref name="li"/>
191
+ </oneOrMore>
192
+ <zeroOrMore>
193
+ <ref name="note"/>
194
+ </zeroOrMore>
195
+ </element>
196
+ </define>
48
197
  <define name="DocumentType">
49
198
  <choice>
50
199
  <value>brochure</value>
@@ -65,9 +214,9 @@
65
214
  <oneOrMore>
66
215
  <ref name="committee"/>
67
216
  </oneOrMore>
68
- <oneOrMore>
217
+ <zeroOrMore>
69
218
  <ref name="workgroup"/>
70
- </oneOrMore>
219
+ </zeroOrMore>
71
220
  </element>
72
221
  </define>
73
222
  <define name="structuredidentifier">
@@ -98,6 +247,9 @@
98
247
  <optional>
99
248
  <ref name="si-aspect"/>
100
249
  </optional>
250
+ <optional>
251
+ <ref name="meeting-note"/>
252
+ </optional>
101
253
  <ref name="structuredidentifier"/>
102
254
  </define>
103
255
  </include>
@@ -132,30 +284,41 @@
132
284
  </define>
133
285
  <define name="committee">
134
286
  <element name="committee">
135
- <choice>
136
- <value>CGPM</value>
137
- <value>CIPM</value>
138
- <value>BIPM</value>
139
- <value>CCAUV</value>
140
- <value>CCEM</value>
141
- <value>CCL</value>
142
- <value>CCM</value>
143
- <value>CCPR</value>
144
- <value>CCQM</value>
145
- <value>CCRI</value>
146
- <value>CCT</value>
147
- <value>CCTF</value>
148
- <value>CCU</value>
149
- <value>CCL-CCTF</value>
150
- <value>JCGM</value>
151
- <value>JCRB</value>
152
- <value>JCTLM</value>
153
- <value>INetQI</value>
154
- </choice>
287
+ <attribute name="acronym">
288
+ <choice>
289
+ <value>CGPM</value>
290
+ <value>CIPM</value>
291
+ <value>BIPM</value>
292
+ <value>CCAUV</value>
293
+ <value>CCEM</value>
294
+ <value>CCL</value>
295
+ <value>CCM</value>
296
+ <value>CCPR</value>
297
+ <value>CCQM</value>
298
+ <value>CCRI</value>
299
+ <value>CCT</value>
300
+ <value>CCTF</value>
301
+ <value>CCU</value>
302
+ <value>CCL-CCTF</value>
303
+ <value>JCGM</value>
304
+ <value>JCRB</value>
305
+ <value>JCTLM</value>
306
+ <value>INetQI</value>
307
+ </choice>
308
+ </attribute>
309
+ <ref name="LocalizedString"/>
155
310
  </element>
156
311
  </define>
157
312
  <define name="workgroup">
158
313
  <element name="workgroup">
314
+ <optional>
315
+ <attribute name="acronym"/>
316
+ </optional>
317
+ <text/>
318
+ </element>
319
+ </define>
320
+ <define name="meeting-note">
321
+ <element name="meeting-note">
159
322
  <text/>
160
323
  </element>
161
324
  </define>
@@ -182,7 +345,9 @@
182
345
  <zeroOrMore>
183
346
  <ref name="annex"/>
184
347
  </zeroOrMore>
185
- <ref name="bibliography"/>
348
+ <optional>
349
+ <ref name="bibliography"/>
350
+ </optional>
186
351
  </element>
187
352
  </define>
188
353
  </grammar>
@@ -24,6 +24,14 @@
24
24
  <start>
25
25
  <ref name="standard-document"/>
26
26
  </start>
27
+ <define name="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
27
35
  <define name="hyperlink">
28
36
  <element name="link">
29
37
  <attribute name="target">
@@ -141,6 +149,11 @@
141
149
  <data type="boolean"/>
142
150
  </attribute>
143
151
  </optional>
152
+ <optional>
153
+ <attribute name="key">
154
+ <data type="boolean"/>
155
+ </attribute>
156
+ </optional>
144
157
  <oneOrMore>
145
158
  <ref name="dt"/>
146
159
  <ref name="dd"/>
@@ -1164,49 +1177,7 @@
1164
1177
  </define>
1165
1178
  <define name="annex">
1166
1179
  <element name="annex">
1167
- <optional>
1168
- <attribute name="id">
1169
- <data type="ID"/>
1170
- </attribute>
1171
- </optional>
1172
- <optional>
1173
- <attribute name="language"/>
1174
- </optional>
1175
- <optional>
1176
- <attribute name="script"/>
1177
- </optional>
1178
- <optional>
1179
- <attribute name="inline-header">
1180
- <data type="boolean"/>
1181
- </attribute>
1182
- </optional>
1183
- <attribute name="obligation">
1184
- <choice>
1185
- <value>normative</value>
1186
- <value>informative</value>
1187
- </choice>
1188
- </attribute>
1189
- <optional>
1190
- <ref name="section-title"/>
1191
- </optional>
1192
- <group>
1193
- <group>
1194
- <zeroOrMore>
1195
- <ref name="BasicBlock"/>
1196
- </zeroOrMore>
1197
- <zeroOrMore>
1198
- <ref name="note"/>
1199
- </zeroOrMore>
1200
- </group>
1201
- <zeroOrMore>
1202
- <choice>
1203
- <ref name="annex-subsection"/>
1204
- <ref name="terms"/>
1205
- <ref name="definitions"/>
1206
- <ref name="references"/>
1207
- </choice>
1208
- </zeroOrMore>
1209
- </group>
1180
+ <ref name="Annex-Section"/>
1210
1181
  </element>
1211
1182
  </define>
1212
1183
  <define name="terms">
@@ -1,6 +1,8 @@
1
1
  require "relaton_bib"
2
2
  require "relaton_bipm/version"
3
3
  require "relaton_bipm/editorial_group"
4
+ require "relaton_bipm/committee"
5
+ require "relaton_bipm/workgroup"
4
6
  require "relaton_bipm/structured_identifier"
5
7
  require "relaton_bipm/bibliographic_date"
6
8
  require "relaton_bipm/document_relation"
@@ -0,0 +1,57 @@
1
+ CCAUV:
2
+ fr: Comité consultatif de l’acoustique, des ultrasons et des vibrations
3
+ en: Consultative Committee for Acoustics, Ultrasound and Vibration
4
+ CCDS:
5
+ fr: Comité consultatif pour la définition de la seconde
6
+ en: Consultative Committee for the Definition of the Second
7
+ note: see CCTF
8
+ CCE:
9
+ fr: Comité consultatif d’électricité
10
+ en: Consultative Committee for Electricity
11
+ note: see CCEM
12
+ CCEM:
13
+ fr: Comité consultatif d’électricité et magnétisme
14
+ en: Consultative Committee for Electricity and Magnetism
15
+ note: formerly the CCE
16
+ CCL:
17
+ fr: Comité consultatif des longueurs
18
+ en: Consultative Committee for Length
19
+ CCM:
20
+ fr: Comité consultatif pour la masse et les grandeurs apparentées
21
+ en: Consultative Committee for Mass and Related Quantities
22
+ CCPR:
23
+ fr: Comité consultatif de photométrie et radiométrie
24
+ en: Consultative Committee for Photometry and Radiometry
25
+ CCQM:
26
+ fr: 'Comité consultatif pour la quantité de matière : métrologie en chimie et biologie'
27
+ en: 'Consultative Committee for Amount of Substance: Metrology in Chemistry and Biology'
28
+ CCRI:
29
+ fr: Comité consultatif des rayonnements ionisants
30
+ en: Consultative Committee for Ionizing Radiation
31
+ CCT:
32
+ fr: Comité consultatif de thermométrie
33
+ en: Consultative Committee for Thermometry
34
+ CCTF:
35
+ fr: Comité consultatif du temps et des fréquences
36
+ en: Consultative Committee for Time and Frequency
37
+ note: formerly the CCDS
38
+ CCU:
39
+ fr: Comité consultatif des unités
40
+ en: Consultative Committee for Units
41
+ CGPM:
42
+ fr: Conférence générale des poids et mesures
43
+ en: General Conference on Weights and Measures
44
+ CIPM:
45
+ fr: Comité international des poids et mesures
46
+ en: International Committee for Weights and Measures
47
+ BIPM:
48
+ en: Joint Committees of the BIPM and other international organizations
49
+ CCL-CCTF:
50
+ JCGM:
51
+ en: Joint Committee for Guides in Metrology
52
+ JCRB:
53
+ en: Joint Committee of the Regional Metrology Organizations and the BIPM
54
+ JCTLM:
55
+ en: Joint Committee for Traceability in Laboratory Medicine
56
+ INetQI:
57
+ en: International Network on Quality Infrastructure
@@ -13,19 +13,20 @@ module RelatonBipm
13
13
  kg_h_c_deltanu kg_h m_c_deltanu m_c mol_NA s_deltanu
14
14
  ].freeze
15
15
 
16
- # @return [RelatonBipm::CommentPeriod, NilClass]
16
+ # @return [RelatonBipm::CommentPeriod, nil]
17
17
  attr_reader :comment_period
18
18
 
19
- # @return [String]
20
- attr_reader :si_aspect
19
+ # @return [String, nil]
20
+ attr_reader :si_aspect, :meeting_note
21
21
 
22
22
  # @param relation [Array<RelatonBipm::DocumentRelation>]
23
23
  # @param editorialgroup [RelatonBipm::EditorialGroup]
24
- # @param comment_period [RelatonBipm::CommentPeriod, NilClass]
25
- # @param si_aspect [String]
24
+ # @param comment_period [RelatonBipm::CommentPeriod, nil]
25
+ # @param si_aspect [String, nil]
26
+ # @param meeting_note [String, nil]
26
27
  # @param structuredidentifier [RelatonBipm::StructuredIdentifier]
27
28
  def initialize(**args) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
28
- if args[:docstatus] && !STATUSES.include?(args[:docstatus].stage)
29
+ if args[:docstatus] && !STATUSES.include?(args[:docstatus].stage.value)
29
30
  warn "[relaton-bipm] Warning: invalid docstatus: #{args[:docstatus]}. "\
30
31
  "It should be one of: #{STATUSES}"
31
32
  end
@@ -37,6 +38,7 @@ module RelatonBipm
37
38
 
38
39
  @comment_period = args.delete :comment_period
39
40
  @si_aspect = args.delete :si_aspect
41
+ @meeting_note = args[:meeting_note]
40
42
  super
41
43
  end
42
44
 
@@ -55,6 +57,7 @@ module RelatonBipm
55
57
  editorialgroup&.to_xml b
56
58
  comment_period&.to_xml b
57
59
  b.send "si-aspect", si_aspect if si_aspect
60
+ b.send "meeting-note", meeting_note if meeting_note
58
61
  structuredidentifier&.to_xml b
59
62
  end
60
63
  end
@@ -66,6 +69,7 @@ module RelatonBipm
66
69
  hash = super
67
70
  hash["comment_period"] = comment_period.to_hash if comment_period
68
71
  hash["si_aspect"] = si_aspect if si_aspect
72
+ hash["meeting-note"] = meeting_note if meeting_note
69
73
  hash
70
74
  end
71
75
 
@@ -75,7 +79,8 @@ module RelatonBipm
75
79
  pref = prefix.empty? ? prefix : prefix + "."
76
80
  out = super
77
81
  out += comment_period.to_asciibib prefix if comment_period
78
- out += "#{pref}.si_aspect:: #{si_aspect}\n" if si_aspect
82
+ out += "#{pref}si_aspect:: #{si_aspect}\n" if si_aspect
83
+ out += "#{pref}meeting_note:: #{meeting_note}\h" if meeting_note
79
84
  out
80
85
  end
81
86
  end
@@ -0,0 +1,60 @@
1
+ module RelatonBipm
2
+ class Committee
3
+ # @return [String]
4
+ attr_reader :acronym
5
+
6
+ # @return [RelatonBib::LocalizedString]
7
+ attr_reader :content
8
+
9
+ # @param acronym [String]
10
+ # @param content [RelatonBib::LocalisedString, String, nil]
11
+ def initialize(acronym:, content: nil)
12
+ acronyms = YAML.load_file File.join(__dir__, "acronyms.yaml")
13
+ unless acronyms[acronym]
14
+ warn "[relaton-bipm] WARNING: invalid acronym: #{acronym}. Allowed "\
15
+ "values: #{acronyms.map { |k, _v| k }.join ', '}"
16
+ end
17
+
18
+ @acronym = acronym
19
+ @content = localized_content content, acronyms[acronym]
20
+ end
21
+
22
+ # @param builder [Nokogiri::XML::Builder]
23
+ def to_xml(builder)
24
+ builder.committee(acronym: acronym) { |b| content.to_xml b }
25
+ end
26
+
27
+ # @param prefix [String]
28
+ # @param count [Integer]
29
+ # @return [String]
30
+ def to_asciibib(prefix, count = 1)
31
+ pref = prefix.empty? ? prefix : prefix + "."
32
+ pref += "committee"
33
+ out = count > 1 ? "#{pref}::\n" : ""
34
+ out += "#{pref}.acronym:: #{acronym}\n"
35
+ out + content.to_asciibib(pref)
36
+ end
37
+
38
+ # @return [Hash]
39
+ def to_hash
40
+ hash = { "acronym" => acronym }
41
+ cnt = content.to_hash
42
+ if cnt.is_a? Array then hash["variants"] = cnt
43
+ elsif cnt.is_a? Hash then hash.merge! cnt
44
+ else hash["content"] = cnt
45
+ end
46
+ hash
47
+ end
48
+
49
+ private
50
+
51
+ def localized_content(cnt, acr)
52
+ if cnt.is_a? String
53
+ RelatonBib::LocalizedString.new cnt
54
+ elsif (cnt.nil? || cnt.empty?) && acr && acr["en"]
55
+ RelatonBib::LocalizedString.new(acr["en"], "en", "Latn")
56
+ else cnt
57
+ end
58
+ end
59
+ end
60
+ end
@@ -2,21 +2,12 @@ module RelatonBipm
2
2
  class EditorialGroup
3
3
  include RelatonBib
4
4
 
5
- COMMITTEES = %w[CGPM CIPM BIPM CCAUV CCEM CCL CCM CCPR CCQM CCRI CCT CCTF
6
- CCU CCL-CCT JCGM JCRB JCTLM INetQI].freeze
7
-
8
5
  # @return [Array<String>]
9
6
  attr_reader :committee, :workgroup
10
7
 
11
- # @param committee [Array<String>]
12
- # @param workgroup [Array<String>]
13
- def initialize(committee:, workgroup:)
14
- committee.each do |c|
15
- unless COMMITTEES.include? c
16
- warn "[relaton-bipm] invalid committee: #{c}"
17
- end
18
- end
19
-
8
+ # @param committee [Array<RelatonBipm::Committee>]
9
+ # @param workgroup [Array<RelatonBipm::WorkGroup>]
10
+ def initialize(committee:, workgroup: [])
20
11
  @committee = committee
21
12
  @workgroup = workgroup
22
13
  end
@@ -24,19 +15,19 @@ module RelatonBipm
24
15
  # @param builder [Nokogiri::XML::Builder]
25
16
  def to_xml(builder)
26
17
  builder.editorialgroup do |b|
27
- committee.each { |c| b.committee c }
28
- workgroup.each { |c| b.workgroup c }
18
+ committee.each { |c| c.to_xml b }
19
+ workgroup.each { |c| c.to_xml b }
29
20
  end
30
21
  end
31
22
 
32
23
  # @param prefix [String]
33
24
  # @return [String]
34
- def to_asciibib(prefix = "")
25
+ def to_asciibib(prefix = "") # rubocop:disable Metrics/AbcSize
35
26
  pref = prefix.empty? ? prefix : prefix + "."
36
27
  pref += "editorialgroup"
37
28
  out = ""
38
- committee.each { |c| out += "#{pref}.committee:: #{c}\n" }
39
- workgroup.each { |w| out += "#{pref}.workgroup:: #{w}\n" }
29
+ committee.each { |c| out += c.to_asciibib pref, committee.size }
30
+ workgroup.each { |w| out += w.to_asciibib pref, workgroup.size }
40
31
  out
41
32
  end
42
33
 
@@ -2,6 +2,8 @@ require "yaml"
2
2
 
3
3
  module RelatonBipm
4
4
  class HashConverter < RelatonBib::HashConverter
5
+ @@acronyms = nil
6
+
5
7
  class << self
6
8
  # @override RelatonIsoBib::HashConverter.hash_to_bib
7
9
  # @param args [Hash]
@@ -67,8 +69,32 @@ module RelatonBipm
67
69
  end
68
70
 
69
71
  # @param ret [Hash]
70
- def editorialgroup_hash_to_bib(ret)
71
- ret[:editorialgroup] &&= EditorialGroup.new ret[:editorialgroup]
72
+ def editorialgroup_hash_to_bib(ret) # rubocop:disable Metrics/AbcSize
73
+ return unless ret[:editorialgroup]
74
+
75
+ cmt = ret[:editorialgroup][:committee].map do |c|
76
+ if (vars = committee_variants c).any?
77
+ content = RelatonBib::LocalizedString.new vars
78
+ Committee.new acronym: c[:acronym], content: content
79
+ else
80
+ Committee.new c
81
+ end
82
+ end
83
+ wg = array(ret[:editorialgroup][:workgroup]).map do |w|
84
+ w.is_a?(Hash) ? WorkGroup.new(w) : WorkGroup.new(content: w)
85
+ end
86
+ ret[:editorialgroup] = EditorialGroup.new committee: cmt, workgroup: wg
87
+ end
88
+
89
+ def committee_variants(cmt)
90
+ array(cmt[:variants]).each_with_object([]) do |v, a|
91
+ c = v[:content] || (ac = acronyms[cmt[:acronym]]) && ac[v[:language]]
92
+ a << RelatonBib::LocalizedString.new(c, v[:language], v[:script]) if c
93
+ end
94
+ end
95
+
96
+ def acronyms
97
+ @@acronyms ||= YAML.load_file File.join __dir__, "acronyms.yaml"
72
98
  end
73
99
 
74
100
  # @param ret [Hash]
@@ -1,3 +1,3 @@
1
1
  module RelatonBipm
2
- VERSION = "1.6.1".freeze
2
+ VERSION = "1.7.0".freeze
3
3
  end
@@ -0,0 +1,46 @@
1
+ module RelatonBipm
2
+ class WorkGroup
3
+ # @return [String]
4
+ attr_reader :content
5
+
6
+ # @return [String, nil]
7
+ attr_reader :acronym
8
+
9
+ # @param content [String]
10
+ # @param acronym [String, nil]
11
+ def initialize(content:, acronym: nil)
12
+ @content = content
13
+ @acronym = acronym
14
+ end
15
+
16
+ # @param builder [Nokogiri::XML::Builder]
17
+ def to_xml(builder)
18
+ xml = builder.workgroup content
19
+ xml[:acronym] = acronym if acronym
20
+ end
21
+
22
+ # @param prefix [String]
23
+ # @param count [Integer]
24
+ # @return [String]
25
+ def to_asciibib(prefix, count = 1)
26
+ pref = prefix.empty? ? prefix : prefix + "."
27
+ pref += "workgroup"
28
+ if acronym
29
+ out = count > 1 ? "#{pref}::\n" : ""
30
+ out += "#{pref}.acronym:: #{acronym}\n"
31
+ out + "#{pref}.content:: #{content}\n"
32
+ else "#{pref}:: #{content}\n"
33
+ end
34
+ end
35
+
36
+ # @return [Hash, String]
37
+ def to_hash
38
+ if acronym
39
+ hash = { "content" => content }
40
+ hash["acronym"] = acronym
41
+ hash
42
+ else content
43
+ end
44
+ end
45
+ end
46
+ end
@@ -13,6 +13,7 @@ module RelatonBipm
13
13
 
14
14
  data[:comment_period] = fetch_commentperiond ext
15
15
  data[:si_aspect] = ext.at("si-aspect")&.text
16
+ data[:meeting_note] = ext.at("meeting-note")&.text
16
17
  data
17
18
  end
18
19
 
@@ -63,21 +64,41 @@ module RelatonBipm
63
64
 
64
65
  # @param ext [Nokogiri::XML::Element]
65
66
  # @return [RelatonBipm::EditorialGroup, nil]
66
- def fetch_editorialgroup(ext)
67
+ def fetch_editorialgroup(ext) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
67
68
  return unless ext && (eg = ext.at "editorialgroup")
68
69
 
69
- cm = eg.xpath("committee").map &:text
70
- wg = eg.xpath("workgroup").map &:text
70
+ cm = eg.xpath("committee").map do |c|
71
+ vars = variants c
72
+ cnt = if vars.any?
73
+ RelatonBib::LocalizedString.new vars
74
+ else
75
+ RelatonBib::LocalizedString.new c.text, c[:language], c[:script]
76
+ end
77
+ Committee.new acronym: c[:acronym], content: cnt
78
+ end
79
+ wg = eg.xpath("workgroup").map do |w|
80
+ WorkGroup.new content: w.text, acronym: w[:acronym]
81
+ end
71
82
  EditorialGroup.new committee: cm, workgroup: wg
72
83
  end
73
84
 
85
+ # @TODO remove this method before next (1.7.0) relaton release
86
+ # it's in the relaton-bib but hasn't released yet
87
+ # @param title [Nokogiri::XML::Element]
88
+ # @return [Array<RelatonBib::LocalizedString>]
89
+ def variants(elm)
90
+ elm.xpath("variant").map do |v|
91
+ RelatonBib::LocalizedString.new v.text, v[:language], v[:script]
92
+ end
93
+ end
94
+
74
95
  # @param ext [Nokogiri::XML::Element]
75
96
  # @return [RelatonBipm::StructuredIdentifier]
76
97
  def fetch_structuredidentifier(ext)
77
98
  return unless ext && (sid = ext.at("structuredidentifier"))
78
99
 
79
100
  StructuredIdentifier.new(
80
- docnumber: sid.at("docnumber").text, part: sid.at("part")&.text,
101
+ docnumber: sid.at("docnumber")&.text, part: sid.at("part")&.text,
81
102
  appendix: sid.at("appendix")&.text
82
103
  )
83
104
  end
@@ -43,5 +43,5 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
43
43
  spec.add_development_dependency "vcr"
44
44
  spec.add_development_dependency "webmock"
45
45
 
46
- spec.add_dependency "relaton-bib", "~> 1.6.0"
46
+ spec.add_dependency "relaton-bib", "~> 1.7.0"
47
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-bipm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-16 00:00:00.000000000 Z
11
+ date: 2020-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.6.0
159
+ version: 1.7.0
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.6.0
166
+ version: 1.7.0
167
167
  description: 'RelatonBipm: retrieve BIPM Standards for bibliographic use using the
168
168
  BibliographicItem model'
169
169
  email:
@@ -191,16 +191,19 @@ files:
191
191
  - grammars/isodoc.rng
192
192
  - grammars/reqt.rng
193
193
  - lib/relaton_bipm.rb
194
+ - lib/relaton_bipm/acronyms.yaml
194
195
  - lib/relaton_bipm/bibliographic_date.rb
195
196
  - lib/relaton_bipm/bipm_bibliographic_item.rb
196
197
  - lib/relaton_bipm/bipm_bibliography.rb
197
198
  - lib/relaton_bipm/comment_periond.rb
199
+ - lib/relaton_bipm/committee.rb
198
200
  - lib/relaton_bipm/document_relation.rb
199
201
  - lib/relaton_bipm/editorial_group.rb
200
202
  - lib/relaton_bipm/hash_converter.rb
201
203
  - lib/relaton_bipm/processor.rb
202
204
  - lib/relaton_bipm/structured_identifier.rb
203
205
  - lib/relaton_bipm/version.rb
206
+ - lib/relaton_bipm/workgroup.rb
204
207
  - lib/relaton_bipm/xml_parser.rb
205
208
  - relaton_bipm.gemspec
206
209
  homepage: https://github.com/relaton/relaton-bipm