relaton-iso-bib 1.16.2 → 1.17.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: 4da0e98206115f1448b10d16ba8c6521a38bc25762f9b1ecabf07e11b415c293
4
- data.tar.gz: f09b435e8ec48229bd3fbe516d476cda07f0ade028a5f141174fc97d7f3b07cc
3
+ metadata.gz: c20b36a2a29b65da5e78b52c28b6f67ad8b219a73f932121d845cf7a1299e1e6
4
+ data.tar.gz: b3d573c7dea77922baf318b9c291f2572b74118fb677c33fa71e469db5ad46a4
5
5
  SHA512:
6
- metadata.gz: bd267c0503570dc5e86586a574cb0da0f032680019d68eea433ab5d97ac11551f41c2a646653aef17b7ed70dea3879cc0f9eb8cfcd7b73f4751bf33d58c40a6d
7
- data.tar.gz: 1761fbed48d7aa9d0d200fb0061aa2ca17fc0e3c8264e3a75349ac3a797457f996c1557d23c16d43af6e4ddff6310f2ec6af57d0e5076150814805e4bc7b5937
6
+ metadata.gz: d61d22e7b2cb5077541d9b67cc6f1c07c92512788f6ee400fec0789b2af832dd2f069e72d6c1a20d7e3da72f665571e1e776dad3423b82edcaf8db6523e6a6f7
7
+ data.tar.gz: 8901e4722edb16249d04cf4dc49a1d1a6ec8bef9276854a89bacedd47c1fe0db523260b66d9577bd3ce50354760c2fe09308a28e3e5e151d4b1c06914bfd631b
@@ -0,0 +1,32 @@
1
+ module RelatonIsoBib
2
+ class DocumentType < RelatonBib::DocumentType
3
+ DOCTYPES = %w[
4
+ international-standard technical-specification technical-report
5
+ publicly-available-specification international-workshop-agreement guide
6
+ amendment technical-corrigendum directive
7
+ ].freeze
8
+
9
+ #
10
+ # Create a new DocumentType object.
11
+ #
12
+ # @param [String] type document type
13
+ # @param [String, nil] abbreviation type abbreviation
14
+ #
15
+ def initialize(type:, abbreviation: nil)
16
+ check_doctype type
17
+ super
18
+ end
19
+
20
+ #
21
+ # Check if type is valid.
22
+ #
23
+ # @param [String] type document type
24
+ #
25
+ def check_doctype(type)
26
+ unless DOCTYPES.include? type
27
+ Util.warn "WARNING: invalid doctype: `#{type}`"
28
+ Util.warn "Allowed doctypes are: `#{DOCTYPES.join('`, `')}`"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,52 +1,57 @@
1
1
  module RelatonIsoBib
2
- class HashConverter < RelatonBib::HashConverter
3
- class << self
4
- private
5
-
6
- #
7
- # Ovverides superclass's method
8
- #
9
- # @param item [Hash]
10
- # @retirn [RelatonIsoBib::IsoBibliographicItem]
11
- def bib_item(item)
12
- IsoBibliographicItem.new(**item)
13
- end
2
+ module HashConverter
3
+ include RelatonBib::HashConverter
4
+ extend self
14
5
 
15
- #
16
- # Ovverides superclass's method
17
- #
18
- # @param title [Hash]
19
- # @return [RelatonBib::TypedTitleString]
20
- def typed_title_strig(title)
21
- RelatonBib::TypedTitleString.new(**title)
22
- end
6
+ private
23
7
 
24
- # @param ret [Hash]
25
- def editorialgroup_hash_to_bib(ret)
26
- eg = ret[:editorialgroup]
27
- return unless eg
28
-
29
- ret[:editorialgroup] = EditorialGroup.new(
30
- technical_committee: RelatonBib.array(eg[:technical_committee]),
31
- subcommittee: RelatonBib.array(eg[:subcommittee]),
32
- workgroup: RelatonBib.array(eg[:workgroup]),
33
- secretariat: eg[:secretariat],
34
- )
35
- end
8
+ #
9
+ # Ovverides superclass's method
10
+ #
11
+ # @param item [Hash]
12
+ # @retirn [RelatonIsoBib::IsoBibliographicItem]
13
+ def bib_item(item)
14
+ IsoBibliographicItem.new(**item)
15
+ end
36
16
 
37
- # @param ret [Hash]
38
- def ics_hash_to_bib(ret)
39
- ret[:ics] = RelatonBib.array(ret[:ics]).map do |ics|
40
- Ics.new(ics[:code] || ics)
41
- end
42
- end
17
+ #
18
+ # Ovverides superclass's method
19
+ #
20
+ # @param title [Hash]
21
+ # @return [RelatonBib::TypedTitleString]
22
+ def typed_title_strig(title)
23
+ RelatonBib::TypedTitleString.new(**title)
24
+ end
43
25
 
44
- # @param ret [Hash]
45
- def structuredidentifier_hash_to_bib(ret)
46
- return unless ret[:structuredidentifier]
26
+ # @param ret [Hash]
27
+ def editorialgroup_hash_to_bib(ret)
28
+ eg = ret[:editorialgroup]
29
+ return unless eg
47
30
 
48
- ret[:structuredidentifier] = RelatonIsoBib::StructuredIdentifier.new(**ret[:structuredidentifier])
31
+ ret[:editorialgroup] = EditorialGroup.new(
32
+ technical_committee: RelatonBib.array(eg[:technical_committee]),
33
+ subcommittee: RelatonBib.array(eg[:subcommittee]),
34
+ workgroup: RelatonBib.array(eg[:workgroup]),
35
+ secretariat: eg[:secretariat],
36
+ )
37
+ end
38
+
39
+ # @param ret [Hash]
40
+ def ics_hash_to_bib(ret)
41
+ ret[:ics] = RelatonBib.array(ret[:ics]).map do |ics|
42
+ Ics.new(ics[:code] || ics)
49
43
  end
50
44
  end
45
+
46
+ # @param ret [Hash]
47
+ def structuredidentifier_hash_to_bib(ret)
48
+ return unless ret[:structuredidentifier]
49
+
50
+ ret[:structuredidentifier] = RelatonIsoBib::StructuredIdentifier.new(**ret[:structuredidentifier])
51
+ end
52
+
53
+ def create_doctype(**args)
54
+ DocumentType.new(**args)
55
+ end
51
56
  end
52
57
  end
@@ -18,22 +18,16 @@ end
18
18
  module RelatonIsoBib
19
19
  # Bibliographic item.
20
20
  class IsoBibliographicItem < RelatonBib::BibliographicItem
21
- DOCTYPES = %w[
22
- international-standard technical-specification technical-report
23
- publicly-available-specification international-workshop-agreement guide
24
- amendment technical-corrigendum directive
25
- ].freeze
26
-
27
21
  SUBDOCTYPES = %w[specification method-of-test vocabulary code-of-practice].freeze
28
22
 
29
23
  # @return [RelatonIsoBib::StructuredIdentifier]
30
24
  attr_reader :structuredidentifier
31
25
 
32
- # @!attribute [r] title
33
- # @return [Array<RelatonBib::TypedTitleString>]
26
+ # @return [String, nil]
27
+ attr_reader :stagename
34
28
 
35
- # @return [String, NilClass]
36
- attr_reader :doctype, :stagename
29
+ # @!attribute [r] subdoctype
30
+ # @return [RelatonIsoBib::DocumentType]
37
31
 
38
32
  # @return [Boolean, nil]
39
33
  attr_reader :horizontal
@@ -64,18 +58,13 @@ module RelatonIsoBib
64
58
  # @param classification [RelatonBib::Classification, NilClass]
65
59
  # @param validity [RelatonBib:Validity, NilClass]
66
60
  # @param docid [Array<RelatonBib::DocumentIdentifier>]
67
- # @param doctype [String, nil]
61
+ # @param doctype [RelatonIsoBib::DocumentType]
68
62
  # @param subdoctype [String, nil]
69
63
  # @param horizontal [Boolean, nil]
70
64
  # @param structuredidentifier [RelatonIsoBib::StructuredIdentifier]
71
65
  # @param stagename [String, NilClass]
72
66
  #
73
- # @param title [Array<Hash>]
74
- # @option title [String] :title_intro
75
- # @option title [String] :title_main
76
- # @option title [String] :title_part
77
- # @option title [String] :language
78
- # @option title [String] :script
67
+ # @param title [Array<Hash, RelatonBib::TypedTitleString>, RelatonBib::TypedTitleStringCollection]
79
68
  #
80
69
  # @param editorialgroup [Hash, RelatonIsoBib::EditorialGroup]
81
70
  # @option workgrpup [String] :name
@@ -128,8 +117,6 @@ module RelatonIsoBib
128
117
  #
129
118
  # @raise [ArgumentError]
130
119
  def initialize(**args)
131
- check_doctype args[:doctype]
132
-
133
120
  args[:type] ||= "standard"
134
121
  arg_names = %i[
135
122
  id title docnumber language script docstatus date abstract contributor
@@ -183,7 +170,7 @@ module RelatonIsoBib
183
170
  if block_given? then yield b
184
171
  elsif opts[:bibdata] && has_ext_attrs?
185
172
  ext = b.ext do
186
- b.doctype doctype if doctype
173
+ doctype.to_xml b if doctype
187
174
  b.subdoctype subdoctype if subdoctype
188
175
  b.horizontal horizontal unless horizontal.nil?
189
176
  editorialgroup&.to_xml b
@@ -224,15 +211,6 @@ module RelatonIsoBib
224
211
 
225
212
  private
226
213
 
227
- # @param doctype [String]
228
- # @raise ArgumentError
229
- def check_doctype(doctype)
230
- if doctype && !self.class::DOCTYPES.include?(doctype)
231
- Util.warn "WARNING: invalid doctype: #{doctype}"
232
- Util.warn "Allowed doctypes are: #{self.class::DOCTYPES.join(', ')}"
233
- end
234
- end
235
-
236
214
  def makeid(id, attribute, _delim = "") # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize
237
215
  return nil if attribute && !@id_attribute
238
216
 
@@ -1,3 +1,3 @@
1
1
  module RelatonIsoBib
2
- VERSION = "1.16.2".freeze
2
+ VERSION = "1.17.0".freeze
3
3
  end
@@ -4,6 +4,7 @@ require "relaton_bib"
4
4
  require "relaton_iso_bib/version"
5
5
  require "relaton_iso_bib/config"
6
6
  require "relaton_iso_bib/util"
7
+ require "relaton_iso_bib/document_type"
7
8
  require "relaton_iso_bib/iso_bibliographic_item"
8
9
  require "digest/md5"
9
10
 
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
28
28
 
29
29
  spec.add_dependency "isoics", "~> 0.1.6"
30
- spec.add_dependency "relaton-bib", "~> 1.16.0"
30
+ spec.add_dependency "relaton-bib", "~> 1.17.0"
31
31
  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: 1.16.2
4
+ version: 1.17.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: 2023-11-15 00:00:00.000000000 Z
11
+ date: 2023-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: isoics
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.16.0
33
+ version: 1.17.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.16.0
40
+ version: 1.17.0
41
41
  description: 'RelatonIsoBib: Ruby ISOXMLDOC impementation.'
42
42
  email:
43
43
  - open.source@ribose.com
@@ -64,6 +64,7 @@ files:
64
64
  - grammars/relaton-iso.rng
65
65
  - lib/relaton_iso_bib.rb
66
66
  - lib/relaton_iso_bib/config.rb
67
+ - lib/relaton_iso_bib/document_type.rb
67
68
  - lib/relaton_iso_bib/editorial_group.rb
68
69
  - lib/relaton_iso_bib/hash_converter.rb
69
70
  - lib/relaton_iso_bib/ics.rb