relaton-iso-bib 0.3.2 → 0.3.3

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
  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