pubid-itu 0.1.2 → 1.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b6a9f43860cc646babf95c556cf4aa0169f847a26415503bfa0458dd0af9af1
4
- data.tar.gz: 6e5c30a16a55c467bb5b1d4ce00c2e6bbc7dec182b5e40815c8e8146669a10a7
3
+ metadata.gz: fd6fb5c62affc462cb749e627b0f57d5bcc7cd1a4b79f17880633d1646bf813c
4
+ data.tar.gz: 043e5a4076a4a9bdd4a3d1443a0718cccb662dae40f9ee4cbd15424e95893b98
5
5
  SHA512:
6
- metadata.gz: 4049ed45d386a01a4670397674340e7c287186399c4e4b417e54b21b902b4518cc5c8660b081ee1f53e6a9cc08d947cbb7a9a0730fd7d17e0cd04aed367ec94d
7
- data.tar.gz: c6fd2a5ad473a2325063b1112f578376d8a01947ddfdca133113a420a8357b2bdbd670b2583239ee70959fe41b80bf868dfd48e22b63215affa379d2ee55065d
6
+ metadata.gz: 6c119314e38f732ec94237214bf4f2c3315cf00552331037ad559ffd0a82ed3768b993b55ad162ab021c8cc134cdc319ef9027dc317d72d33ec0098b89d089b2
7
+ data.tar.gz: 1a3165167893ead8f406238d7d736100c4eb474d67c5df5c9d23511e19c963cdc41052c1a8c2ceb032eeed946ba9e7ec79dc7573ecb1a8a628373e3fe0c81a5a
data/i18n.yaml ADDED
@@ -0,0 +1,13 @@
1
+ publisher:
2
+ ITU:
3
+ ru: МСЭ
4
+ es: UIT
5
+ fr: UIT
6
+
7
+ type:
8
+ REC:
9
+ ru: Рек.
10
+ es: Rec.
11
+ fr: Rec.
12
+ cn: 建议书
13
+ ar: "التوصية"
@@ -3,6 +3,13 @@ module Pubid::Itu
3
3
  class Annex < Supplement
4
4
  def_delegators 'Pubid::Itu::Identifier::Annex', :type
5
5
 
6
+ attr_accessor :base
7
+
8
+ def initialize(base: nil, **opts)
9
+ super(**opts)
10
+ @base = base
11
+ end
12
+
6
13
  def self.type
7
14
  { key: :annex, title: "Annex" }
8
15
  end
@@ -47,12 +47,19 @@ module Pubid::Itu
47
47
  end
48
48
 
49
49
  def transform_supplements(type, identifier_params)
50
- Identifier.create(
51
- type: type,
52
- base: transform(
53
- **identifier_params.dup.tap { |h| h.delete(type) }),
54
- **identifier_params[type],
55
- )
50
+ if identifier_params[type].is_a?(Hash)
51
+ Identifier.create(
52
+ type: type,
53
+ base: transform(
54
+ **identifier_params.dup.tap { |h| h.delete(type) }),
55
+ **identifier_params[type],
56
+ )
57
+ else
58
+ Identifier.create(
59
+ type: type,
60
+ base: transform(**identifier_params.dup.tap { |h| h.delete(type) })
61
+ )
62
+ end
56
63
  end
57
64
 
58
65
  # Use Identifier#create to resolve identifier's type class
@@ -0,0 +1,15 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Contribution < Base
4
+ def_delegators 'Pubid::Itu::Identifier::Contribution', :type
5
+
6
+ def self.type
7
+ { key: :contribution, title: "Contribution" }
8
+ end
9
+
10
+ def self.get_renderer_class
11
+ Renderer::Contribution
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,7 @@ module Pubid::Itu
4
4
  def_delegators 'Pubid::Itu::Identifier::Question', :type
5
5
 
6
6
  def self.type
7
- { key: :question, title: "Question" }
7
+ { key: :question, title: "Question", short: :question }
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Pubid::Itu
4
4
  def_delegators 'Pubid::Itu::Identifier::Resolution', :type
5
5
 
6
6
  def self.type
7
- { key: :resolution, title: "Resolition" }
7
+ { key: :resolution, title: "Resolition", short: :resolution }
8
8
  end
9
9
  end
10
10
  end
@@ -9,7 +9,7 @@ module Pubid::Itu
9
9
  end
10
10
 
11
11
  def resolve_identifier(parameters = {})
12
- return Question.new(**parameters) if parameters[:series].to_s.match?(/^SG/)
12
+ return Question.new(**parameters) if parameters[:series].to_s.match?(/^SG/) && !parameters[:type]
13
13
 
14
14
  return Resolution.new(**parameters) if parameters[:series].to_s == "R"
15
15
 
@@ -88,6 +88,10 @@ module Pubid::Itu
88
88
  space >> str("Annex") >> space >> (match["A-Z"] >> digits.maybe >> str("+").maybe).as(:number).as(:annex)
89
89
  end
90
90
 
91
+ rule(:annex_to) do
92
+ str("Annex to ").as(:annex)
93
+ end
94
+
91
95
  rule(:corrigendum) do
92
96
  (published >> space >> str("Cor.") >> space >>
93
97
  digits.as(:number)).as(:corrigendum)
@@ -107,7 +111,7 @@ module Pubid::Itu
107
111
  end
108
112
 
109
113
  rule(:identifier) do
110
- str("ITU") >> (dash | space) >> sector_series_number >> supplement.maybe >>
114
+ annex_to.maybe >> str("ITU") >> (dash | space) >> sector_series_number >> supplement.maybe >>
111
115
  annex.maybe >> corrigendum.maybe >> addendum.maybe >> appendix.maybe >>
112
116
  published.maybe >> amendment.maybe >> str("-I").maybe >> language.maybe
113
117
  end
@@ -10,14 +10,48 @@ module Pubid::Itu::Renderer
10
10
  "%{type}%{series}" % params
11
11
  end
12
12
 
13
- def render_identifier(params)
14
- "%{publisher}-%{sector} #{render_type_series(params)}%{number}%{subseries}"\
13
+ def render_base_identifier(**args)
14
+ prerender(**args)
15
+
16
+ # pass args to render_identifier
17
+ render_identifier(@prerendered_params, args)
18
+ end
19
+
20
+ # can prepend entity, can postpend, can use item holder
21
+
22
+ def render_identifier(params, opts)
23
+ postfix = prefix = ""
24
+ if @params[:annex] && @params[:annex][:number].nil?
25
+ prefix += "Annex to "
26
+ elsif opts[:language] &&
27
+ (type_translation = Pubid::Itu::I18N["type"][@params[:type]]&.fetch(opts[:language].to_s, nil))
28
+ if opts[:language] == :cn
29
+ postfix =+ type_translation
30
+ elsif opts[:language] == :ar
31
+ postfix += " #{type_translation}"
32
+ else
33
+ prefix += "#{type_translation} "
34
+ end
35
+ end
36
+
37
+ "#{prefix}%{publisher}-%{sector} #{render_type_series(params)}%{number}%{subseries}"\
15
38
  "%{part}%{second_number}%{range}%{annex}%{amendment}%{corrigendum}%{supplement}"\
16
- "%{addendum}%{appendix}%{date}" % params
39
+ "%{addendum}%{appendix}%{date}#{postfix}" % params
40
+ end
41
+
42
+ def render_publisher(publisher, opts, params)
43
+ if opts[:language] &&
44
+ (publisher_translation = Pubid::Itu::I18N["publisher"][publisher]&.fetch(opts[:language].to_s, nil))
45
+ return super(publisher_translation, opts, params)
46
+ end
47
+
48
+ super
17
49
  end
18
50
 
19
51
  def render_number(number, _opts, params)
20
- params[:series] ? ".#{number}" : number
52
+ return " No. #{number}" if params[:series] == "OB"
53
+
54
+ number
21
55
  end
22
56
 
23
57
  def render_date(date, opts, _params)
@@ -38,8 +72,8 @@ module Pubid::Itu::Renderer
38
72
  "-#{part}"
39
73
  end
40
74
 
41
- def render_series(series, _opts, _params)
42
- "#{series}"
75
+ def render_series(series, _opts, params)
76
+ series + (params[:series] != "OB" && params[:number] ? "." : "")
43
77
  end
44
78
 
45
79
  def render_amendment(amendment, _opts, _params)
@@ -67,7 +101,7 @@ module Pubid::Itu::Renderer
67
101
  end
68
102
 
69
103
  def render_annex(annex, _opts, _params)
70
- " Annex #{annex[:number]}"
104
+ " Annex #{annex[:number]}" if annex[:number]
71
105
  end
72
106
 
73
107
  def render_corrigendum(corrigendum, opts, params)
@@ -0,0 +1,15 @@
1
+ module Pubid::Itu::Renderer
2
+ class Contribution < Base
3
+ def render_identifier(params, _opts)
4
+ ("%{series}-C%{number}" % params)
5
+ end
6
+
7
+ def render_series(series, _opts, _params)
8
+ series
9
+ end
10
+
11
+ def render_number(number, _opts, params)
12
+ number
13
+ end
14
+ end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Pubid::Itu::Renderer
2
2
  class ImplementersGuide < Base
3
3
  def render_type_series(params)
4
- ("%{series}" % params) + (params[:series] ? ".Imp" : "Imp")
4
+ ("%{series}Imp" % params)
5
5
  end
6
6
 
7
7
  def render_number(number, _opts, params)
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Itu
3
- VERSION = "0.1.2".freeze
3
+ VERSION = "1.15.0".freeze
4
4
  end
5
5
  end
data/lib/pubid/itu.rb CHANGED
@@ -13,6 +13,8 @@ module Pubid
13
13
  "es": "S",
14
14
  "zh": "C",
15
15
  }.freeze
16
+
17
+ I18N = YAML.load_file(File.join(File.dirname(__FILE__), "../../i18n.yaml"))
16
18
  end
17
19
  end
18
20
 
@@ -32,9 +34,11 @@ require_relative "itu/identifier/annex"
32
34
  require_relative "itu/identifier/corrigendum"
33
35
  require_relative "itu/identifier/addendum"
34
36
  require_relative "itu/identifier/appendix"
37
+ require_relative "itu/identifier/contribution"
35
38
  require_relative "itu/transformer"
36
39
  require_relative "itu/renderer/base"
37
40
  require_relative "itu/renderer/implementers_guide"
41
+ require_relative "itu/renderer/contribution"
38
42
  require_relative "itu/parser"
39
43
  require_relative "itu/identifier"
40
44
  require_relative "itu/configuration"
@@ -53,7 +57,8 @@ config.types = [Pubid::Itu::Identifier::Base,
53
57
  Pubid::Itu::Identifier::Supplement,
54
58
  Pubid::Itu::Identifier::Annex,
55
59
  Pubid::Itu::Identifier::Addendum,
56
- Pubid::Itu::Identifier::Appendix]
60
+ Pubid::Itu::Identifier::Appendix,
61
+ Pubid::Itu::Identifier::Contribution]
57
62
  config.type_names = {}.freeze
58
63
  config.series = YAML.load_file(File.join(File.dirname(__FILE__), "../../series.yaml"))
59
64
  Pubid::Itu::Identifier.set_config(config)
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-29 00:00:00.000000000 Z
11
+ date: 2025-06-04 00:00:00.000000000 Z
12
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
13
  - !ruby/object:Gem::Dependency
42
14
  name: parslet
43
15
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +28,16 @@ dependencies:
56
28
  name: pubid-core
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
- - - "~>"
31
+ - - '='
60
32
  - !ruby/object:Gem::Version
61
- version: 1.12.2
33
+ version: 1.15.0
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
- - - "~>"
38
+ - - '='
67
39
  - !ruby/object:Gem::Version
68
- version: 1.12.2
40
+ version: 1.15.0
69
41
  description: Library to generate, parse and manipulate ITU PubID.
70
42
  email:
71
43
  - open.source@ribose.com
@@ -77,6 +49,7 @@ extra_rdoc_files:
77
49
  files:
78
50
  - LICENSE.txt
79
51
  - README.adoc
52
+ - i18n.yaml
80
53
  - lib/pubid-itu.rb
81
54
  - lib/pubid/itu.rb
82
55
  - lib/pubid/itu/configuration.rb
@@ -87,6 +60,7 @@ files:
87
60
  - lib/pubid/itu/identifier/annex.rb
88
61
  - lib/pubid/itu/identifier/appendix.rb
89
62
  - lib/pubid/itu/identifier/base.rb
63
+ - lib/pubid/itu/identifier/contribution.rb
90
64
  - lib/pubid/itu/identifier/corrigendum.rb
91
65
  - lib/pubid/itu/identifier/implementers_guide.rb
92
66
  - lib/pubid/itu/identifier/question.rb
@@ -97,6 +71,7 @@ files:
97
71
  - lib/pubid/itu/identifier/supplement.rb
98
72
  - lib/pubid/itu/parser.rb
99
73
  - lib/pubid/itu/renderer/base.rb
74
+ - lib/pubid/itu/renderer/contribution.rb
100
75
  - lib/pubid/itu/renderer/implementers_guide.rb
101
76
  - lib/pubid/itu/transformer.rb
102
77
  - lib/pubid/itu/version.rb
@@ -105,7 +80,7 @@ homepage: https://github.com/metanorma/pubid-itu
105
80
  licenses:
106
81
  - BSD-2-Clause
107
82
  metadata: {}
108
- post_install_message:
83
+ post_install_message:
109
84
  rdoc_options: []
110
85
  require_paths:
111
86
  - lib
@@ -120,8 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
95
  - !ruby/object:Gem::Version
121
96
  version: '0'
122
97
  requirements: []
123
- rubygems_version: 3.3.26
124
- signing_key:
98
+ rubygems_version: 3.5.22
99
+ signing_key:
125
100
  specification_version: 4
126
101
  summary: Library to generate, parse and manipulate ITU PubID.
127
102
  test_files: []