relaton-itu 1.0.1 → 1.0.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
  SHA256:
3
- metadata.gz: 169f68ca9de0a9e01f2130919807393d53507a2fd92f98a7043337ee9c037a18
4
- data.tar.gz: a5fc6f91b1d6c6af3b25919c77f2a3f1cc57bbc527983207d5163088ba01ea6c
3
+ metadata.gz: '0296cc075043482de147d46ed60967df09931278eda654caae1f92bcd4a30930'
4
+ data.tar.gz: 47645aff343e6f2d87e4022833ca3d2928be3a7d01ceb6c4456d19bcd7d98b82
5
5
  SHA512:
6
- metadata.gz: 3243b1b99b363cb8bb773320ad5c70f0e48de661b4db92c1e3a96991de163ff40dd6179f974ebd80507ad2b37aca4ad0e20ca549c880787752128517a4dd34a9
7
- data.tar.gz: d40ffddd2ef5a4ec569f92ae6253148b85ae434b38fa31ec2eb27681bf3e948096137b0acf86535fade15e4ccc79e538668a6371dbb575416a8a842739cdcf97
6
+ metadata.gz: 17c721e761b2cb4e8a42f8b328bec1ce90935a6ee289810e9153088980719d7e2ce84aeb79dd331f148bbe91168c7cc1a2df7e0a990264daba0bdbc1921eda53
7
+ data.tar.gz: '0648252af5e10601c126fa2494966f0291fafbffb16dcc0f8f8782a3fdc7e8a6f3e6e4dfcd839c0444516fce76a2233732f93522f59f450234b7e361eaaaf74a'
@@ -16,8 +16,9 @@ module RelatonItu
16
16
  # @param subgroup [Hash, RelatonItu::ItuGroup, NilClass]
17
17
  # @param workgroup [Hash, RelatonItu::ItuGroup, NilClass]
18
18
  def initialize(bureau:, group:, subgroup: nil, workgroup: nil)
19
- raise ArgumentError, "invalid bureau: #{bureau}" unless BUREAUS.include? bureau
20
-
19
+ unless BUREAUS.include? bureau
20
+ warn "[relaton-itu] WARNING: invalid bureau: #{bureau}"
21
+ end
21
22
  @bureau = bureau
22
23
  @group = group.is_a?(Hash) ? ItuGroup.new(group) : group
23
24
  @subgroup = subgroup.is_a?(Hash) ? ItuGroup.new(subgroup) : subgroup
@@ -28,7 +29,7 @@ module RelatonItu
28
29
  def to_xml(builder)
29
30
  builder.editorialgroup do
30
31
  builder.bureau bureau
31
- builder.group { |b| group.to_xml b }
32
+ builder.group { |b| group.to_xml b } if group
32
33
  builder.subgroup { |b| group.to_xml b } if subgroup
33
34
  builder.workgroup { |b| group.to_xml b } if workgroup
34
35
  end
@@ -36,7 +37,8 @@ module RelatonItu
36
37
 
37
38
  # @return [Hash]
38
39
  def to_hash
39
- hash = { "bureau" => bureau, "group" => group.to_hash }
40
+ hash = { "bureau" => bureau }
41
+ hash["group"] = group.to_hash if group
40
42
  hash["subgroup"] = subgroup.to_hash if subgroup
41
43
  hash["workgroup"] = workgroup.to_hash if workgroup
42
44
  hash
@@ -9,6 +9,15 @@ module RelatonItu
9
9
 
10
10
  ret[:editorialgroup] = EditorialGroup.new eg
11
11
  end
12
+
13
+ # @param ret [Hash]
14
+ def structuredidentifier_hash_to_bib(ret)
15
+ return unless ret[:structuredidentifier]
16
+
17
+ ret[:structuredidentifier] = StructuredIdentifier.new(
18
+ ret[:structuredidentifier],
19
+ )
20
+ end
12
21
  end
13
22
  end
14
23
  end
@@ -7,12 +7,12 @@ module RelatonItu
7
7
  joint-itu-iso-iec
8
8
  ].freeze
9
9
 
10
+ # @params structuredidentifier [RelatonItu::StructuredIdentifier]
10
11
  def initialize(**args)
11
12
  @doctype = args.delete :doctype
12
13
  if doctype && !TYPES.include?(doctype)
13
- raise ArgumentError, "invalid doctype: #{doctype}"
14
+ warn "[relaton-itu] WARNING: invalid doctype: #{doctype}"
14
15
  end
15
-
16
16
  super
17
17
  end
18
18
  end
@@ -3,6 +3,7 @@
3
3
  require "relaton_iso_bib"
4
4
  require "relaton_itu/itu_bibliographic_item"
5
5
  require "relaton_itu/editorial_group"
6
+ require "relaton_itu/structured_identifier"
6
7
  require "relaton_itu/itu_group"
7
8
  require "relaton_itu/scrapper"
8
9
  require "relaton_itu/hit_collection"
@@ -0,0 +1,37 @@
1
+ module RelatonItu
2
+ class StructuredIdentifier
3
+ # @return [String]
4
+ attr_reader :bureau, :docnumber
5
+
6
+ # @return [String, NilClass]
7
+ attr_reader :annexid
8
+
9
+ # @param bureau [String] T, D, or R
10
+ # @param docnumber [String]
11
+ # @param annexid [String, NilClass]
12
+ def initialize(bureau:, docnumber:, annexid: nil)
13
+ unless EditorialGroup::BUREAUS.include? bureau
14
+ warn "[relaton-itu] WARNING: invalid bureau: #{bureau}"
15
+ end
16
+ @bureau = bureau
17
+ @docnumber = docnumber
18
+ @annexid = annexid
19
+ end
20
+
21
+ # @param builder [Nokogiri::XML::Builder]
22
+ def to_xml(builder)
23
+ builder.structuredidentifier do |b|
24
+ b.bureau bureau
25
+ b.docnumber docnumber
26
+ b.annexid annexid if annexid
27
+ end
28
+ end
29
+
30
+ # @return [Hash]
31
+ def to_hash
32
+ hash = { bureau: bureau, docnumber: docnumber }
33
+ hash[:annexid] = annexid if annexid
34
+ hash
35
+ end
36
+ end
37
+ end
@@ -1,3 +1,3 @@
1
1
  module RelatonItu
2
- VERSION = "1.0.1".freeze
2
+ VERSION = "1.0.2".freeze
3
3
  end
@@ -3,21 +3,14 @@ require "nokogiri"
3
3
  module RelatonItu
4
4
  class XMLParser < RelatonIsoBib::XMLParser
5
5
  class << self
6
- # Override RelatonIsoBib::XMLParser.form_xml method.
7
- # @param xml [String]
6
+ private
7
+
8
+ # @param item_hash [Hash]
8
9
  # @return [RelatonItu::ItuBibliographicItem]
9
- def from_xml(xml)
10
- doc = Nokogiri::XML(xml)
11
- ituitem = doc.at "/bibitem|/bibdata"
12
- if ituitem
13
- ItuBibliographicItem.new item_data(ituitem)
14
- elsif
15
- warn "[relaton-itu] can't find bibitem or bibdata element in the XML"
16
- end
10
+ def bib_item(item_hash)
11
+ ItuBibliographicItem.new item_hash
17
12
  end
18
13
 
19
- private
20
-
21
14
  # @param ext [Nokogiri::XML::Element]
22
15
  # @return [RelatonItu::EditorialGroup]
23
16
  def fetch_editorialgroup(ext)
@@ -54,6 +47,18 @@ module RelatonItu
54
47
  start: period.at("start").text, finish: period.at("end")&.text,
55
48
  )
56
49
  end
50
+
51
+ # @param ext [Nokogiri::XML::Element]
52
+ # @return [RelatonItu::StructuredIdentifier]
53
+ def fetch_structuredidentifier(ext)
54
+ sid = ext.at "./structuredidentifier"
55
+ return unless sid
56
+
57
+ br = sid.at("bureau").text
58
+ dn = sid.at("docnumber").text
59
+ an = sid.at("annexid")&.text
60
+ StructuredIdentifier.new(bureau: br, docnumber: dn, annexid: an)
61
+ end
57
62
  end
58
63
  end
59
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.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: 2020-05-04 00:00:00.000000000 Z
11
+ date: 2020-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: debase
@@ -200,6 +200,7 @@ files:
200
200
  - lib/relaton_itu/itu_group.rb
201
201
  - lib/relaton_itu/processor.rb
202
202
  - lib/relaton_itu/scrapper.rb
203
+ - lib/relaton_itu/structured_identifier.rb
203
204
  - lib/relaton_itu/version.rb
204
205
  - lib/relaton_itu/xml_parser.rb
205
206
  - relaton-itu.gemspec