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 +4 -4
- data/lib/pubid/core/identifier.rb +10 -22
- data/lib/pubid/core/transformer.rb +42 -0
- data/lib/pubid/core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2ec998c6f62ddf6387a254425f4989052de90cd44f60577c384f1371314e874
|
4
|
+
data.tar.gz: f9aa149ce454d7d8c674fe12c6c7dc9246ff06c6197c63686abaacd6babe15a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/pubid/core/version.rb
CHANGED
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
|
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-
|
11
|
+
date: 2022-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|