pubid-core 1.5.1 → 1.5.2

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: a7ed70ed2ab41dfc350391b2527d7772161b013b66ca0d97f9fe0588615a3ca5
4
- data.tar.gz: 7bbe6f3d057d94d8038b904cb2035e774f9d90b9afb039c55ba5acda0f242850
3
+ metadata.gz: d11f67c2e955fc7a68dffe340770552b3148b1767bd3095600c35ec9696e239c
4
+ data.tar.gz: f1db402f0c58b0340ea34da7b129021be3985aed9e6573d462645240717062b3
5
5
  SHA512:
6
- metadata.gz: 76d401e52d0a98935c9df29b45882199c3f7860d74f2c3c0b030c11bd54b46492087835e857c9a8c83204702beec69e4ab78060f796c24b124e306eb2c64e4dd
7
- data.tar.gz: a211cf01b2fd25645c4d672e0ccca74ea0f63e0cecd60fe68f1a063b724014d4c36975579534ea6efc7cd37bcb3d279c78789a7343fab808a32c297b7255d90b
6
+ metadata.gz: 330a2e07981ef86fa2c26ac46636d91c8737fb6a0a11e84e2b91fc15f9c7b2eee98f3d6f0792534f924cbb343d80df634febfabc4325c87f5eede56481d10d2c
7
+ data.tar.gz: e6b481d0431d82220983541c2f7162d087bc38894d9b8c8d7c6758b02adc87009a4b195ee639626af6a436ad833f6c4441b38d8c41553ff882b1c0405540f029
@@ -107,6 +107,18 @@ module Pubid::Core
107
107
  new(**identifier_params)
108
108
  end
109
109
 
110
+ def descendants
111
+ ObjectSpace.each_object(Class).select { |klass| klass < self }
112
+ end
113
+
114
+ # @param type [Symbol, String] eg. :tr, :ts, "TS"
115
+ # @return [Boolean] true if provided type matches with identifier's class type
116
+ def has_type?(type)
117
+ return type == self.type[:key] if type.is_a?(Symbol)
118
+
119
+ self.type.key?(:values) ? self.type[:values].include?(type) : type.to_s.downcase.to_sym == self.type[:key]
120
+ end
121
+
110
122
  def get_amendment_class
111
123
  Amendment
112
124
  end
@@ -0,0 +1,39 @@
1
+ module Pubid::Core
2
+ class Type
3
+ attr_accessor :type
4
+ # Create new type
5
+ # @param type [Symbol]
6
+ def initialize(type = DEFAULT_TYPE)
7
+ type = type.to_s.downcase.to_sym unless type.is_a?(Symbol)
8
+
9
+ raise Errors::WrongTypeError, "#{type} type is not available" unless TYPE_NAMES.key?(type)
10
+
11
+ @type = type
12
+ end
13
+
14
+ def self.parse(type_string)
15
+ TYPE_NAMES.each do |type, values|
16
+ return new(type) if values[:short] == type_string
17
+ end
18
+ raise Errors::ParseTypeError, "Cannot parse '#{type_string}' type"
19
+ end
20
+
21
+ def to_s(format = :short)
22
+ TYPE_NAMES[type][format]
23
+ end
24
+
25
+ def ==(other)
26
+ return type == other if other.is_a?(Symbol)
27
+
28
+ return false if other.nil?
29
+
30
+ type == other.type
31
+ end
32
+
33
+ def self.has_type?(type)
34
+ TYPE_NAMES.any? do |_, v|
35
+ v[:short] == type
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Core
3
- VERSION = "1.5.1".freeze
3
+ VERSION = "1.5.2".freeze
4
4
  end
5
5
  end
data/lib/pubid/core.rb CHANGED
@@ -2,6 +2,7 @@ require "parslet"
2
2
 
3
3
  require_relative "core/errors"
4
4
  require_relative "core/parser"
5
+ require_relative "core/type"
5
6
  require_relative "core/supplement"
6
7
  require_relative "core/amendment"
7
8
  require_relative "core/corrigendum"
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.5.1
4
+ version: 1.5.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: 2023-01-24 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -76,6 +76,7 @@ files:
76
76
  - lib/pubid/core/stage.rb
77
77
  - lib/pubid/core/supplement.rb
78
78
  - lib/pubid/core/transformer.rb
79
+ - lib/pubid/core/type.rb
79
80
  - lib/pubid/core/version.rb
80
81
  homepage: https://github.com/metanorma/pubid-core
81
82
  licenses: