pubid-bsi 0.2.0 → 0.3.0

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: 8301f114cdb297b45e6c558830ebc198b8fe688c871610f09feb18a758213521
4
- data.tar.gz: ad2e418836fea9ee47494c75a43006cc5d32d4ed795b39f39a5ff419db9c7383
3
+ metadata.gz: 93e79aa30559f8e41d5b9cb74e4b3d5e808188a615d8f3311fadfdf6709d58e4
4
+ data.tar.gz: e544f503afb1e40eb7ba2cec6efa945357bac3e72234e0ffe05f5f87ce2c07ad
5
5
  SHA512:
6
- metadata.gz: 68a2ab714684c24481819a353529a69bdb1f891395a9ce61915610d14860ad0b3b552e4bdf26e3ff84dbff7a17bd951631c19e8f260c15c2883479793fda2d1f
7
- data.tar.gz: 4d8215a02e26eee04cd7240f2351ac089ab19117a6e100725045b6b79f555369ae4b8f242e27abbb661384b08e3fa0c0a6d80cb22334ff4e995b29d3602e34b1
6
+ metadata.gz: 7cde8daf524af5296c9ed7ace2eb757b47ddeec768eee945d47a7eb3d305e12fa1495d9a88497a63ee6895bd4e12cdaa49a0d578fb44599252739d3e975a4da2
7
+ data.tar.gz: 208451435217ad215d3209799d929d14329cc7d026e4d532667732a4900b227327190ea78fdf39ed8cdf57fb3903abed97223bfbe49308630cc3fa8de44189c8
@@ -43,9 +43,21 @@ module Pubid::Bsi
43
43
 
44
44
  return transform_expert_commentary(identifier_params) if identifier_params[:expert_commentary]
45
45
 
46
+ return transform_collection(identifier_params) if identifier_params[:second_number]
47
+
46
48
  Identifier.create(**identifier_params)
47
49
  end
48
50
 
51
+ def transform_collection(params)
52
+ first_identifier_params =
53
+ params.reject { |k, _| %i[second_number year supplement].include?(k) }
54
+ second_identifier_params = first_identifier_params.dup
55
+ second_identifier_params[:number] = params[:second_number]
56
+ Collection.new(identifiers: [Identifier.create(**first_identifier_params),
57
+ Identifier.create(**second_identifier_params)],
58
+ **params.slice(:supplement, :year))
59
+ end
60
+
49
61
  def transform_expert_commentary(base_params)
50
62
  Identifier.create(type: :ec,
51
63
  base: Identifier.create(**base_params))
@@ -0,0 +1,22 @@
1
+ module Pubid::Bsi
2
+ module Identifier
3
+ class Collection < Base
4
+ def_delegators 'Pubid::Bsi::Identifier::Collection', :type
5
+
6
+ attr_accessor :identifiers
7
+
8
+ def initialize(identifiers:, **args)
9
+ @identifiers = identifiers
10
+ super(publisher: nil, number: nil, **args)
11
+ end
12
+
13
+ def self.type
14
+ { key: :collection, title: "Collection" }
15
+ end
16
+
17
+ def to_s
18
+ Renderer::Collection.new(get_params).render
19
+ end
20
+ end
21
+ end
22
+ end
@@ -44,10 +44,14 @@ module Pubid::Bsi
44
44
  space >> str("PDF").as(:pdf)
45
45
  end
46
46
 
47
+ rule(:second_number) do
48
+ str("/") >> digits.as(:second_number)
49
+ end
50
+
47
51
  rule(:identifier) do
48
52
  str("BSI ").maybe >> type >> space >>
49
53
  (
50
- (digits.as(:number) >> part.maybe >> (space >> edition).maybe >>
54
+ (digits.as(:number) >> second_number.maybe >> part.maybe >> (space >> edition).maybe >>
51
55
  (space? >> str(":") >> year >> (dash >> month_digits.as(:month)).maybe).maybe) |
52
56
  # exclude expert_commentary and translation from adopted scope
53
57
  (expert_commentary.absent? >> translation.absent? >> space? >>
@@ -0,0 +1,15 @@
1
+ module Pubid::Bsi::Renderer
2
+ class Collection < Pubid::Core::Renderer::Base
3
+ def render_identifier(params)
4
+ "%{identifiers}%{year}%{supplement}" % params
5
+ end
6
+
7
+ def render_supplement(supplement, _opts, _params)
8
+ supplement.to_s
9
+ end
10
+
11
+ def render_identifiers(identifiers, _opts, _params)
12
+ "#{identifiers.first}/" + identifiers[1..-1].map(&:number).join("/")
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Bsi
3
- VERSION = "0.2.0".freeze
3
+ VERSION = "0.3.0".freeze
4
4
  end
5
5
  end
data/lib/pubid/bsi.rb CHANGED
@@ -22,6 +22,7 @@ require_relative "bsi/identifier/amendment"
22
22
  require_relative "bsi/identifier/corrigendum"
23
23
  require_relative "bsi/identifier/national_annex"
24
24
  require_relative "bsi/identifier/expert_commentary"
25
+ require_relative "bsi/identifier/collection"
25
26
  require_relative "bsi/renderer/base"
26
27
  require_relative "bsi/renderer/publicly_available_specification"
27
28
  require_relative "bsi/renderer/published_document"
@@ -31,6 +32,7 @@ require_relative "bsi/renderer/amendment"
31
32
  require_relative "bsi/renderer/corrigendum"
32
33
  require_relative "bsi/renderer/national_annex"
33
34
  require_relative "bsi/renderer/expert_commentary"
35
+ require_relative "bsi/renderer/collection"
34
36
  require_relative "bsi/parser"
35
37
  require_relative "bsi/identifier"
36
38
 
@@ -44,7 +46,8 @@ config.types = [Pubid::Bsi::Identifier::BritishStandard,
44
46
  Pubid::Bsi::Identifier::Amendment,
45
47
  Pubid::Bsi::Identifier::Corrigendum,
46
48
  Pubid::Bsi::Identifier::NationalAnnex,
47
- Pubid::Bsi::Identifier::ExpertCommentary]
49
+ Pubid::Bsi::Identifier::ExpertCommentary,
50
+ Pubid::Bsi::Identifier::Collection]
48
51
  config.type_names = {
49
52
  bs: {
50
53
  long: "British Standard",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid-bsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.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-04-07 00:00:00.000000000 Z
11
+ date: 2023-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -168,6 +168,7 @@ files:
168
168
  - lib/pubid/bsi/identifier/amendment.rb
169
169
  - lib/pubid/bsi/identifier/base.rb
170
170
  - lib/pubid/bsi/identifier/british_standard.rb
171
+ - lib/pubid/bsi/identifier/collection.rb
171
172
  - lib/pubid/bsi/identifier/corrigendum.rb
172
173
  - lib/pubid/bsi/identifier/draft_document.rb
173
174
  - lib/pubid/bsi/identifier/expert_commentary.rb
@@ -178,6 +179,7 @@ files:
178
179
  - lib/pubid/bsi/parser.rb
179
180
  - lib/pubid/bsi/renderer/amendment.rb
180
181
  - lib/pubid/bsi/renderer/base.rb
182
+ - lib/pubid/bsi/renderer/collection.rb
181
183
  - lib/pubid/bsi/renderer/corrigendum.rb
182
184
  - lib/pubid/bsi/renderer/draft_document.rb
183
185
  - lib/pubid/bsi/renderer/expert_commentary.rb