relaton-iso-bib 0.3.2 → 0.3.3

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: b7186f4c94d9264e4c612ee7f6b78d89186de54e
4
- data.tar.gz: 883a9686aeb8bc30b808643c9f20ad142f5d2695
3
+ metadata.gz: 637ffa327aa126a02134f1bb84d39f2dc431b42e
4
+ data.tar.gz: dccdaced7cd3ad6ec9a6ca863c3f64bf2e6d64c7
5
5
  SHA512:
6
- metadata.gz: a495890926f73ab84695d8731808090e15b9b0f78e9ebea55b5ab5128cb1e6e8f4cf14a1f2450007454dbd9ba617203082f71b041c69a6df7da1de9a76fffbd7
7
- data.tar.gz: f6f2ede12ef37216211f7d653295909e0b59af1485a23c4710f3f9a7aced71352c0c4043daaafb43241dd4ad2bd0e846a4213baba1c7a6abee4aecae0e41fc5c
6
+ metadata.gz: fe9f3b30ceb708660084d33fde87934c3f42446d97a6aa15fc8fbd6baf3bf02ac4e3e5cd1c31d378d504fdfba3f16ece1d24b1b91d4366827721950100908d36
7
+ data.tar.gz: 2cdb6f97d9377e6e08061b97cb931bb04851abd162f1411dc570ff02651e95333bdad4c0df63dbc7ff37cad608c76a57f61a45313ec1fe80727ec175838da800
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- relaton-iso-bib (0.3.2)
4
+ relaton-iso-bib (0.3.3)
5
5
  isoics (~> 0.1.6)
6
6
  relaton-bib (~> 0.3.0)
7
7
  ruby_deep_clone (~> 0.8.0)
@@ -24,7 +24,7 @@ GEM
24
24
  json (2.2.0)
25
25
  method_source (0.9.2)
26
26
  mini_portile2 (2.4.0)
27
- nokogiri (1.10.3)
27
+ nokogiri (1.10.4)
28
28
  mini_portile2 (~> 2.4.0)
29
29
  pry (0.12.2)
30
30
  coderay (~> 1.1.0)
@@ -34,7 +34,7 @@ GEM
34
34
  pry (~> 0.10)
35
35
  public_suffix (3.1.1)
36
36
  rake (10.5.0)
37
- relaton-bib (0.3.2)
37
+ relaton-bib (0.3.4)
38
38
  addressable
39
39
  nokogiri (~> 1.10)
40
40
  rspec (3.8.0)
@@ -6,13 +6,13 @@ module RelatonIsoBib
6
6
  # @return [Array<RelatonIsoBib::IsoSubgroup>]
7
7
  attr_reader :technical_committee
8
8
 
9
- # @return [RelatonIsoBib::IsoSubgroup]
9
+ # @return [Array<RelatonIsoBib::IsoSubgroup>]
10
10
  attr_reader :subcommittee
11
11
 
12
- # @return [RelatonIsoBib::IsoSubgroup]
12
+ # @return [Array<RelatonIsoBib::IsoSubgroup>]
13
13
  attr_reader :workgroup
14
14
 
15
- # @return [String]
15
+ # @return [String, NilClass]
16
16
  attr_reader :secretariat
17
17
 
18
18
  # @param technical_committee [Array<Hash, RelatonIsoBib::IsoSubgroup>]
@@ -44,7 +44,7 @@ module RelatonIsoBib
44
44
  @secretariat = args[:secretariat]
45
45
  end
46
46
 
47
- # rubocop:disable Metrics/AbcSize
47
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
48
48
 
49
49
  # @param builder [Nokogiri::XML::Builder]
50
50
  def to_xml(builder)
@@ -63,7 +63,16 @@ module RelatonIsoBib
63
63
  builder.secretariat secretariat if secretariat
64
64
  end
65
65
  end
66
- # rubocop:enable Metrics/AbcSize
66
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
67
+
68
+ # @return [Hash]
69
+ def to_hash
70
+ hash = { technical_committee: technical_committee.map(&:to_hash) }
71
+ hash[:subcommittee] = subcommittee.map(&:to_hash) if subcommittee&.any?
72
+ hash[:workgroup] = workgroup.map(&:to_hash) if workgroup&.any?
73
+ hash[:secretariat] = secretariat if secretariat
74
+ hash
75
+ end
67
76
  end
68
77
 
69
78
  # ISO subgroup.
@@ -92,5 +101,13 @@ module RelatonIsoBib
92
101
  builder.parent[:type] = type if type
93
102
  builder.text name
94
103
  end
104
+
105
+ # @return [Hash]
106
+ def to_hash
107
+ hash = { name: name }
108
+ hash[:type] = type if type
109
+ hash[:number] = number if number
110
+ hash
111
+ end
95
112
  end
96
113
  end
@@ -44,23 +44,51 @@ module RelatonIsoBib
44
44
 
45
45
  private
46
46
 
47
+ #
48
+ # Ovverides superclass's method
49
+ #
50
+ # @param ret [Hash]
47
51
  def title_hash_to_bib(ret)
48
52
  return unless ret[:title]
49
53
 
50
54
  ret[:title] = array(ret[:title])
51
- ret[:title] = ret[:title].map do |t|
52
- titleparts = {}
53
- titleparts = split_title(t) unless t.is_a?(Hash)
54
- if t.is_a?(Hash) && t[:content]
55
- titleparts = split_title(t[:content], t[:language], t[:script])
56
- end
57
- if t.is_a?(Hash) then t.merge(titleparts)
58
- else
59
- { content: t, language: "en", script: "Latn", format: "text/plain", type: "main" }
55
+ ret[:title] = ret[:title].reduce([]) do |a, t|
56
+ if t.is_a?(String)
57
+ a << split_title(t)
58
+ elsif t.is_a?(Hash) && t[:type]
59
+ idx = a.index { |i| i[:language] == t[:language] }
60
+ title_key = t[:type].sub("-", "_").to_sym
61
+ if idx
62
+ a[idx][title_key] = t[:content]
63
+ a
64
+ else
65
+ a << { title_key => t[:content], language: t[:language], script: t[:script] }
66
+ end
67
+ elsif t.is_a?(Hash) && t[:content]
68
+ a << split_title(t[:content], t[:language], t[:script])
60
69
  end
61
70
  end
62
71
  end
63
72
 
73
+ #
74
+ # Ovverides superclass's method
75
+ #
76
+ # @param item [Hash]
77
+ # @retirn [RelatonIsoBib::IsoBibliographicItem]
78
+ def bib_item(item)
79
+ IsoBibliographicItem.new(item)
80
+ end
81
+
82
+ #
83
+ # Ovverides superclass's method
84
+ #
85
+ # @param title [Hash]
86
+ # @return [RelatonIsoBib::TypedTitleString]
87
+ def typed_title_strig(title)
88
+ TypedTitleString.new title
89
+ end
90
+
91
+ # @param ret [Hash]
64
92
  def editorialgroup_hash_to_bib(ret)
65
93
  eg = ret[:editorialgroup]
66
94
  return unless eg
@@ -73,12 +101,14 @@ module RelatonIsoBib
73
101
  )
74
102
  end
75
103
 
104
+ # @param ret [Hash]
76
105
  def ics_hash_to_bib(ret)
77
106
  ret[:ics] = ret.fetch(:ics, []).map do |ics|
78
107
  ics[:code] ? Ics.new(ics[:code]) : Ics.new(ics)
79
108
  end
80
109
  end
81
110
 
111
+ # @param ret [Hash]
82
112
  def structuredidentifier_hash_to_bib(ret)
83
113
  return unless ret[:structuredidentifier]
84
114
 
@@ -10,7 +10,7 @@ module RelatonIsoBib
10
10
  raise ArgumentError, "wrong arguments (should be string or { fieldcode: [String] }"
11
11
  end
12
12
 
13
- field, group, subgroup = code.split '.' if code
13
+ field, group, subgroup = code.split "." if code
14
14
  super fieldcode: field, groupcode: group, subgroupcode: subgroup
15
15
  end
16
16
 
@@ -21,5 +21,12 @@ module RelatonIsoBib
21
21
  builder.text_ description
22
22
  end
23
23
  end
24
+
25
+ # @return [Hash]
26
+ def to_hash
27
+ hash = {}
28
+ hash[:code] = code if code
29
+ hash
30
+ end
24
31
  end
25
- end
32
+ end
@@ -125,8 +125,8 @@ module RelatonIsoBib
125
125
  # @raise [ArgumentError]
126
126
  def initialize(**args)
127
127
  check_type args[:type]
128
- #check_language args.fetch(:language, [])
129
- #check_script args.fetch(:script, [])
128
+ # check_language args.fetch(:language, [])
129
+ # check_script args.fetch(:script, [])
130
130
 
131
131
  super_args = args.select do |k|
132
132
  %i[id docnumber language script docstatus date abstract contributor
@@ -245,25 +245,35 @@ module RelatonIsoBib
245
245
  end
246
246
  end
247
247
 
248
+ # @return [Hash]
249
+ def to_hash
250
+ hash = super
251
+ hash[:editorialgroup] = editorialgroup.to_hash if editorialgroup
252
+ hash[:ics] = ics.map(&:to_hash) if ics&.any?
253
+ hash[:structuredidentifier] = structuredidentifier.to_hash if structuredidentifier
254
+ hash[:type] = doctype if doctype
255
+ hash
256
+ end
257
+
248
258
  private
249
259
 
250
260
  # @param language [Array<String>]
251
261
  # @raise ArgumentError
252
- def check_language(language)
253
- language.each do |lang|
254
- unless %w[en fr].include? lang
255
- raise ArgumentError, "invalid language: #{lang}"
256
- end
257
- end
258
- end
262
+ # def check_language(language)
263
+ # language.each do |lang|
264
+ # unless %w[en fr].include? lang
265
+ # raise ArgumentError, "invalid language: #{lang}"
266
+ # end
267
+ # end
268
+ # end
259
269
 
260
270
  # @param script [Array<String>]
261
271
  # @raise ArgumentError
262
- def check_script(script)
263
- script.each do |scr|
264
- raise ArgumentError, "invalid script: #{scr}" unless scr == "Latn"
265
- end
266
- end
272
+ # def check_script(script)
273
+ # script.each do |scr|
274
+ # raise ArgumentError, "invalid script: #{scr}" unless scr == "Latn"
275
+ # end
276
+ # end
267
277
 
268
278
  # @param script [String]
269
279
  # @raise ArgumentError
@@ -26,7 +26,7 @@ module RelatonIsoBib
26
26
  @project_number = args[:project_number]
27
27
  @part = args[:part]
28
28
  @subpart = args[:subpart]
29
- @prefix = args[:prefix]
29
+ # @prefix = args[:prefix]
30
30
  @type = args[:type]
31
31
  end
32
32
 
@@ -67,5 +67,16 @@ module RelatonIsoBib
67
67
  end
68
68
  xml[:type] = type if type
69
69
  end
70
+
71
+ # @return [Hash]
72
+ def to_hash
73
+ hash = {}
74
+ hash[:tc_document_number] = tc_document_number if tc_document_number
75
+ hash[:project_number] = project_number if project_number
76
+ hash[:part] = part if part
77
+ hash[:subpart] = subpart if subpart
78
+ hash[:type] = type if type
79
+ hash
80
+ end
70
81
  end
71
82
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonIsoBib
2
- VERSION = "0.3.2".freeze
2
+ VERSION = "0.3.3".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iso-bib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
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-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler