pubid-itu 0.1.2 → 0.1.3

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: 4b6a9f43860cc646babf95c556cf4aa0169f847a26415503bfa0458dd0af9af1
4
- data.tar.gz: 6e5c30a16a55c467bb5b1d4ce00c2e6bbc7dec182b5e40815c8e8146669a10a7
3
+ metadata.gz: 4b5ede4e5121a3af045e2b6459a59f540449c7c68cd167ab2941b00c793668ed
4
+ data.tar.gz: 51a94e41094937353557a316b72dd1fb7fb44a7a14f4efc5dbc17ed61e06c35f
5
5
  SHA512:
6
- metadata.gz: 4049ed45d386a01a4670397674340e7c287186399c4e4b417e54b21b902b4518cc5c8660b081ee1f53e6a9cc08d947cbb7a9a0730fd7d17e0cd04aed367ec94d
7
- data.tar.gz: c6fd2a5ad473a2325063b1112f578376d8a01947ddfdca133113a420a8357b2bdbd670b2583239ee70959fe41b80bf868dfd48e22b63215affa379d2ee55065d
6
+ metadata.gz: 32adffd9092c1ded6b651e39a8093a578cc26f13ad2fadd7e59219b88fa6a548074718195957f411a3e95bbd5e409b227dc09789d18aa403ec673af25485000b
7
+ data.tar.gz: 07aec0fd86e6dd91ec5503eb878d43b05a01dcdf253ecbb2ed95053387d580a7321caef6d738a7a41e76192e839dadda3b6b54c954271fc693e7a596bbc04d5b
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 = "0.1.3".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,14 +1,14 @@
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: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-29 00:00:00.000000000 Z
11
+ date: 2024-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -77,6 +77,7 @@ extra_rdoc_files:
77
77
  files:
78
78
  - LICENSE.txt
79
79
  - README.adoc
80
+ - i18n.yaml
80
81
  - lib/pubid-itu.rb
81
82
  - lib/pubid/itu.rb
82
83
  - lib/pubid/itu/configuration.rb
@@ -87,6 +88,7 @@ files:
87
88
  - lib/pubid/itu/identifier/annex.rb
88
89
  - lib/pubid/itu/identifier/appendix.rb
89
90
  - lib/pubid/itu/identifier/base.rb
91
+ - lib/pubid/itu/identifier/contribution.rb
90
92
  - lib/pubid/itu/identifier/corrigendum.rb
91
93
  - lib/pubid/itu/identifier/implementers_guide.rb
92
94
  - lib/pubid/itu/identifier/question.rb
@@ -97,6 +99,7 @@ files:
97
99
  - lib/pubid/itu/identifier/supplement.rb
98
100
  - lib/pubid/itu/parser.rb
99
101
  - lib/pubid/itu/renderer/base.rb
102
+ - lib/pubid/itu/renderer/contribution.rb
100
103
  - lib/pubid/itu/renderer/implementers_guide.rb
101
104
  - lib/pubid/itu/transformer.rb
102
105
  - lib/pubid/itu/version.rb
@@ -120,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
123
  - !ruby/object:Gem::Version
121
124
  version: '0'
122
125
  requirements: []
123
- rubygems_version: 3.3.26
126
+ rubygems_version: 3.3.27
124
127
  signing_key:
125
128
  specification_version: 4
126
129
  summary: Library to generate, parse and manipulate ITU PubID.