pubid-core 1.0.1 → 1.1.2

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: 452665bfc83c23fed5563fb65e94b05e003491474be0572c10628838bf9bb8d4
4
+ data.tar.gz: 2c5282618c3bd1e04f26760791371205383191ab752878ac74ed32ac61ff6a2d
5
5
  SHA512:
6
- metadata.gz: 6dafa25189561f26dd3e3908294d4649af1c891175eb6b546ca8e95c90aafb4dfbde8b1fa4271ca8bb540ce3824947a7d7e08c10945853530615204692990504
7
- data.tar.gz: d7b4857f481c5aac96491c83b70367ebc50d3dd3e9d2ee4956d2c5b825f210657419e3778d23f3c8fccb975acd444c051c6aebb93eec392143bd35747218f831
6
+ metadata.gz: 57ec902835845daa759d264308e0456851e202a791d0f2dac62c6fb5253202741420f47c9c45f2a2a7398a691e3c17a61c6189ab01f177cbf2b46eb47be15d08
7
+ data.tar.gz: ae150bad555421587020450b38fba534f1b94429ad7506ff6b32c0a0a4717be367ead10d5b5266259dbd4f9dfdc7a407e87acba122d7bd4f5562e643685c8a88
@@ -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
@@ -24,7 +24,9 @@ module Pubid::Core::Renderer
24
24
  end.compact.to_h
25
25
  end
26
26
 
27
- # render from hash keys
27
+ # Render identifier
28
+ # @param with_date [Boolean] include year in output
29
+ # @param with_language_code [:iso,:single] render document language as 2-letter ISO 639-1 language code or single code
28
30
  def render(with_date: true, with_language_code: :iso)
29
31
  params = prerender_params(@params,
30
32
  { with_date: with_date, with_language_code: with_language_code })
@@ -1,36 +1,36 @@
1
1
  module Pubid::Core
2
2
  class Supplement
3
3
  include Comparable
4
- attr_accessor :version, :number
4
+ attr_accessor :number, :year
5
5
 
6
- # Creates new supplement with provided version and optional number
7
- # @param version [Integer]
6
+ # Creates new supplement with provided update number and optional year
8
7
  # @param number [Integer]
9
- def initialize(version:, number: nil)
10
- @version, @number = version&.to_i, number&.to_i
8
+ # @param year [Integer]
9
+ def initialize(number:, year: nil)
10
+ @number, @year = number&.to_i, year&.to_i
11
11
  end
12
12
 
13
13
  def <=>(other)
14
- return 0 if number.nil? && other.number
14
+ return 0 if year.nil? && other.year
15
15
 
16
- return number <=> other.number if version == other.version
16
+ return year <=> other.year if number == other.number
17
17
 
18
- (version <=> other.version) || number <=> other.number
18
+ (number <=> other.number) || year <=> other.year
19
19
  end
20
20
 
21
21
  def render_pubid_number
22
- if @number
23
- "#{@version}:#{@number}"
22
+ if @year
23
+ "#{@number}:#{@year}"
24
24
  else
25
- "#{@version}"
25
+ "#{@number}"
26
26
  end
27
27
  end
28
28
 
29
29
  def render_urn_number
30
- if @number
31
- ":#{@number}:v#{@version}"
30
+ if @year
31
+ ":#{@year}:v#{@number}"
32
32
  else
33
- ":#{@version}:v1"
33
+ ":#{@number}:v1"
34
34
  end
35
35
  end
36
36
  end
@@ -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(number: amendment[:number], year: amendment[:year])
20
+ end
21
+ else
22
+ context[:amendments] =
23
+ [self.class.get_amendment_class.new(
24
+ number: context[:amendments][:number],
25
+ year: context[:amendments][:year])]
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(number: corrigendum[:number], year: corrigendum[:year])
35
+ end
36
+ else
37
+ context[:corrigendums] =
38
+ [self.class.get_corrigendum_class.new(
39
+ number: context[:corrigendums][:number],
40
+ year: context[:corrigendums][:year])]
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.2".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.2
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-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake