relaton-gb 0.6.1 → 0.6.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '08660ea6761c9bcf3be4f3876838dc33b19bf25d'
4
- data.tar.gz: '02690d3dd1ee0c0396a86a9e3e360ffd52468822'
3
+ metadata.gz: c0978ce217698027cca98e48fcad3fdf3060af8f
4
+ data.tar.gz: 3f9e4857d33b1b3aee204746098c003816ded415
5
5
  SHA512:
6
- metadata.gz: 23d003d2e3cdb41c3f3fc573dac0258c74eaaa00a4cc096f5eef3354f8538a19ddc72cab102bc60a61991ac66c8f2e2739e7ac742ade485835b9dc19cb0465bf
7
- data.tar.gz: 86d5166d5e78449170184e9673fed3be8b7900832362279d2bc55d3b0e2596bad1e9e0286da64eb7a77069355f92bca5e37a5493aa87155ce9dfda263993fdb3
6
+ metadata.gz: 6a52a32b85031f0b31005a562fa3c95e630f9a33e353b7b0371eee23ebb8483430cf770bc16f900406357609ecbabae3dcb8dab1af6e2ac5a9151866bb03ceb0
7
+ data.tar.gz: 9d3ab095b5681268b8113789b53c0b60140e4faf427918f29561460454fec99b9cff46bb9d39d5b6480df341f7d23396c17bcb8258fa95f413965a7f136f4e96
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- relaton-gb (0.6.1)
4
+ relaton-gb (0.6.2)
5
5
  cnccs (~> 0.1.1)
6
6
  gb-agencies (~> 0.0.1)
7
7
  relaton-iso-bib (~> 0.3.0)
@@ -26,7 +26,7 @@ GEM
26
26
  json (2.2.0)
27
27
  method_source (0.9.2)
28
28
  mini_portile2 (2.4.0)
29
- nokogiri (1.10.3)
29
+ nokogiri (1.10.4)
30
30
  mini_portile2 (~> 2.4.0)
31
31
  pry (0.12.2)
32
32
  coderay (~> 1.1.0)
@@ -36,10 +36,10 @@ GEM
36
36
  pry (~> 0.10)
37
37
  public_suffix (3.1.1)
38
38
  rake (10.5.0)
39
- relaton-bib (0.3.2)
39
+ relaton-bib (0.3.5)
40
40
  addressable
41
41
  nokogiri (~> 1.10)
42
- relaton-iso-bib (0.3.2)
42
+ relaton-iso-bib (0.3.4)
43
43
  isoics (~> 0.1.6)
44
44
  relaton-bib (~> 0.3.0)
45
45
  ruby_deep_clone (~> 0.8.0)
@@ -0,0 +1,8 @@
1
+ module Cnccs
2
+ class Ccs
3
+ # @return [Hash]
4
+ def to_hash
5
+ { "code" => code }
6
+ end
7
+ end
8
+ end
@@ -6,6 +6,7 @@ require "relaton_gb/gb_technical_committee"
6
6
  require "relaton_gb/gb_standard_type"
7
7
  require "relaton_gb/xml_parser"
8
8
  require "relaton_gb/hash_converter"
9
+ require "relaton_gb/ccs"
9
10
 
10
11
  module RelatonGb
11
12
  # GB bibliographic item class.
@@ -49,6 +50,16 @@ module RelatonGb
49
50
  end
50
51
  end
51
52
 
53
+ # @return [Hash]
54
+ def to_hash
55
+ hash = super
56
+ hash["ccs"] = single_element_array(ccs) if ccs&.any?
57
+ hash["committee"] = committee.to_hash if committee
58
+ hash["plannumber"] = gbplannumber if gbplannumber
59
+ hash["gbtype"] = gbtype.to_hash
60
+ hash
61
+ end
62
+
52
63
  # @return [String]
53
64
  def inspect
54
65
  "<#{self.class}:#{format('%#.14x', object_id << 1)}>"
@@ -97,9 +108,8 @@ module RelatonGb
97
108
  # @param builder [Nokogiri::XML::Builder]
98
109
  def render_gbxml(builder)
99
110
  gbtype.to_xml builder
100
- return unless ccs.any?
101
111
 
102
- ccs.each do |c|
112
+ ccs&.each do |c|
103
113
  builder.ccs do
104
114
  builder.code c.code
105
115
  builder.text_ c.description
@@ -23,7 +23,7 @@ module RelatonGb
23
23
  Hit.new pid: h[:pid], title: h.text, scrapper: self
24
24
  end
25
25
  HitCollection.new hits
26
- rescue OpenURI::HTTPError, SocketError
26
+ rescue OpenURI::HTTPError, SocketError, OpenSSL::SSL::SSLError
27
27
  raise RelatonBib::RequestError, "Cannot access http://www.std.gov.cn/search/stdPage"
28
28
  end
29
29
 
@@ -33,7 +33,7 @@ module RelatonGb
33
33
  src = "http://www.std.gov.cn/gb/search/gbDetailed?id=" + pid
34
34
  doc = Nokogiri::HTML OpenURI.open_uri(src)
35
35
  GbBibliographicItem.new scrapped_data(doc, src: src)
36
- rescue OpenURI::HTTPError, SocketError
36
+ rescue OpenURI::HTTPError, SocketError, OpenSSL::SSL::SSLError
37
37
  raise RelatonBib::RequestError, "Cannot access #{src}"
38
38
  end
39
39
 
@@ -26,5 +26,10 @@ module RelatonGb
26
26
  builder.gbmandate @mandate
27
27
  end
28
28
  end
29
+
30
+ # @return [Hash]
31
+ def to_hash
32
+ { "scope" => scope, "prefix" => prefix, "mandate" => mandate }
33
+ end
29
34
  end
30
35
  end
@@ -19,5 +19,10 @@ module RelatonGb
19
19
  builder.text @name
20
20
  end
21
21
  end
22
+
23
+ # @return [Hash]
24
+ def to_hash
25
+ { "type" => type, "name" => name }
26
+ end
22
27
  end
23
28
  end
@@ -11,32 +11,14 @@ module RelatonGb
11
11
  ret = super
12
12
  return if ret.nil?
13
13
 
14
- committee_hash_to_bib(ret)
15
14
  ccs_hash_to_bib(ret)
16
15
  ret
17
16
  end
18
17
 
19
18
  private
20
19
 
21
- def committee_hash_to_bib(ret)
22
- return unless ret[:title]
23
-
24
- ret[:title] = array(ret[:title])
25
- ret[:title] = ret[:title].map do |t|
26
- titleparts = {}
27
- titleparts = split_title(t) unless t.is_a?(Hash)
28
- if t.is_a?(Hash) && t[:content]
29
- titleparts = split_title(t[:content], t[:language], t[:script])
30
- end
31
- if t.is_a?(Hash) then t.merge(titleparts)
32
- else
33
- { content: t, language: "en", script: "Latn", format: "text/plain", type: "main" }
34
- end
35
- end
36
- end
37
-
38
20
  def ccs_hash_to_bib(ret)
39
- ret[:ccs] = ret.fetch(:ccs, []).map do |ccs|
21
+ ret[:ccs] = array(ret[:ccs]).map do |ccs|
40
22
  ccs[:code] ? Cnccs.fetch(ccs[:code]) : Cnccs.fetch(ccs)
41
23
  end
42
24
  end
@@ -25,7 +25,8 @@ module RelatonGb
25
25
  end
26
26
  HitCollection.new hits
27
27
  rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
28
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError
28
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
29
+ OpenSSL::SSL::SSLError
29
30
  raise RelatonBib::RequestError, "Cannot access #{uri}"
30
31
  end
31
32
 
@@ -37,7 +38,8 @@ module RelatonGb
37
38
  doc = Nokogiri::HTML Net::HTTP.get(page_uri)
38
39
  GbBibliographicItem.new scrapped_data(doc, src: src)
39
40
  rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
40
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError
41
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
42
+ OpenSSL::SSL::SSLError
41
43
  raise RelatonBib::RequestError, "Cannot access #{src}"
42
44
  end
43
45
 
@@ -30,7 +30,7 @@ module RelatonGb
30
30
  Hit.new pid: h[:href].sub(%r{\/$}, ""), title: title, scrapper: self
31
31
  end
32
32
  HitCollection.new hits
33
- rescue OpenURI::HTTPError, SocketError
33
+ rescue OpenURI::HTTPError, SocketError, OpenSSL::SSL::SSLError
34
34
  raise RelatonBib::RequestError, "Cannot access http://www.ttbz.org.cn/Home/Standard"
35
35
  end
36
36
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
@@ -41,7 +41,7 @@ module RelatonGb
41
41
  src = "http://www.ttbz.org.cn#{pid}"
42
42
  doc = Nokogiri::HTML OpenURI.open_uri(src), nil, Encoding::UTF_8.to_s
43
43
  GbBibliographicItem.new scrapped_data(doc, src: src)
44
- rescue OpenURI::HTTPError, SocketError
44
+ rescue OpenURI::HTTPError, SocketError, OpenSSL::SSL::SSLError
45
45
  raise RelatonBib::RequestError, "Cannot access #{src}"
46
46
  end
47
47
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonGb
4
- VERSION = "0.6.1"
4
+ VERSION = "0.6.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-gb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-02 00:00:00.000000000 Z
11
+ date: 2019-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -187,6 +187,7 @@ files:
187
187
  - bin/setup
188
188
  - lib/relaton/processor.rb
189
189
  - lib/relaton_gb.rb
190
+ - lib/relaton_gb/ccs.rb
190
191
  - lib/relaton_gb/gb_bibliographic_item.rb
191
192
  - lib/relaton_gb/gb_bibliography.rb
192
193
  - lib/relaton_gb/gb_scrapper.rb