relaton-iso 1.0.2 → 1.2.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: 726ca28930d18170b319b15d5409f51e7954951c8a527ec22643ebab2e484002
4
- data.tar.gz: d063fdc6390a3ace1f03569bb97b85c9e56d7b1ee8d992e809a154ddaa847939
3
+ metadata.gz: 695d73fc8a0ec542936778c62629e23278859d137bc6ee9b84e6d20336d832da
4
+ data.tar.gz: 1c529be373cf17e122e7d98cb910e83474916bb9d2b9d38a612c8a5f3d41aeb3
5
5
  SHA512:
6
- metadata.gz: cf93495c08d8f32b1d08e8c87b6bc8cf7175be8f2ce153862e930e48635f6e238471bd84fda2aa0877351755e973d6bb96e5f01023d23602e6b125fa1dfd333e
7
- data.tar.gz: f007ab7035dbaaf3ff603afba1ac944a3b2f22eff1da682078db5f3272248202f4df9668c237e9e2f97b69bd49ee64a281a7a8335cbfe2d1823b5df62ad9c7d4
6
+ metadata.gz: ecdd90086da2528bf41a05e499da97f10409a69004e7d45786bffcabce715bc5f3261f25a79212b56f9171cbd66ef56a82b382a3c26750f0fed8a2d1142ba922
7
+ data.tar.gz: d23cdc8f56ec945e945a8b5a5cede2f84e9f68c0419f6e9fc16403988d5f8fd4917656a327ed921f216783829ec2fd91073a2f59adc982cfe249a73f2bc516c2
@@ -25,6 +25,30 @@ module RelatonIso
25
25
  "Guide" => "guide",
26
26
  }.freeze
27
27
 
28
+ STGABBR = {
29
+ "00" => "NWIP",
30
+ "10" => "AWI",
31
+ "20" => "WD",
32
+ "30" => "CD",
33
+ "40" => "DIS",
34
+ "50" => "FDIS",
35
+ "60" => { "00" => "PRF", "60" => "FINAL" },
36
+ }.freeze
37
+
38
+ PUBLISHERS = {
39
+ "IEC" => { name: "International Electrotechnical Commission",
40
+ url: "www.iec.ch" },
41
+ "ISO" => { name: "International Organization for Standardization",
42
+ url: "www.iso.org" },
43
+ "IEEE" => { name: "Institute of Electrical and Electronics Engineers",
44
+ url: "www.ieee.org" },
45
+ "SAE" => { name: "SAE International", url: "www.sae.org" },
46
+ "CIE" => { name: " International Commission on Illumination",
47
+ url: "cie.co.at" },
48
+ "ASME" => { name: "American Society of Mechanical Engineers",
49
+ url: "www.asme.org" },
50
+ }.freeze
51
+
28
52
  class << self
29
53
  # Parse page.
30
54
  # @param hit_data [Hash]
@@ -80,7 +104,7 @@ module RelatonIso
80
104
  d = l[:path] ? get_page(l[:path])[0] : doc
81
105
  unless d.at("//h5[@class='help-block'][.='недоступно на русском языке']")
82
106
  s << l
83
- titles << fetch_title(d, l[:lang])
107
+ titles += fetch_title(d, l[:lang])
84
108
 
85
109
  # Fetch abstracts.
86
110
  abstract_content = d.css("div[itemprop='description'] p").text
@@ -176,10 +200,17 @@ module RelatonIso
176
200
  # @param status [String]
177
201
  # @return [Hash]
178
202
  def fetch_status(doc)
179
- stage, substage = doc.css("li.dropdown.active span.stage-code > strong").text.split "."
180
- RelatonBib::DocumentStatus.new(stage: stage, substage: substage)
203
+ stg, substg = doc.css(
204
+ "li.dropdown.active span.stage-code > strong",
205
+ ).text.split "."
206
+ RelatonBib::DocumentStatus.new(stage: stg, substage: substg)
181
207
  end
182
208
 
209
+ # def stage(stg, substg)
210
+ # abbr = STGABBR[stg].is_a?(Hash) ? STGABBR[stg][substg] : STGABBR[stg]
211
+ # RelatonBib::DocumentStatus::Stage.new value: stg, abbreviation: abbr
212
+ # end
213
+
183
214
  # Fetch workgroup.
184
215
  # @param doc [Nokogiri::HTML::Document]
185
216
  # @return [Hash]
@@ -256,12 +287,14 @@ module RelatonIso
256
287
  # Fetch titles.
257
288
  # @param doc [Nokogiri::HTML::Document]
258
289
  # @param lang [String]
259
- # @return [Hash]
290
+ # @return [Array<RelatonBib::TypedTitleString>]
260
291
  def fetch_title(doc, lang)
261
292
  content = doc.at(
262
- "//nav[contains(@class,'eading-condensed')]/h2 | //nav[contains(@class,'eading-condensed')]/h3",
263
- )&.text
264
- RelatonIsoBib::HashConverter.split_title content, lang, script(lang)
293
+ "//nav[contains(@class,'heading-condensed')]/h2 | //nav[contains(@class,'heading-condensed')]/h3",
294
+ )&.text&.gsub(/\u2014/, "-")
295
+ return [] unless content
296
+
297
+ RelatonBib::TypedTitleString.from_string content, lang, script(lang)
265
298
  end
266
299
 
267
300
  # Return ISO script code.
@@ -303,17 +336,12 @@ module RelatonIso
303
336
  end
304
337
 
305
338
  def fetch_contributors(ref)
306
- ref.sub(/\s.*/, "").split("/").map do |abbrev|
307
- case abbrev
308
- when "IEC"
309
- name = "International Electrotechnical Commission"
310
- url = "www.iec.ch"
311
- else
312
- name = "International Organization for Standardization"
313
- url = "www.iso.org"
314
- end
315
- { entity: { name: name, url: url, abbreviation: abbrev },
316
- role: [type: "publisher"] }
339
+ ref.sub(/\s.*/, "").split("/").reduce([]) do |mem, abbrev|
340
+ publisher = PUBLISHERS[abbrev]
341
+ next mem unless publisher
342
+
343
+ publisher[:abbreviation] = abbrev
344
+ mem << { entity: publisher, role: [type: "publisher"] }
317
345
  end
318
346
  end
319
347
  # rubocop:enable Metrics/MethodLength
@@ -347,14 +375,14 @@ module RelatonIso
347
375
  # Fetch copyright.
348
376
  # @param ref [String]
349
377
  # @param doc [Nokogiri::HTML::Document]
350
- # @return [Hash]
378
+ # @return [Array<Hash>]
351
379
  def fetch_copyright(ref, doc)
352
380
  owner_name = ref.match(/.*?(?=\s)/).to_s
353
381
  from = ref.match(/(?<=:)\d{4}/).to_s
354
382
  if from.empty?
355
383
  from = doc.xpath("//span[@itemprop='releaseDate']").text.match(/\d{4}/).to_s
356
384
  end
357
- { owner: { name: owner_name }, from: from }
385
+ [{ owner: [{ name: owner_name }], from: from }]
358
386
  end
359
387
  end
360
388
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonIso
4
- VERSION = "1.0.2"
4
+ VERSION = "1.2.0"
5
5
  end
@@ -37,6 +37,6 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "vcr"
38
38
  spec.add_development_dependency "webmock"
39
39
 
40
- spec.add_dependency "relaton-iec", "~> 1.0.0"
41
- spec.add_dependency "relaton-iso-bib", "~> 1.0.0"
40
+ spec.add_dependency "relaton-iec", "~> 1.2.0"
41
+ spec.add_dependency "relaton-iso-bib", "~> 1.2.0"
42
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.2.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-05-14 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -156,28 +156,28 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.0.0
159
+ version: 1.2.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.0.0
166
+ version: 1.2.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: relaton-iso-bib
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 1.0.0
173
+ version: 1.2.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 1.0.0
180
+ version: 1.2.0
181
181
  description: 'RelatonIso: retrieve ISO Standards for bibliographic use using the IsoBibliographicItem
182
182
  model'
183
183
  email: