relaton-3gpp 2.0.0.pre.alpha.3 → 2.0.0.pre.alpha.4
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/README.adoc +1 -1
- data/grammars/basicdoc.rng +14 -1
- data/grammars/biblio.rng +8 -8
- data/grammars/relaton-3gpp.rng +14 -24
- data/lib/relaton/3gpp/data_fetcher.rb +8 -3
- data/lib/relaton/3gpp/parser.rb +121 -33
- data/lib/relaton/3gpp/version.rb +1 -1
- data/relaton_3gpp.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 36aaf69cf6ab6c4b1e3aac54b311a3ef3ef2d373eaf5817a8ce6217036b7c819
|
|
4
|
+
data.tar.gz: 98589496e8b8d507208fbf37c2c43ea56f038b0987aed437e54b2291fc82eec5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 61237ceb9c0539b8d7bd770b656e051a33d8c8738ca90557f63c1b26f6d23511c14d1687d2b13b6e19f70465e1917fb324dc39fce8312d85474f1e432bfd6e3c
|
|
7
|
+
data.tar.gz: 403bbe3698c30452bb4a8d5cfe2478e6d6227e6c39de4bd560e426546a83ae405be8f7ea75b5df53ce49ce1a10f7825044468cc7a6e3eee8ed10cb0dc5a92092
|
data/README.adoc
CHANGED
|
@@ -64,7 +64,7 @@ item.to_xml bibdata: true
|
|
|
64
64
|
<docidentifier type="3GPP" primary="true">3GPP TR 00.01U:UMTS/3.0.0</docidentifier>
|
|
65
65
|
<docnumber>TR 00.01U:UMTS/3.0.0</docnumber>
|
|
66
66
|
...
|
|
67
|
-
<ext schema-version="v1.0.
|
|
67
|
+
<ext schema-version="v1.0.4">
|
|
68
68
|
<doctype>TR</doctype>
|
|
69
69
|
<editorialgroup>
|
|
70
70
|
<technical-committee type="prime">SMG5</technical-committee>
|
data/grammars/basicdoc.rng
CHANGED
|
@@ -187,6 +187,15 @@ Applicable to modify and delete</a:documentation>
|
|
|
187
187
|
<a:documentation>Optional caption of this block</a:documentation>
|
|
188
188
|
</attribute>
|
|
189
189
|
</optional>
|
|
190
|
+
<optional>
|
|
191
|
+
<attribute name="position">
|
|
192
|
+
<a:documentation>For an "add" change, whether the change is added before or after the location</a:documentation>
|
|
193
|
+
<choice>
|
|
194
|
+
<value>before</value>
|
|
195
|
+
<value>after</value>
|
|
196
|
+
</choice>
|
|
197
|
+
</attribute>
|
|
198
|
+
</optional>
|
|
190
199
|
<optional>
|
|
191
200
|
<element name="location">
|
|
192
201
|
<a:documentation>The location(s) in the original document which have undergone the change described in this block</a:documentation>
|
|
@@ -208,11 +217,15 @@ Applicable to modify and delete</a:documentation>
|
|
|
208
217
|
</zeroOrMore>
|
|
209
218
|
<optional>
|
|
210
219
|
<element name="newcontent">
|
|
211
|
-
<a:documentation>New content to be added to the document; applicable to add and modify
|
|
220
|
+
<a:documentation>New content to be added to the document; applicable to add and modify.
|
|
221
|
+
Can be blocks and/or sections</a:documentation>
|
|
212
222
|
<ref name="OptionalId"/>
|
|
213
223
|
<zeroOrMore>
|
|
214
224
|
<ref name="BasicBlock"/>
|
|
215
225
|
</zeroOrMore>
|
|
226
|
+
<zeroOrMore>
|
|
227
|
+
<ref name="section"/>
|
|
228
|
+
</zeroOrMore>
|
|
216
229
|
</element>
|
|
217
230
|
</optional>
|
|
218
231
|
<zeroOrMore>
|
data/grammars/biblio.rng
CHANGED
|
@@ -1142,11 +1142,11 @@ NOTE: This should preferably be encoded as a URI or short identifier, rather th
|
|
|
1142
1142
|
<a:documentation>Information about how long the current description of the bibliographic item is valid for</a:documentation>
|
|
1143
1143
|
</ref>
|
|
1144
1144
|
</optional>
|
|
1145
|
-
<
|
|
1145
|
+
<zeroOrMore>
|
|
1146
1146
|
<ref name="depiction">
|
|
1147
1147
|
<a:documentation>Depiction of the bibliographic item, typically an image</a:documentation>
|
|
1148
1148
|
</ref>
|
|
1149
|
-
</
|
|
1149
|
+
</zeroOrMore>
|
|
1150
1150
|
</define>
|
|
1151
1151
|
<define name="ReducedBibliographicItem">
|
|
1152
1152
|
<a:documentation>Reduced description of a bibliographic resource, without mandatory title and docidentifier, used for document relations
|
|
@@ -1939,10 +1939,10 @@ Detailed in https://www.relaton.org/model/relations/</a:documentation>
|
|
|
1939
1939
|
<value>hasAnnotation</value>
|
|
1940
1940
|
<value>draftOf</value>
|
|
1941
1941
|
<value>hasDraft</value>
|
|
1942
|
-
<value>
|
|
1943
|
-
<value>
|
|
1944
|
-
<value>
|
|
1945
|
-
<value>
|
|
1942
|
+
<value>predecessorDraftOf</value>
|
|
1943
|
+
<value>hasPredecessorDraft</value>
|
|
1944
|
+
<value>successorDraftOf</value>
|
|
1945
|
+
<value>hasSuccessorDraft</value>
|
|
1946
1946
|
<value>editionOf</value>
|
|
1947
1947
|
<value>hasEdition</value>
|
|
1948
1948
|
<value>updates</value>
|
|
@@ -2063,13 +2063,13 @@ provided that it is not the entire bibliographic item that is so related</a:docu
|
|
|
2063
2063
|
<ref name="LocalizedString"/>
|
|
2064
2064
|
</element>
|
|
2065
2065
|
</optional>
|
|
2066
|
-
<
|
|
2066
|
+
<zeroOrMore>
|
|
2067
2067
|
<element name="taxon">
|
|
2068
2068
|
<a:documentation>The keywords as a hierarchical taxonomy. For example, the sequence of `taxon` elements
|
|
2069
2069
|
`pump`, `centrifugal pump`, `line shaft pump` represents a taxonomic classification</a:documentation>
|
|
2070
2070
|
<ref name="LocalizedString"/>
|
|
2071
2071
|
</element>
|
|
2072
|
-
</
|
|
2072
|
+
</zeroOrMore>
|
|
2073
2073
|
<zeroOrMore>
|
|
2074
2074
|
<ref name="vocabid">
|
|
2075
2075
|
<a:documentation>Identifiers for the keyword as a controlled vocabulary</a:documentation>
|
data/grammars/relaton-3gpp.rng
CHANGED
|
@@ -13,31 +13,21 @@
|
|
|
13
13
|
<value>release</value>
|
|
14
14
|
</choice>
|
|
15
15
|
</define>
|
|
16
|
-
<define name="BibDataExtensionType">
|
|
17
|
-
<optional>
|
|
18
|
-
<attribute name="schema-version"/>
|
|
19
|
-
</optional>
|
|
20
|
-
<ref name="doctype"/>
|
|
21
|
-
<optional>
|
|
22
|
-
<ref name="docsubtype"/>
|
|
23
|
-
</optional>
|
|
24
|
-
<zeroOrMore>
|
|
25
|
-
<ref name="ics"/>
|
|
26
|
-
</zeroOrMore>
|
|
27
|
-
<optional>
|
|
28
|
-
<ref name="radiotechnology"/>
|
|
29
|
-
</optional>
|
|
30
|
-
<optional>
|
|
31
|
-
<ref name="common-ims-spec"/>
|
|
32
|
-
</optional>
|
|
33
|
-
<optional>
|
|
34
|
-
<ref name="internal"/>
|
|
35
|
-
</optional>
|
|
36
|
-
<optional>
|
|
37
|
-
<ref name="release"/>
|
|
38
|
-
</optional>
|
|
39
|
-
</define>
|
|
40
16
|
</include>
|
|
17
|
+
<define name="BibDataExtensionType" combine="interleave">
|
|
18
|
+
<optional>
|
|
19
|
+
<ref name="radiotechnology"/>
|
|
20
|
+
</optional>
|
|
21
|
+
<optional>
|
|
22
|
+
<ref name="common-ims-spec"/>
|
|
23
|
+
</optional>
|
|
24
|
+
<optional>
|
|
25
|
+
<ref name="internal"/>
|
|
26
|
+
</optional>
|
|
27
|
+
<optional>
|
|
28
|
+
<ref name="release"/>
|
|
29
|
+
</optional>
|
|
30
|
+
</define>
|
|
41
31
|
<define name="RadioTechnologyType">
|
|
42
32
|
<choice>
|
|
43
33
|
<value>2G</value>
|
|
@@ -8,6 +8,10 @@ module Relaton
|
|
|
8
8
|
class DataFetcher < Core::DataFetcher
|
|
9
9
|
CURRENT = "current.yaml".freeze
|
|
10
10
|
|
|
11
|
+
def log_error(msg)
|
|
12
|
+
Util.error msg
|
|
13
|
+
end
|
|
14
|
+
|
|
11
15
|
def index
|
|
12
16
|
@index ||= Relaton::Index.find_or_create "3gpp", file: "#{INDEXFILE}.yaml"
|
|
13
17
|
end
|
|
@@ -27,10 +31,11 @@ module Relaton
|
|
|
27
31
|
index.remove_all # if renewal
|
|
28
32
|
end
|
|
29
33
|
CSV.open(file, "r:bom|utf-8", headers: true).each do |row|
|
|
30
|
-
save_doc Parser.parse(row)
|
|
34
|
+
save_doc Parser.parse(row, @errors)
|
|
31
35
|
end
|
|
32
36
|
File.write CURRENT, @current.to_yaml, encoding: "UTF-8"
|
|
33
37
|
index.save
|
|
38
|
+
report_errors
|
|
34
39
|
end
|
|
35
40
|
|
|
36
41
|
#
|
|
@@ -45,7 +50,7 @@ module Relaton
|
|
|
45
50
|
@current ||= {}
|
|
46
51
|
n = 0
|
|
47
52
|
begin
|
|
48
|
-
ftp = Net::FTP.new("www.3gpp.org")
|
|
53
|
+
ftp = Net::FTP.new("www.3gpp.org", open_timeout: 30)
|
|
49
54
|
ftp.resume = true
|
|
50
55
|
ftp.login
|
|
51
56
|
ftp.chdir "/Information/Databases/"
|
|
@@ -60,7 +65,7 @@ module Relaton
|
|
|
60
65
|
|
|
61
66
|
tmp_file = File.join Dir.tmpdir, "3gpp.csv"
|
|
62
67
|
ftp.get(file, tmp_file)
|
|
63
|
-
rescue Net::ReadTimeout => e
|
|
68
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
|
64
69
|
n += 1
|
|
65
70
|
retry if n < 5
|
|
66
71
|
raise e
|
data/lib/relaton/3gpp/parser.rb
CHANGED
|
@@ -10,19 +10,21 @@ module Relaton
|
|
|
10
10
|
#
|
|
11
11
|
# @param [CSV::Row] row CSV row
|
|
12
12
|
#
|
|
13
|
-
def initialize(row)
|
|
13
|
+
def initialize(row, errors)
|
|
14
14
|
@row = row
|
|
15
|
+
@errors = errors
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
#
|
|
18
19
|
# Initialize document parser and run it
|
|
19
20
|
#
|
|
20
21
|
# @param [CSV:Row] row CSV row
|
|
22
|
+
# @param [Hash] errors collection of parsing errors
|
|
21
23
|
#
|
|
22
24
|
# @return [RelatonBib:BibliographicItem, nil] bibliographic item
|
|
23
25
|
#
|
|
24
|
-
def self.parse(row)
|
|
25
|
-
new(row).parse
|
|
26
|
+
def self.parse(row, errors = {})
|
|
27
|
+
new(row, errors).parse
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
#
|
|
@@ -58,8 +60,8 @@ module Relaton
|
|
|
58
60
|
# @return [RelatonBib::TypedTitleStringCollection] title
|
|
59
61
|
#
|
|
60
62
|
def parse_title
|
|
63
|
+
@errors[:title] &&= @row["Title"].nil? || @row["Title"].empty?
|
|
61
64
|
[Bib::Title.new(content: @row["Title"], type: "main")]
|
|
62
|
-
# RelatonBib::TypedTitleStringCollection.new [t]
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
#
|
|
@@ -68,6 +70,7 @@ module Relaton
|
|
|
68
70
|
# @return [Array<RelatonBib::TypedUri>] link
|
|
69
71
|
#
|
|
70
72
|
def parse_source
|
|
73
|
+
@errors[:source] &&= @row["Link"].nil? || @row["Link"].empty?
|
|
71
74
|
return [] unless @row["Link"]
|
|
72
75
|
|
|
73
76
|
[Bib::Uri.new(type: "src", content: @row["Link"])]
|
|
@@ -90,6 +93,7 @@ module Relaton
|
|
|
90
93
|
# @return [Arra<RelatonBib::DocumentIdentifier>] docidentifier
|
|
91
94
|
#
|
|
92
95
|
def parse_docid
|
|
96
|
+
@errors[:docid] &&= @row[0].nil? || @row[0].empty?
|
|
93
97
|
[Bib::Docidentifier.new(type: "3GPP", content: "3GPP #{number}", primary: true)]
|
|
94
98
|
end
|
|
95
99
|
|
|
@@ -109,6 +113,7 @@ module Relaton
|
|
|
109
113
|
end
|
|
110
114
|
|
|
111
115
|
def parse_version
|
|
116
|
+
@errors[:version] &&= version.nil? || version.empty?
|
|
112
117
|
[Bib::Version.new(draft: version)]
|
|
113
118
|
end
|
|
114
119
|
|
|
@@ -117,11 +122,15 @@ module Relaton
|
|
|
117
122
|
end
|
|
118
123
|
|
|
119
124
|
def release
|
|
120
|
-
@release ||=
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
@release ||= begin
|
|
126
|
+
r = case @row["WPM Code 2G"]
|
|
127
|
+
when /Release_(\d+)/ then "REL-#{$1}"
|
|
128
|
+
when /PH(\d+)/ then "Ph#{$1}"
|
|
129
|
+
else @row["Release"]
|
|
130
|
+
end
|
|
131
|
+
@errors[:release] &&= r.nil? || r.empty?
|
|
132
|
+
r
|
|
133
|
+
end
|
|
125
134
|
end
|
|
126
135
|
|
|
127
136
|
#
|
|
@@ -144,6 +153,7 @@ module Relaton
|
|
|
144
153
|
on = Date.parse(@row["Date"]).to_s
|
|
145
154
|
dates << Bib::Date.new(type: "published", at: on)
|
|
146
155
|
end
|
|
156
|
+
@errors[:date] &&= dates.empty?
|
|
147
157
|
dates
|
|
148
158
|
end
|
|
149
159
|
|
|
@@ -190,19 +200,29 @@ module Relaton
|
|
|
190
200
|
role = Bib::Contributor::Role.new type: "author"
|
|
191
201
|
contribs << Bib::Contributor.new(person: person, role: [role])
|
|
192
202
|
end
|
|
193
|
-
|
|
203
|
+
@errors[:contributor] &&= contribs.empty?
|
|
204
|
+
contribs + prime_contribs + other_contribs
|
|
194
205
|
end
|
|
195
206
|
|
|
196
|
-
def
|
|
197
|
-
contribs = []
|
|
198
|
-
|
|
199
|
-
contribs << editorial_group_contributor(prime, "prime") unless prime.nil? || prime.empty?
|
|
200
|
-
@row["Responsible Secondary"].strip.split(", ").each do |wg|
|
|
201
|
-
contribs << editorial_group_contributor(wg, "other")
|
|
207
|
+
def other_contribs
|
|
208
|
+
contribs = @row["Responsible Secondary"].strip.split(", ").map do |wg|
|
|
209
|
+
editorial_group_contributor(wg, "other")
|
|
202
210
|
end
|
|
211
|
+
@errors[:editorial_group_contributor_other] &&= contribs.empty?
|
|
203
212
|
contribs
|
|
204
213
|
end
|
|
205
214
|
|
|
215
|
+
def prime_contribs
|
|
216
|
+
prime = @row["Responsible Primary"]
|
|
217
|
+
if prime.nil? || prime.empty?
|
|
218
|
+
@errors[:editorial_group_contributor_prime] &&= true
|
|
219
|
+
return []
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
@errors[:editorial_group_contributor_prime] &&= false
|
|
223
|
+
[editorial_group_contributor(prime, "prime")]
|
|
224
|
+
end
|
|
225
|
+
|
|
206
226
|
def editorial_group_contributor(wg_name, wg_type)
|
|
207
227
|
Bib::Contributor.new(
|
|
208
228
|
role: [Bib::Contributor::Role.new(
|
|
@@ -231,15 +251,37 @@ module Relaton
|
|
|
231
251
|
end
|
|
232
252
|
|
|
233
253
|
def person
|
|
234
|
-
surname = Bib::LocalizedString.new content: @row["Last Name"], language: "en", script: "Latn"
|
|
235
|
-
forename = Bib::FullNameType::Forename.new content: @row["First Name"], language: "en", script: "Latn"
|
|
236
254
|
name = Bib::FullName.new(surname: surname, forename: [forename])
|
|
237
255
|
Bib::Person.new(name: name, affiliation: affiliation)
|
|
238
256
|
end
|
|
239
257
|
|
|
258
|
+
def surname
|
|
259
|
+
if @row["Last Name"].nil? || @row["Last Name"].empty?
|
|
260
|
+
@errors[:contributor_person_surname] &&= true
|
|
261
|
+
return nil
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
@errors[:contributor_person_surname] &&= false
|
|
265
|
+
Bib::LocalizedString.new content: @row["Last Name"], language: "en", script: "Latn"
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def forename
|
|
269
|
+
if @row["First Name"].nil? || @row["First Name"].empty?
|
|
270
|
+
@errors[:contributor_person_forename] &&= true
|
|
271
|
+
return nil
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
@errors[:contributor_person_forename] &&= false
|
|
275
|
+
Bib::FullNameType::Forename.new content: @row["First Name"], language: "en", script: "Latn"
|
|
276
|
+
end
|
|
277
|
+
|
|
240
278
|
def affiliation
|
|
241
|
-
|
|
279
|
+
if @row["Organisation"].nil? || @row["Organisation"].empty?
|
|
280
|
+
@errors[:contributor_person_affiliation] &&= true
|
|
281
|
+
return []
|
|
282
|
+
end
|
|
242
283
|
|
|
284
|
+
@errors[:contributor_person_affiliation] &&= false
|
|
243
285
|
name = Bib::TypedLocalizedString.new(content: @row["Organisation"])
|
|
244
286
|
org = Bib::Organization.new(name: [name])
|
|
245
287
|
[Bib::Affiliation.new(organization: org)]
|
|
@@ -252,6 +294,7 @@ module Relaton
|
|
|
252
294
|
def parse_ext
|
|
253
295
|
Ext.new(
|
|
254
296
|
doctype: parse_doctype,
|
|
297
|
+
flavor: "3gpp",
|
|
255
298
|
radiotechnology: parse_radiotechnology,
|
|
256
299
|
release: parse_release,
|
|
257
300
|
)
|
|
@@ -269,12 +312,14 @@ module Relaton
|
|
|
269
312
|
# @return [String] radio technology
|
|
270
313
|
#
|
|
271
314
|
def parse_radiotechnology
|
|
272
|
-
case @row["WPM Code 3G"]
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
315
|
+
result = case @row["WPM Code 3G"]
|
|
316
|
+
when /5G/ then "5G"
|
|
317
|
+
when /4G/ then "LTE"
|
|
318
|
+
when /3G/ then "3G"
|
|
319
|
+
else @row["WPM Code 2G"] && "2G"
|
|
320
|
+
end
|
|
321
|
+
@errors[:radiotechnology] &&= result.nil?
|
|
322
|
+
result
|
|
278
323
|
end
|
|
279
324
|
|
|
280
325
|
#
|
|
@@ -283,23 +328,66 @@ module Relaton
|
|
|
283
328
|
# @return [Relaton3gpp::Release, nil] release
|
|
284
329
|
#
|
|
285
330
|
def parse_release # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
286
|
-
|
|
287
|
-
|
|
331
|
+
unless wmp_code2g || wmp_code3g || stage1_freeze || stage2_freeze ||
|
|
332
|
+
stage3_freeze || close_meeting || project_start || project_end
|
|
333
|
+
return
|
|
334
|
+
end
|
|
335
|
+
|
|
288
336
|
Release.new(
|
|
289
337
|
# version2g: @rel[:version_2g],
|
|
290
338
|
# version3g: @rel[:version_3g],
|
|
291
339
|
# defunct: @rel[:defunct] == "1",
|
|
292
|
-
wpm_code_2g:
|
|
293
|
-
wpm_code_3g:
|
|
340
|
+
wpm_code_2g: wmp_code2g,
|
|
341
|
+
wpm_code_3g: wmp_code3g,
|
|
294
342
|
# freeze_meeting: @rel[:"freeze meeting"],
|
|
295
|
-
freeze_stage1_meeting:
|
|
296
|
-
freeze_stage2_meeting:
|
|
297
|
-
freeze_stage3_meeting:
|
|
298
|
-
close_meeting:
|
|
343
|
+
freeze_stage1_meeting: stage1_freeze,
|
|
344
|
+
freeze_stage2_meeting: stage2_freeze,
|
|
345
|
+
freeze_stage3_meeting: stage3_freeze,
|
|
346
|
+
close_meeting: close_meeting,
|
|
299
347
|
project_start: project_start,
|
|
300
348
|
project_end: project_end,
|
|
301
349
|
)
|
|
302
350
|
end
|
|
351
|
+
|
|
352
|
+
def wmp_code2g
|
|
353
|
+
@errors[:wmp_code_2g] &&= @row["WPM Code 2G"].nil? || @row["WPM Code 2G"].empty?
|
|
354
|
+
@row["WPM Code 2G"]
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def wmp_code3g
|
|
358
|
+
@errors[:wmp_code_3g] &&= @row["WPM Code 3G"].nil? || @row["WPM Code 3G"].empty?
|
|
359
|
+
@row["WPM Code 3G"]
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
def stage1_freeze
|
|
363
|
+
@errors[:freeze_stage1_meeting] &&= @row["Stage 1 Freeze"].nil? || @row["Stage 1 Freeze"].empty?
|
|
364
|
+
@row["Stage 1 Freeze"]
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def stage2_freeze
|
|
368
|
+
@errors[:freeze_stage2_meeting] &&= @row["Stage 2 Freeze"].nil? || @row["Stage 2 Freeze"].empty?
|
|
369
|
+
@row["Stage 2 Freeze"]
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def stage3_freeze
|
|
373
|
+
@errors[:freeze_stage3_meeting] &&= @row["Stage 3 Freeze"].nil? || @row["Stage 3 Freeze"].empty?
|
|
374
|
+
@row["Stage 3 Freeze"]
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
def close_meeting
|
|
378
|
+
@errors[:close_meeting] &&= @row["Close Meeting"].nil? || @row["Close Meeting"].empty?
|
|
379
|
+
@row["Close Meeting"]
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
def project_start
|
|
383
|
+
@errors[:project_start] &&= @row["Project Start"].nil? || @row["Project Start"].empty?
|
|
384
|
+
Date.parse(@row["Project Start"]) if @row["Project Start"]
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
def project_end
|
|
388
|
+
@errors[:project_end] &&= @row["Project End"].nil? || @row["Project End"].empty?
|
|
389
|
+
Date.parse(@row["Project End"]) if @row["Project End"]
|
|
390
|
+
end
|
|
303
391
|
end
|
|
304
392
|
end
|
|
305
393
|
end
|
data/lib/relaton/3gpp/version.rb
CHANGED
data/relaton_3gpp.gemspec
CHANGED
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
|
38
38
|
|
|
39
39
|
spec.add_dependency "csv"
|
|
40
40
|
spec.add_dependency "net-ftp", "~> 0.1.0"
|
|
41
|
-
spec.add_dependency "relaton-bib", "~> 2.0.0-alpha.
|
|
42
|
-
spec.add_dependency "relaton-core", "~> 0.0.
|
|
41
|
+
spec.add_dependency "relaton-bib", "~> 2.0.0-alpha.7"
|
|
42
|
+
spec.add_dependency "relaton-core", "~> 0.0.12"
|
|
43
43
|
spec.add_dependency "relaton-index", "~> 0.2.0"
|
|
44
44
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-3gpp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.0.pre.alpha.
|
|
4
|
+
version: 2.0.0.pre.alpha.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -43,28 +43,28 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 2.0.0.pre.alpha.
|
|
46
|
+
version: 2.0.0.pre.alpha.7
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 2.0.0.pre.alpha.
|
|
53
|
+
version: 2.0.0.pre.alpha.7
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: relaton-core
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.0.
|
|
60
|
+
version: 0.0.12
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 0.0.
|
|
67
|
+
version: 0.0.12
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: relaton-index
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|