pubid-cen 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9e1da29b88d15117361e26282da95f073c8027ff11e82b1dc2e68a8e5481231f
4
+ data.tar.gz: 4e262d7c9e52228f282e82b794d6036a7fdf85d59854fa6be1025da067af54ed
5
+ SHA512:
6
+ metadata.gz: 210ce4b95af59951c42d34cadfafe657b07af6ea3fe29bf7a3c82453fb7c0e4552b1f4f04e26f1852ae9b7e0785ed94e386743da07ff2f0b3641b31c3496602e
7
+ data.tar.gz: c6f3e4cc992bb794e619d30bf9eef992f5bddb5dc7dd1c91f7675439db78ed5e62a7103b3ad444385a2e11a14db985a5d8483920c113345a064940f192580877
data/LICENSE.txt ADDED
@@ -0,0 +1,25 @@
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2018, Ribose
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.adoc ADDED
@@ -0,0 +1,26 @@
1
+ = JIS publication identifiers ("CEN PubID")
2
+
3
+ == Purpose
4
+
5
+ This gem implements a mechanism to parse and utilize CEN publication
6
+ identifiers.
7
+
8
+ == Use cases to support
9
+
10
+ . generate updated PubID
11
+
12
+ == Usage
13
+
14
+ === Identifier creation
15
+
16
+ Basic usage of the pubid-cen gem starts with the `Identifier#create` method.
17
+
18
+ [source,ruby]
19
+ ----
20
+ require "pubid-cen"
21
+
22
+ pubid = Pubid::Cen::Identifier.create(number: 1234, part: 1, year: 1999)
23
+ pubid.to_s
24
+
25
+ => "EN 1234-1:1999"
26
+ ----
@@ -0,0 +1,5 @@
1
+ module Pubid::Cen
2
+ module Errors
3
+ class ParseTypeError < StandardError; end
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ module Pubid::Cen
2
+ module Identifier
3
+ class Amendment < Base
4
+ def_delegators 'Pubid::Cen::Identifier::Amendment', :type
5
+ attr_accessor :base
6
+
7
+ def initialize(base: nil, **opts)
8
+ super(**opts)
9
+ @base = base
10
+ end
11
+
12
+ def self.type
13
+ { key: :amd, title: "Amendment" }
14
+ end
15
+
16
+ def self.get_renderer_class
17
+ Renderer::Amendment
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,60 @@
1
+ require 'forwardable'
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class Base < Pubid::Core::Identifier::Base
6
+ extend Forwardable
7
+
8
+ attr_accessor :supplements
9
+
10
+ def self.type
11
+ { key: :en, title: "European Norm" }
12
+ end
13
+
14
+ # @param month [Integer] document's month
15
+ # @param edition [String] document's edition version, e.g. "3.0", "1.0"
16
+ def initialize(publisher: "EN", part: nil, stage: nil, incorporated_supplements: nil, **opts)
17
+ super(**opts.merge(publisher: publisher))
18
+ @part = part if part
19
+ @stage = Identifier.parse_stage(stage) if stage
20
+ @supplements = incorporated_supplements
21
+ end
22
+
23
+ class << self
24
+ def transform(params)
25
+ identifier_params = params.map do |k, v|
26
+ get_transformer_class.new.apply(k => v)
27
+ end.inject({}, :merge)
28
+
29
+ if identifier_params[:supplement]
30
+ return transform_supplement(
31
+ identifier_params[:supplement],
32
+ identifier_params.dup.tap { |h| h.delete(:supplement) }
33
+ )
34
+ end
35
+
36
+ Identifier.create(**identifier_params)
37
+ end
38
+
39
+ def transform_supplement(supplement_params, base_params)
40
+ Identifier.create(number: supplement_params[:number],
41
+ year: supplement_params[:year],
42
+ type: supplement_params[:type],
43
+ base: Identifier.create(**base_params))
44
+ end
45
+
46
+ def get_parser_class
47
+ Parser
48
+ end
49
+
50
+ def get_renderer_class
51
+ Renderer::Base
52
+ end
53
+
54
+ def get_transformer_class
55
+ Transformer
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../renderer/guide"
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class CenWorkshopAgreement < Base
6
+ def_delegators 'Pubid::Cen::Identifier::CenWorkshopAgreement', :type
7
+
8
+ def self.get_renderer_class
9
+ Renderer::CenWorkshopAgreement
10
+ end
11
+
12
+ def self.type
13
+ { key: :cwa, title: "Cen Workshop Agreement", short: "CWA" }
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module Pubid::Cen
2
+ module Identifier
3
+ class Corrigendum < Base
4
+ def_delegators 'Pubid::Cen::Identifier::Corrigendum', :type
5
+ attr_accessor :base
6
+
7
+ def initialize(number: nil, base: nil, **opts)
8
+ super(**opts.merge(number: number))
9
+ @base = base
10
+ end
11
+
12
+ def self.type
13
+ { key: :cor, title: "corrigendum" }
14
+ end
15
+
16
+ def self.get_renderer_class
17
+ Renderer::Corrigendum
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../renderer/guide"
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class Guide < Base
6
+ def_delegators 'Pubid::Cen::Identifier::Guide', :type
7
+
8
+ def self.get_renderer_class
9
+ Renderer::Guide
10
+ end
11
+
12
+ def self.type
13
+ { key: :guide, title: "Guide", short: "Guide" }
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../renderer/guide"
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class HarmonizationDocument < Base
6
+ def_delegators 'Pubid::Cen::Identifier::HarmonizationDocument', :type
7
+
8
+ def self.get_renderer_class
9
+ Renderer::HarmonizationDocument
10
+ end
11
+
12
+ def self.type
13
+ { key: :hd, title: "Harmonization Document", short: "HD" }
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../renderer/technical_report"
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class TechnicalReport < Base
6
+ def_delegators 'Pubid::Cen::Identifier::TechnicalReport', :type
7
+
8
+ def self.type
9
+ { key: :tr, title: "Technical Report", short: "TR" }
10
+ end
11
+
12
+ def self.get_renderer_class
13
+ Renderer::TechnicalReport
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../renderer/technical_specification"
2
+
3
+ module Pubid::Cen
4
+ module Identifier
5
+ class TechnicalSpecification < Base
6
+ def_delegators 'Pubid::Cen::Identifier::TechnicalSpecification', :type
7
+
8
+ def self.type
9
+ { key: :ts, title: "Technical Specification", short: "TS" }
10
+ end
11
+
12
+ def self.get_renderer_class
13
+ Renderer::TechnicalSpecification
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ module Pubid::Cen
2
+ module Identifier
3
+ class << self
4
+ include Pubid::Core::Identifier
5
+
6
+ # @see Pubid::Identifier::Base.parse
7
+ def parse(*args)
8
+ Base.parse(*args)
9
+ end
10
+
11
+ def resolve_identifier(parameters = {})
12
+ return @config.default_type.new(**parameters) if parameters[:type].nil?
13
+
14
+ @config.types.each do |identifier_type|
15
+ return identifier_type.new(**parameters) if identifier_type.type_match?(parameters)
16
+ end
17
+
18
+ raise Errors::ParseTypeError, "cannot parse type #{parameters[:type]}"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,47 @@
1
+ module Pubid::Cen
2
+ class Parser < Pubid::Core::Parser
3
+ rule(:part) do
4
+ (str("-") >> digits.as(:part)).repeat
5
+ end
6
+
7
+ rule(:organization) do
8
+ str("EN") | str("CEN") | str("CLC")
9
+ end
10
+
11
+ rule(:originator) do
12
+ organization.as(:publisher) >>
13
+ (space? >> (str("/") | str("-")) >> organization.as(:copublisher)).repeat
14
+ end
15
+
16
+ rule(:type) do
17
+ (str("/") | space).maybe >>
18
+ array_to_str(
19
+ Identifier.config.types.map { |type| [type.type[:short], type.type[:short]&.upcase] }
20
+ .flatten.compact).as(:type)
21
+ end
22
+
23
+ rule(:stage) do
24
+ (str("pr") | str("Fpr")).as(:stage)
25
+ end
26
+
27
+ rule(:supplement_matcher) do
28
+ ((str("AC").as(:type) >> digits.as(:number).maybe) |
29
+ (str("A").as(:type) >> digits.as(:number))) >> str(":") >> year
30
+ end
31
+
32
+ rule(:incorporated_supplement) do
33
+ str("+") >> supplement_matcher.as(:incorporated_supplements)
34
+ end
35
+
36
+ rule(:supplement) do
37
+ str("/") >> supplement_matcher.as(:supplement)
38
+ end
39
+
40
+ rule(:identifier) do
41
+ stage.maybe >> originator.maybe >> type.maybe >> space >> digits.as(:number) >> part >>
42
+ (str(":") >> year).maybe >> supplement.maybe >> incorporated_supplement.repeat
43
+ end
44
+
45
+ rule(:root) { identifier }
46
+ end
47
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen
4
+ module Renderer
5
+ class Amendment < Pubid::Core::Renderer::Base
6
+ def render_identifier(params)
7
+ if params[:base].is_a?(Identifier::Base)
8
+ "%{base}/A%{number}%{year}" % params
9
+ else
10
+ "+A%{number}%{year}" % params
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ module Pubid::Cen::Renderer
2
+ class Base < Pubid::Core::Renderer::Base
3
+ def render_identifier(params)
4
+ "%{stage}%{publisher}%{type} %{number}%{part}%{year}%{supplements}" % params
5
+ end
6
+
7
+ def render_type(type, _opts, _params)
8
+ ""
9
+ end
10
+
11
+ def render_part(part, opts, _params)
12
+ return "-#{part.reverse.join('-')}" if part.is_a?(Array)
13
+
14
+ "-#{part}"
15
+ end
16
+
17
+ def sort_supplements(supplements)
18
+ supplements.sort_by { |a| (a.year * 100) + a.number.to_i }
19
+ end
20
+
21
+ def render_supplements(supplements, _opts, _params)
22
+ sort_supplements(supplements).join
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen::Renderer
4
+ class CenWorkshopAgreement < Base
5
+ def render_publisher(publisher, _opts, params)
6
+ ""
7
+ end
8
+
9
+ def render_type(type, _opts, _params)
10
+ "CWA"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen
4
+ module Renderer
5
+ class Corrigendum < Pubid::Core::Renderer::Base
6
+ def render_identifier(params)
7
+ if params[:base].is_a?(Identifier::Base)
8
+ "%{base}/AC%{number}%{year}" % params
9
+ else
10
+ "+AC%{number}%{year}" % params
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen::Renderer
4
+ class Guide < Base
5
+ def render_type(type, _opts, _params)
6
+ " Guide"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen::Renderer
4
+ class HarmonizationDocument < Base
5
+ def render_publisher(publisher, _opts, params)
6
+ ""
7
+ end
8
+
9
+ def render_type(type, _opts, _params)
10
+ "HD"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen::Renderer
4
+ class TechnicalReport < Base
5
+ def render_type(type, _opts, _params)
6
+ "/TR"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative "base"
2
+
3
+ module Pubid::Cen::Renderer
4
+ class TechnicalSpecification < Base
5
+ def render_type(type, _opts, _params)
6
+ "/TS"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,40 @@
1
+ require_relative "identifier/base"
2
+ require_relative "renderer/base"
3
+
4
+ module Pubid::Cen
5
+ class Transformer < Parslet::Transform
6
+ rule(incorporated_supplements: subtree(:incorporated_supplements)) do |context|
7
+ if context[:incorporated_supplements].is_a?(Array)
8
+ { incorporated_supplements: context[:incorporated_supplements].map do |supplement|
9
+ convert_supplement(supplement)
10
+ end
11
+ }
12
+ else
13
+ { incorporated_supplements: [convert_supplement(context[:incorporated_supplements])] }
14
+ end
15
+ end
16
+
17
+ rule(supplement: subtree(:supplement)) do |context|
18
+ context[:supplement][:type] = convert_supplement_type(context[:supplement][:type])
19
+ context
20
+ end
21
+
22
+ def self.convert_supplement(supplement)
23
+ case supplement[:type]
24
+ when "A"
25
+ Identifier::Amendment.new(**supplement)
26
+ when "AC"
27
+ Identifier::Corrigendum.new(**supplement)
28
+ end
29
+ end
30
+
31
+ def self.convert_supplement_type(type)
32
+ case type
33
+ when "A"
34
+ :amd
35
+ when "AC"
36
+ :cor
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,5 @@
1
+ module Pubid
2
+ module Cen
3
+ VERSION = "0.1.1".freeze
4
+ end
5
+ end
data/lib/pubid/cen.rb ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "parslet"
4
+
5
+ module Pubid
6
+ end
7
+
8
+ require "pubid-core"
9
+
10
+ require_relative "cen/errors"
11
+ require_relative "cen/transformer"
12
+ require_relative "cen/identifier/base"
13
+ require_relative "cen/identifier/technical_specification"
14
+ require_relative "cen/identifier/technical_report"
15
+ require_relative "cen/identifier/guide"
16
+ require_relative "cen/identifier/amendment"
17
+ require_relative "cen/identifier/corrigendum"
18
+ require_relative "cen/identifier/cen_workshop_agreement"
19
+ require_relative "cen/identifier/harmonization_document"
20
+ require_relative "cen/renderer/base"
21
+ require_relative "cen/renderer/technical_specification"
22
+ require_relative "cen/renderer/technical_report"
23
+ require_relative "cen/renderer/guide"
24
+ require_relative "cen/renderer/amendment"
25
+ require_relative "cen/renderer/corrigendum"
26
+ require_relative "cen/renderer/cen_workshop_agreement"
27
+ require_relative "cen/renderer/harmonization_document"
28
+ require_relative "cen/parser"
29
+ require_relative "cen/identifier"
30
+
31
+ config = Pubid::Core::Configuration.new
32
+ config.default_type = Pubid::Cen::Identifier::Base
33
+ config.types = [Pubid::Cen::Identifier::Base,
34
+ Pubid::Cen::Identifier::TechnicalSpecification,
35
+ Pubid::Cen::Identifier::TechnicalReport,
36
+ Pubid::Cen::Identifier::Guide,
37
+ Pubid::Cen::Identifier::Amendment,
38
+ Pubid::Cen::Identifier::Corrigendum,
39
+ Pubid::Cen::Identifier::CenWorkshopAgreement,
40
+ Pubid::Cen::Identifier::HarmonizationDocument]
41
+ config.type_names = {}.freeze
42
+ config.stages = { "abbreviations" => { "Fpr" => [], "pr" => [] } }
43
+
44
+ Pubid::Cen::Identifier.set_config(config)
data/lib/pubid-cen.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "pubid/cen"
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pubid-cen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-04-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: lightly
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: parslet
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pubid-core
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.8.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.8.0
111
+ description: Library to generate, parse and manipulate CEN PubID.
112
+ email:
113
+ - open.source@ribose.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files:
117
+ - README.adoc
118
+ - LICENSE.txt
119
+ files:
120
+ - LICENSE.txt
121
+ - README.adoc
122
+ - lib/pubid-cen.rb
123
+ - lib/pubid/cen.rb
124
+ - lib/pubid/cen/errors.rb
125
+ - lib/pubid/cen/identifier.rb
126
+ - lib/pubid/cen/identifier/amendment.rb
127
+ - lib/pubid/cen/identifier/base.rb
128
+ - lib/pubid/cen/identifier/cen_workshop_agreement.rb
129
+ - lib/pubid/cen/identifier/corrigendum.rb
130
+ - lib/pubid/cen/identifier/guide.rb
131
+ - lib/pubid/cen/identifier/harmonization_document.rb
132
+ - lib/pubid/cen/identifier/technical_report.rb
133
+ - lib/pubid/cen/identifier/technical_specification.rb
134
+ - lib/pubid/cen/parser.rb
135
+ - lib/pubid/cen/renderer/amendment.rb
136
+ - lib/pubid/cen/renderer/base.rb
137
+ - lib/pubid/cen/renderer/cen_workshop_agreement.rb
138
+ - lib/pubid/cen/renderer/corrigendum.rb
139
+ - lib/pubid/cen/renderer/guide.rb
140
+ - lib/pubid/cen/renderer/harmonization_document.rb
141
+ - lib/pubid/cen/renderer/technical_report.rb
142
+ - lib/pubid/cen/renderer/technical_specification.rb
143
+ - lib/pubid/cen/transformer.rb
144
+ - lib/pubid/cen/version.rb
145
+ homepage: https://github.com/metanorma/pubid-cen
146
+ licenses:
147
+ - BSD-2-Clause
148
+ metadata: {}
149
+ post_install_message:
150
+ rdoc_options: []
151
+ require_paths:
152
+ - lib
153
+ required_ruby_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: 2.5.0
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ requirements: []
164
+ rubygems_version: 3.0.3.1
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Library to generate, parse and manipulate CEN PubID.
168
+ test_files: []