pubid-core 1.5.0 → 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: fe1c8b6b0226decbdfd993caaf75ad8e673ea91c86a78c4fa380d82ac8119d1c
4
- data.tar.gz: 5d07cdca4cdaf9febed8cb1e2d1bc18ffc503d6ad09359cb2002e4aaae13a2cc
3
+ metadata.gz: d11f67c2e955fc7a68dffe340770552b3148b1767bd3095600c35ec9696e239c
4
+ data.tar.gz: f1db402f0c58b0340ea34da7b129021be3985aed9e6573d462645240717062b3
5
5
  SHA512:
6
- metadata.gz: 7c7db091d747e05faab9c3cfb4ef42f3e65064e027cd5875eb888c5397852a286f03388da9941491a5eca184c00cdcf30a74b3185254e4343aee82b597abf9c0
7
- data.tar.gz: 3fceacbe396c2c8f627fd602f95132667162742e0d274f7fe649f323ef81c43e3684ad42fc626c8a841c41e1a81ce570b077a530685a9445a9b4eb92e21ce8e7
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
@@ -92,7 +92,7 @@ module Pubid::Core
92
92
  end
93
93
 
94
94
  def to_s(opts = {})
95
- abbr unless empty_abbr?(**opts)
95
+ empty_abbr?(**opts) ? "" : abbr
96
96
  end
97
97
  end
98
98
  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.0".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.0
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-05 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: