relaton-3gpp 1.9.0 → 1.9.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/.gitignore +1 -0
- data/lib/relaton_3gpp/data_fetcher.rb +24 -13
- data/lib/relaton_3gpp/parser.rb +54 -41
- data/lib/relaton_3gpp/release.rb +1 -1
- data/lib/relaton_3gpp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac55b70bfe3aeba203ee14ae5741da783295480690d95cbcde5633464d7e2c6f
|
4
|
+
data.tar.gz: a1e1b8cdef4a740ef07311f180e2be6ee31419696acf14031b53418364ef9325
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5c76b9d2ea3aeb99cac24f01ebb5759e66c9f094d81fe8d776db9c37250535b20b54abf754da38ab865571019fafc4b6f2d9a5a223a2763d4ce8ec680509233
|
7
|
+
data.tar.gz: d66f5472441b417a1491211b9ebb00112f0b3408ba3edd6c1d7fdc1fe9d20305b6d17e8b5e89990c5953994856889b14f9fbea85b4bf4897ba809c9243a1fe5a
|
data/.gitignore
CHANGED
@@ -52,8 +52,9 @@ module Relaton3gpp
|
|
52
52
|
specs = dbs["Specs_GSM+3G"]
|
53
53
|
specrels = dbs["Specs_GSM+3G_release-info"]
|
54
54
|
releases = dbs["Releases"]
|
55
|
+
tstatus = dbs["temp-status"]
|
55
56
|
dbs["2001-04-25_schedule"].each do |row|
|
56
|
-
fetch_doc row, specs, specrels, releases
|
57
|
+
fetch_doc row, specs, specrels, releases, tstatus
|
57
58
|
end
|
58
59
|
File.write CURRENT, @current.to_yaml, encoding: "UTF-8"
|
59
60
|
end
|
@@ -63,18 +64,25 @@ module Relaton3gpp
|
|
63
64
|
#
|
64
65
|
# @return [String] file name
|
65
66
|
#
|
66
|
-
def get_file # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
67
|
+
def get_file # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
|
67
68
|
@current = YAML.load_file CURRENT if File.exist? CURRENT
|
68
69
|
@current ||= {}
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
n = 0
|
71
|
+
begin
|
72
|
+
ftp = Net::FTP.new("www.3gpp.org")
|
73
|
+
ftp.resume = true
|
74
|
+
ftp.login
|
75
|
+
ftp.chdir "/Information/Databases/Spec_Status/"
|
76
|
+
d, t, _, file = ftp.list("*.zip").first.split
|
77
|
+
dt = DateTime.strptime("#{d} #{t}", "%m-%d-%y %I:%M%p")
|
78
|
+
return if file == @current["file"] && dt == DateTime.parse(@current["date"])
|
76
79
|
|
77
|
-
|
80
|
+
ftp.getbinaryfile file
|
81
|
+
rescue Net::ReadTimeout => e
|
82
|
+
n += 1
|
83
|
+
retry if n < 5
|
84
|
+
raise e
|
85
|
+
end
|
78
86
|
@current["file"] = file
|
79
87
|
@current["date"] = dt.to_s
|
80
88
|
file
|
@@ -84,12 +92,15 @@ module Relaton3gpp
|
|
84
92
|
# Fetch document
|
85
93
|
#
|
86
94
|
# @param [Hash] row row from mdb
|
87
|
-
# @param [
|
95
|
+
# @param [Array<Hash>] specs specs
|
96
|
+
# @param [Array<Hash>] specrels specrels
|
97
|
+
# @param [Array<Hash>] releases releases
|
98
|
+
# @param [Array<Hash>] tstatus tstatus
|
88
99
|
#
|
89
100
|
# @return [Relaton3gpp::BibliographicItem, nil] bibliographic item
|
90
101
|
#
|
91
|
-
def fetch_doc(row, specs, specrels, releases)
|
92
|
-
doc = Parser.parse row, specs, specrels, releases
|
102
|
+
def fetch_doc(row, specs, specrels, releases, tstatus)
|
103
|
+
doc = Parser.parse row, specs, specrels, releases, tstatus
|
93
104
|
save_doc doc
|
94
105
|
rescue StandardError => e
|
95
106
|
warn "Error: #{e.message}"
|
data/lib/relaton_3gpp/parser.rb
CHANGED
@@ -7,8 +7,9 @@ module Relaton3gpp
|
|
7
7
|
# @param [Array<Hash>] specrels Spec + Release table
|
8
8
|
# @param [Array<Hash>] relaeases Releases table
|
9
9
|
# @param [Array<Hash>] specs Specs table
|
10
|
+
# @param [Array<Hash>] tstatus temp status-table
|
10
11
|
#
|
11
|
-
def initialize(row, specs, specrels, releases) # rubocop:disable Metrics/AbcSize
|
12
|
+
def initialize(row, specs, specrels, releases, tstatus) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
12
13
|
@row = row
|
13
14
|
@spec = specs.detect { |s| s[:Number] == row[:spec] }
|
14
15
|
if @spec
|
@@ -17,6 +18,7 @@ module Relaton3gpp
|
|
17
18
|
end
|
18
19
|
@rel = releases.detect { |r| r[:Release_code] == row[:release] }
|
19
20
|
end
|
21
|
+
@tstatus = tstatus.detect { |t| t[:Number] == row[:spec] }
|
20
22
|
end
|
21
23
|
|
22
24
|
#
|
@@ -26,11 +28,12 @@ module Relaton3gpp
|
|
26
28
|
# @param [Array<Hash>] specrels Spec + Release table
|
27
29
|
# @param [Array<Hash>] relaeases Releases table
|
28
30
|
# @param [Array<Hash>] specs Specs table
|
31
|
+
# @param [Array<Hash>] tstatus temp status-table
|
29
32
|
#
|
30
33
|
# @return [RelatonBib:BibliographicItem, nil] bibliographic item
|
31
34
|
#
|
32
|
-
def self.parse(row, specs, specrels, relaeases)
|
33
|
-
new(row, specs, specrels, relaeases).parse
|
35
|
+
def self.parse(row, specs, specrels, relaeases, tstatus)
|
36
|
+
new(row, specs, specrels, relaeases, tstatus).parse
|
34
37
|
end
|
35
38
|
|
36
39
|
#
|
@@ -60,7 +63,7 @@ module Relaton3gpp
|
|
60
63
|
common_ims_spec: @spec[:ComIMS] == "1",
|
61
64
|
# internal: @spec[:"For publication"] == "0",
|
62
65
|
release: parse_release,
|
63
|
-
|
66
|
+
contributor: parse_contributor,
|
64
67
|
)
|
65
68
|
end
|
66
69
|
|
@@ -103,11 +106,7 @@ module Relaton3gpp
|
|
103
106
|
# @return [Arra<RelatonBib::DocumentIdentifier>] docidentifier
|
104
107
|
#
|
105
108
|
def parse_docid
|
106
|
-
[
|
107
|
-
RelatonBib::DocumentIdentifier.new(type: "3GPP", id: "3GPP #{number}"),
|
108
|
-
RelatonBib::DocumentIdentifier.new(type: "rapporteurId",
|
109
|
-
id: @spec[:"rapporteur id"]),
|
110
|
-
]
|
109
|
+
[RelatonBib::DocumentIdentifier.new(type: "3GPP", id: "3GPP #{number}")]
|
111
110
|
end
|
112
111
|
|
113
112
|
#
|
@@ -151,20 +150,22 @@ module Relaton3gpp
|
|
151
150
|
#
|
152
151
|
# @return [RelatonBib::EditorialGroup] editorialgroups
|
153
152
|
#
|
154
|
-
def parse_editorialgroup # rubocop:disable Metrics/MethodLength
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
wgo = RelatonBib::WorkGroup.new(name: @spec[:"WG other"], type: "other")
|
159
|
-
eg << RelatonBib::TechnicalCommittee.new(wgo)
|
153
|
+
def parse_editorialgroup # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
154
|
+
eg = [create_workgroup(@spec[:"WG prime"], "prime")]
|
155
|
+
if @spec[:"WG other"] && @spec[:"WG other"] != "-"
|
156
|
+
eg << create_workgroup(@spec[:"WG other"], "other")
|
160
157
|
end
|
161
158
|
if @spec[:"former WG"]
|
162
|
-
|
163
|
-
eg << RelatonBib::TechnicalCommittee.new(wgf)
|
159
|
+
eg << create_workgroup(@spec[:"former WG"], "former")
|
164
160
|
end
|
165
161
|
RelatonBib::EditorialGroup.new eg
|
166
162
|
end
|
167
163
|
|
164
|
+
def create_workgroup(name, type)
|
165
|
+
wgf = RelatonBib::WorkGroup.new(name: name, type: type)
|
166
|
+
RelatonBib::TechnicalCommittee.new(wgf)
|
167
|
+
end
|
168
|
+
|
168
169
|
#
|
169
170
|
# Parse note
|
170
171
|
#
|
@@ -172,10 +173,10 @@ module Relaton3gpp
|
|
172
173
|
#
|
173
174
|
def parse_note
|
174
175
|
n = []
|
175
|
-
if @specrel && @specrel[:remarks]
|
176
|
+
if @specrel && @specrel[:remarks] && @specrel[:remarks] != "."
|
176
177
|
n << RelatonBib::BiblioNote.new(type: "remark", content: @specrel[:remarks])
|
177
178
|
end
|
178
|
-
if @row[:comment]
|
179
|
+
if @row[:comment] && @row[:comment] != "."
|
179
180
|
n << RelatonBib::BiblioNote.new(type: "comment", content: @row[:comment])
|
180
181
|
end
|
181
182
|
RelatonBib::BiblioNoteCollection.new n
|
@@ -207,38 +208,50 @@ module Relaton3gpp
|
|
207
208
|
end
|
208
209
|
end
|
209
210
|
|
211
|
+
#
|
212
|
+
# Parse release
|
213
|
+
#
|
214
|
+
# @return [Relaton3gpp::Release, nil] release
|
215
|
+
#
|
210
216
|
def parse_release # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
211
217
|
if @rel
|
212
218
|
project_start = Date.parse(@rel[:"rel-proj-start"]).to_s if @rel[:"rel-proj-start"]
|
213
219
|
project_end = Date.parse(@rel[:"rel-proj-end"]).to_s if @rel[:"rel-proj-end"]
|
220
|
+
Release.new(
|
221
|
+
version2g: @rel[:version_2g],
|
222
|
+
version3g: @rel[:version_3g],
|
223
|
+
defunct: @rel[:defunct] == "1",
|
224
|
+
wpm_code_2g: @rel[:wpm_code_2g],
|
225
|
+
wpm_code_3g: @rel[:wpm_code_3g],
|
226
|
+
freeze_meeting: @rel[:"freeze meeting"],
|
227
|
+
freeze_stage1_meeting: @rel[:Stage1_freeze],
|
228
|
+
freeze_stage2_meeting: @rel[:Stage2_freeze],
|
229
|
+
freeze_stage3_meeting: @rel[:Stage3_freeze],
|
230
|
+
close_meeting: @rel[:Closed],
|
231
|
+
project_start: project_start,
|
232
|
+
project_end: project_end,
|
233
|
+
)
|
214
234
|
end
|
215
|
-
Release.new(
|
216
|
-
version2g: @rel[:version_2g],
|
217
|
-
version3g: @rel[:version_3g],
|
218
|
-
defunct: @rel[:defunct] == "1",
|
219
|
-
wpm_code_2g: @rel[:wpm_code_2g],
|
220
|
-
wpm_code_3g: @rel[:wpm_code_3g],
|
221
|
-
freeze_meeting: @rel[:"freeze meeting"],
|
222
|
-
freeze_stage1_meeting: @rel[:Stage1_freeze],
|
223
|
-
freeze_stage2_meeting: @rel[:Stage2_freeze],
|
224
|
-
freeze_stage3_meeting: @rel[:Stage3_freeze],
|
225
|
-
close_meeting: @rel[:Closed],
|
226
|
-
project_start: project_start,
|
227
|
-
project_end: project_end,
|
228
|
-
)
|
229
235
|
end
|
230
236
|
|
231
237
|
#
|
232
238
|
# Create contributor
|
233
239
|
#
|
234
|
-
# @return [Array<RelatonBib::
|
240
|
+
# @return [Array<RelatonBib::ContributionInfo>] contributor
|
235
241
|
#
|
236
|
-
#
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
242
|
+
def parse_contributor # rubocop:disable Metrics/MethodLength
|
243
|
+
return [] unless @tstatus && @tstatus[:rapporteur]
|
244
|
+
|
245
|
+
aff = []
|
246
|
+
if @tstatus[:"rapp org"]
|
247
|
+
org = RelatonBib::Organization.new(name: @tstatus[:"rapp org"])
|
248
|
+
cn = RelatonBib::LocalizedString.new @tstatus[:rapporteur], "en", "Latn"
|
249
|
+
name = RelatonBib::FullName.new(completename: cn)
|
250
|
+
aff << RelatonBib::Affiliation.new(organization: org)
|
251
|
+
end
|
252
|
+
person = RelatonBib::Person.new(name: name, affiliation: aff)
|
253
|
+
role = { type: "author" }
|
254
|
+
[RelatonBib::ContributionInfo.new(entity: person, role: [role])]
|
255
|
+
end
|
243
256
|
end
|
244
257
|
end
|
data/lib/relaton_3gpp/release.rb
CHANGED
@@ -39,7 +39,7 @@ module Relaton3gpp
|
|
39
39
|
builder.release do
|
40
40
|
builder.version2G @version2g if @version2g
|
41
41
|
builder.version3G @version3g if @version3g
|
42
|
-
builder.defunct @defunct
|
42
|
+
builder.defunct @defunct unless @defunct.nil?
|
43
43
|
builder.send "wpm-code-2G", @wpm_code_2g if @wpm_code_2g
|
44
44
|
builder.send "wpm-code-3G", @wpm_code_3g if @wpm_code_3g
|
45
45
|
builder.send "freeze-meeting", @freeze_meeting if @freeze_meeting
|
data/lib/relaton_3gpp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-3gpp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: equivalent-xml
|