pubid-core 1.0.1 → 1.1.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: 6fc24ad8424ccb4843c213b8642d558e4139671d9f7a302246f917510a20ad71
4
- data.tar.gz: c8284af8dcb32ae4e13853ea8195e376769bbc745984f6639ee86780405f57d4
3
+ metadata.gz: f2ec998c6f62ddf6387a254425f4989052de90cd44f60577c384f1371314e874
4
+ data.tar.gz: f9aa149ce454d7d8c674fe12c6c7dc9246ff06c6197c63686abaacd6babe15a6
5
5
  SHA512:
6
- metadata.gz: 6dafa25189561f26dd3e3908294d4649af1c891175eb6b546ca8e95c90aafb4dfbde8b1fa4271ca8bb540ce3824947a7d7e08c10945853530615204692990504
7
- data.tar.gz: d7b4857f481c5aac96491c83b70367ebc50d3dd3e9d2ee4956d2c5b825f210657419e3778d23f3c8fccb975acd444c051c6aebb93eec392143bd35747218f831
6
+ metadata.gz: 502cca40f231aa67f96041c61cb82868a67a1db3b521d8a2e1f7431d3013dfe48d77e698139407c1640f23931d76766c92eeee36033f6f0de1424bd57f669ccc
7
+ data.tar.gz: 63ba052753612c1c239a5fc6bd71a3952f35dd6dd82715899fa02855479bb55039c71e6b2b7d5d13ab2d02abea638089ab96bc4eacf4c64a6bdfa9c5a27797ca
@@ -21,25 +21,9 @@ module Pubid::Core
21
21
  def initialize(publisher:, number:, copublisher: nil, part: nil, type: nil,
22
22
  year: nil, edition: nil, language: nil, amendments: nil,
23
23
  corrigendums: nil)
24
- if amendments
25
- @amendments = if amendments.is_a?(Array)
26
- amendments.map do |amendment|
27
- self.class.get_amendment_class.new(**amendment)
28
- end
29
- else
30
- [self.class.get_amendment_class.new(**amendments)]
31
- end
32
- end
33
- if corrigendums
34
- @corrigendums = if corrigendums.is_a?(Array)
35
- corrigendums.map do |corrigendum|
36
- self.class.get_corrigendum_class.new(**corrigendum)
37
- end
38
- else
39
- [self.class.get_corrigendum_class.new(**corrigendums)]
40
- end
41
- end
42
24
 
25
+ @amendments = amendments
26
+ @corrigendums = corrigendums
43
27
  @publisher = publisher.to_s
44
28
  @number = number
45
29
  @copublisher = copublisher if copublisher
@@ -72,6 +56,13 @@ module Pubid::Core
72
56
  def parse(code_or_params)
73
57
  params = code_or_params.is_a?(String) ?
74
58
  get_parser_class.new.parse(update_old_code(code_or_params)) : code_or_params
59
+ transform(params)
60
+ rescue Parslet::ParseFailed => failure
61
+ raise Errors::ParseError, "#{failure.message}\ncause: #{failure.parse_failure_cause.ascii_tree}"
62
+ end
63
+
64
+ # Transform parameters hash or array or hashes to identifier
65
+ def transform(params)
75
66
  # Parslet returns an array when match any copublisher
76
67
  # otherwise it's hash
77
68
  if params.is_a?(Array)
@@ -80,7 +71,7 @@ module Pubid::Core
80
71
  params.inject({}) do |r, i|
81
72
  result = r
82
73
  i.map {|k, v| get_transformer_class.new.apply(k => v).to_a.first }.each do |k, v|
83
- result = result.merge(k => r.key?(k) ? [v, r[k]] : v)
74
+ result = result.merge(k => r.key?(k) ? [v, r[k]].flatten : v)
84
75
  end
85
76
  result
86
77
  end
@@ -92,9 +83,6 @@ module Pubid::Core
92
83
  end.to_h)
93
84
  end
94
85
  # merge values repeating keys into array (for copublishers)
95
-
96
- rescue Parslet::ParseFailed => failure
97
- raise Errors::ParseError, "#{failure.message}\ncause: #{failure.parse_failure_cause.ascii_tree}"
98
86
  end
99
87
 
100
88
  def get_amendment_class
@@ -1,4 +1,46 @@
1
1
  module Pubid::Core
2
2
  class Transformer < Parslet::Transform
3
+ class << self
4
+ def get_amendment_class
5
+ Amendment
6
+ end
7
+
8
+ def get_corrigendum_class
9
+ Corrigendum
10
+ end
11
+ end
12
+
13
+ def initialize
14
+ super
15
+
16
+ rule(amendments: subtree(:amendments)) do |context|
17
+ if context[:amendments].is_a?(Array)
18
+ context[:amendments] = context[:amendments].map do |amendment|
19
+ self.class.get_amendment_class.new(version: amendment[:version], number: amendment[:number])
20
+ end
21
+ else
22
+ context[:amendments] =
23
+ [self.class.get_amendment_class.new(
24
+ version: context[:amendments][:version],
25
+ number: context[:amendments][:number])]
26
+
27
+ end
28
+ context
29
+ end
30
+
31
+ rule(corrigendums: subtree(:corrigendums)) do |context|
32
+ if context[:corrigendums].is_a?(Array)
33
+ context[:corrigendums] = context[:corrigendums].map do |corrigendum|
34
+ self.class.get_corrigendum_class.new(version: corrigendum[:version], number: corrigendum[:number])
35
+ end
36
+ else
37
+ context[:corrigendums] =
38
+ [self.class.get_corrigendum_class.new(
39
+ version: context[:corrigendums][:version],
40
+ number: context[:corrigendums][:number])]
41
+ end
42
+ context
43
+ end
44
+ end
3
45
  end
4
46
  end
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Core
3
- VERSION = "1.0.1".freeze
3
+ VERSION = "1.1.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.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: 2022-08-16 00:00:00.000000000 Z
11
+ date: 2022-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake