pubid-itu 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e58bdfc3dfd515cee9b035547d9ff312cb041cb4727e7e7c24ae01e00e402e6d
4
+ data.tar.gz: 6c9d1e56475ff4d4a8b8e9c4c63ed0b3b6f1af3005078f41cdd9bc0b9a4af242
5
+ SHA512:
6
+ metadata.gz: 498dd3e32987d40016f5e4ddc49a6ea1cd989de340b45c52698afb2d9433dc3fc6f20ad60bc4ab306944654e56b7381e5709a29248ab59bc8beea97318858411
7
+ data.tar.gz: 30b6fc8004527edf7b95f6ba42704ccdaff6beeef9847c6da395bfa62dfc7a86f9ebcbbbfc009d50034d4d6271c800d4699cb128922d4afe1b2f5be108fad52c
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 ("ITU PubID")
2
+
3
+ == Purpose
4
+
5
+ This gem implements a mechanism to parse and utilize ITU 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-itu gem starts with the `Identifier#create` method.
17
+
18
+ [source,ruby]
19
+ ----
20
+ require "pubid-itu"
21
+
22
+ pubid = Pubid::Itu::Identifier.create(number: 1234, sector: "R", series: "V",part: 1)
23
+ pubid.to_s
24
+
25
+ => "ITU-R V.1234-1"
26
+ ----
@@ -0,0 +1,5 @@
1
+ module Pubid::Itu
2
+ class Configuration < Pubid::Core::Configuration
3
+ attr_accessor :series
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module Pubid::Itu
2
+ module Errors
3
+ end
4
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Addendum < Supplement
4
+ def_delegators 'Pubid::Itu::Identifier::Addendum', :type
5
+
6
+ def self.type
7
+ { key: :addendum, title: "Addendum" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Amendment < Supplement
4
+ def_delegators 'Pubid::Itu::Identifier::Amendment', :type
5
+
6
+ def self.type
7
+ { key: :amendment, title: "Amendment" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Annex < Supplement
4
+ def_delegators 'Pubid::Itu::Identifier::Annex', :type
5
+
6
+ def self.type
7
+ { key: :annex, title: "Annex" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Appendix < Supplement
4
+ def_delegators 'Pubid::Itu::Identifier::Appendix', :type
5
+
6
+ def self.type
7
+ { key: :appendix, title: "Appendix" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,84 @@
1
+ require 'forwardable'
2
+
3
+ module Pubid::Itu
4
+ module Identifier
5
+ class Base < Pubid::Core::Identifier::Base
6
+ attr_accessor :series, :sector, :date, :amendment, :subseries,
7
+ :second_number, :annex, :range
8
+
9
+ extend Forwardable
10
+
11
+ def self.type
12
+ { key: :itu, title: "International Communication Union" }
13
+ end
14
+
15
+ # @param month [Integer] document's month
16
+ # @param edition [String] document's edition version, e.g. "3.0", "1.0"
17
+ def initialize(publisher: "ITU", series: nil, sector: nil, part: nil,
18
+ date: nil, amendment: nil, subseries: nil, number: nil,
19
+ second_number: nil, annex: nil, range: nil, **opts)
20
+
21
+ super(**opts.merge(publisher: publisher, number: number))
22
+ @series = series
23
+ @sector = sector
24
+ @part = part if part
25
+ @date = date
26
+ @amendment = amendment
27
+ @subseries = subseries
28
+ @second_number = second_number
29
+ @annex = annex
30
+ @range = range
31
+ end
32
+
33
+ def to_s(**opts)
34
+ self.class.get_renderer_class.new(get_params).render(**opts)
35
+ end
36
+
37
+ class << self
38
+ # returns true when type matching current class type
39
+ def has_type?(type)
40
+ return type == self.type[:key] if type.is_a?(Symbol)
41
+
42
+ if self.type.key?(:short)
43
+ self.type[:short].is_a?(Array) ? self.type[:short].include?(type) : self.type[:short] == type
44
+ else
45
+ type.to_s.downcase.to_sym == self.type[:key]
46
+ end
47
+ end
48
+
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
+ )
56
+ end
57
+
58
+ # Use Identifier#create to resolve identifier's type class
59
+ def transform(params)
60
+ identifier_params = params.map do |k, v|
61
+ get_transformer_class.new.apply(k => v)
62
+ end.inject({}, :merge)
63
+
64
+ %i(supplement amendment corrigendum annex addendum appendix).each do |type|
65
+ return transform_supplements(type, identifier_params) if identifier_params[type]
66
+ end
67
+ Identifier.create(**identifier_params)
68
+ end
69
+
70
+ def get_parser_class
71
+ Parser
72
+ end
73
+
74
+ def get_renderer_class
75
+ Renderer::Base
76
+ end
77
+
78
+ def get_transformer_class
79
+ Transformer
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Corrigendum < Supplement
4
+ def_delegators 'Pubid::Itu::Identifier::Corrigendum', :type
5
+
6
+ def self.type
7
+ { key: :corrigendum, title: "Corrigendum" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class ImplementersGuide < Base
4
+ def_delegators 'Pubid::Itu::Identifier::ImplementersGuide', :type
5
+
6
+ def self.type
7
+ { key: :imp, title: "Implementer's Guide" }
8
+ end
9
+
10
+ def self.get_renderer_class
11
+ Renderer::ImplementersGuide
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Question < Base
4
+ def_delegators 'Pubid::Itu::Identifier::Question', :type
5
+
6
+ def self.type
7
+ { key: :question, title: "Question" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Recommendation < Base
4
+ def_delegators 'Pubid::Itu::Identifier::Recommendation', :type
5
+
6
+ def initialize(**opts)
7
+ # add type when Recommendation is default type
8
+ super(**opts.merge(type: "REC"))
9
+ end
10
+
11
+ def self.type
12
+ { key: :recommendation, title: "Recommendation", short: "REC" }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class RegulatoryPublication < Base
4
+ def_delegators 'Pubid::Itu::Identifier::RegulatoryPublication', :type
5
+
6
+ def self.type
7
+ { key: :reg, title: "Regulatory Publication", short: "REG" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Resolution < Base
4
+ def_delegators 'Pubid::Itu::Identifier::Resolution', :type
5
+
6
+ def self.type
7
+ { key: :resolution, title: "Resolition" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class SpecialPublication < Base
4
+ def_delegators 'Pubid::Itu::Identifier::SpecialPublication', :type
5
+
6
+ def self.type
7
+ { key: :sp, title: "Special Publication", short: "SP" }
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module Pubid::Itu
2
+ module Identifier
3
+ class Supplement < Base
4
+ def_delegators 'Pubid::Itu::Identifier::Supplement', :type
5
+
6
+ attr_accessor :base
7
+
8
+ def initialize(base: nil, **opts)
9
+ super(**opts)
10
+ @base = base
11
+ end
12
+
13
+ def get_params
14
+ # XXX: hack to render supplements using Base renderer, because we need to
15
+ # place date published after amendment, e.g. `ITU-T G.780/Y.1351 Amd 1 (2004)`
16
+ @base.get_params.merge(self.type[:key] => super)
17
+ end
18
+
19
+ def self.type
20
+ { key: :supplement, title: "Supplement" }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ module Pubid::Itu
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 Question.new(**parameters) if parameters[:series].to_s.match?(/^SG/)
13
+
14
+ return Resolution.new(**parameters) if parameters[:series].to_s == "R"
15
+
16
+ return SpecialPublication.new(**parameters) if parameters[:series].to_s == "OB"
17
+
18
+ if parameters[:regulatory_publication]
19
+ return RegulatoryPublication.new(
20
+ **parameters.reject { |k, _| k == :regulatory_publication }.merge(
21
+ { series: parameters[:regulatory_publication] },
22
+ ),
23
+ )
24
+ end
25
+
26
+ return Recommendation.new(**parameters) if parameters[:series] && !parameters[:type]
27
+
28
+ super
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,113 @@
1
+ module Pubid::Itu
2
+ class Parser < Pubid::Core::Parser
3
+ rule(:roman_numerals) do
4
+ array_to_str(%w[I V X L C D M]).repeat(1).as(:roman_numerals)
5
+ end
6
+
7
+ rule(:part) do
8
+ (dash >> year_digits.absent? >> digits.as(:part)).repeat
9
+ end
10
+
11
+ rule(:type) do
12
+ (dash | space) >> str("REC").as(:type)
13
+ end
14
+
15
+ rule(:subseries) do
16
+ dot >> digits.as(:subseries)
17
+ end
18
+
19
+ rule(:r_sector_series) do
20
+ (
21
+ # SG - Study groups for "question" type
22
+ ((str("SG") >> digits).as(:series) >> dot) |
23
+ # Recommendation series
24
+ (array_to_str(Identifier.config.series["R"].keys.sort_by(&:length).reverse).as(:series) >> dot) |
25
+ # Regulatory Publications
26
+ (str("RR") | str("RRX") | str("RR5") | str("ROP") | str("HFBS")).as(:regulatory_publication) |
27
+ # "R" for resolution
28
+ (str("R").as(:series) >> dot).maybe)
29
+ end
30
+
31
+ rule(:t_sector_series) do
32
+ (
33
+ # Service Publications / Operational Bulletin
34
+ str("OB") | str("Operational Bulletin") |
35
+ # Recommendation series
36
+ array_to_str(Identifier.config.series["T"].keys.sort_by(&:length).reverse)
37
+ ).capture(:series).as(:series) >>
38
+ # "No. " for Operational Bulletin
39
+ (dot | str(" No. ")).maybe
40
+ end
41
+
42
+ rule(:series_range) do
43
+ (dash >> dynamic { |s, c| str(c.captures[:series]) } >> dot >> full_number).as(:range)
44
+ end
45
+
46
+ rule(:sector_series_number) do
47
+ (
48
+ # ITU-R
49
+ (str("R").as(:sector) >> type.maybe >> (space | dash) >>
50
+ r_sector_series.maybe >> full_number.maybe) |
51
+ # ITU-T
52
+ (str("T").as(:sector) >> type.maybe >> (space | dash) >>
53
+ t_sector_series.maybe >> full_number >>
54
+ (str("/") >> t_sector_series.maybe >> full_number).as(:second_number).maybe >>
55
+ series_range.maybe) |
56
+ # ITU-D
57
+ (str("D") >> space >> full_number)
58
+ )
59
+ end
60
+
61
+ rule(:published) do
62
+ ((str(" - ") >> digits.as(:day) >> dot >> roman_numerals.as(:month) >> dot >> year_digits.as(:year)) |
63
+ (dash >> year_digits.as(:year) >> month_digits.as(:month)) |
64
+ (space >> str("(") >> (month_digits.as(:month) >> str("/")).maybe >>
65
+ year_digits.as(:year) >> str(")"))).as(:date)
66
+ end
67
+
68
+ rule(:amendment) do
69
+ space >> (str("Amd") | str("Amend")) >> dot.maybe >> space >> digits.as(:number).as(:amendment)
70
+ end
71
+
72
+ rule(:implementers_guide) do
73
+ str("Imp").as(:type)
74
+ end
75
+
76
+ rule(:full_number) do
77
+ # Parse X.ImpOSI
78
+ ((implementers_guide >> str("OSI").as(:number)) |
79
+ (implementers_guide.maybe >> digits.as(:number).maybe)
80
+ ) >> subseries.maybe >> part
81
+ end
82
+
83
+ rule(:supplement) do
84
+ space >> (str("Suppl.") >> space >> digits.as(:number)).as(:supplement)
85
+ end
86
+
87
+ rule(:annex) do
88
+ space >> str("Annex") >> space >> (match["A-Z"] >> digits.maybe >> str("+").maybe).as(:number).as(:annex)
89
+ end
90
+
91
+ rule(:corrigendum) do
92
+ (published >> space >> str("Cor.") >> space >>
93
+ digits.as(:number)).as(:corrigendum)
94
+ end
95
+
96
+ rule(:addendum) do
97
+ (published >> space >> str("Add.") >> space >> digits.as(:number)).as(:addendum)
98
+ end
99
+
100
+ rule(:appendix) do
101
+ (space >> str("App.") >> space >>
102
+ roman_numerals.as(:number)).as(:appendix)
103
+ end
104
+
105
+ rule(:identifier) do
106
+ str("ITU") >> (dash | space) >> sector_series_number >> supplement.maybe >>
107
+ annex.maybe >> corrigendum.maybe >> addendum.maybe >> appendix.maybe >>
108
+ published.maybe >> amendment.maybe >> str("-I").maybe
109
+ end
110
+
111
+ rule(:root) { identifier }
112
+ end
113
+ end
@@ -0,0 +1,89 @@
1
+ module Pubid::Itu::Renderer
2
+ class Base < Pubid::Core::Renderer::Base
3
+ TYPE_PREFIX = "".freeze
4
+
5
+ def render(**args)
6
+ render_base_identifier(**args) + @prerendered_params[:language].to_s
7
+ end
8
+
9
+ def render_type_series(params)
10
+ "%{type}%{series}" % params
11
+ end
12
+
13
+ def render_identifier(params)
14
+ "%{publisher}-%{sector} #{render_type_series(params)}%{number}%{subseries}"\
15
+ "%{part}%{second_number}%{range}%{annex}%{amendment}%{corrigendum}%{supplement}"\
16
+ "%{addendum}%{appendix}%{date}" % params
17
+ end
18
+
19
+ def render_number(number, _opts, params)
20
+ params[:series] ? ".#{number}" : number
21
+ end
22
+
23
+ def render_date(date, opts, _params)
24
+ return if opts[:without_date]
25
+
26
+ return " (#{date[:year]})" unless date[:month]
27
+
28
+ " (%<month>02d/%<year>d)" % date
29
+ end
30
+
31
+ def render_type(type, opts, _params)
32
+ "#{type}-" if opts[:with_type]
33
+ end
34
+
35
+ def render_part(part, opts, _params)
36
+ return "-#{part.reverse.join('-')}" if part.is_a?(Array)
37
+
38
+ "-#{part}"
39
+ end
40
+
41
+ def render_series(series, _opts, _params)
42
+ "#{series}"
43
+ end
44
+
45
+ def render_amendment(amendment, _opts, _params)
46
+ " Amd #{amendment[:number]}"
47
+ end
48
+
49
+ def render_subseries(subseries, _opts, _params)
50
+ ".#{subseries}"
51
+ end
52
+
53
+ def render_second_number(second_number, _opts, _params)
54
+ result = "/#{second_number[:series]}.#{second_number[:number]}"
55
+ if second_number[:subseries]
56
+ result += ".#{second_number[:subseries]}"
57
+ end
58
+ if second_number[:part]
59
+ result += "-#{second_number[:part]}"
60
+ end
61
+
62
+ result
63
+ end
64
+
65
+ def render_supplement(supplement, _opts, _params)
66
+ " Suppl. #{supplement[:number]}"
67
+ end
68
+
69
+ def render_annex(annex, _opts, _params)
70
+ " Annex #{annex[:number]}"
71
+ end
72
+
73
+ def render_corrigendum(corrigendum, opts, params)
74
+ "#{render_date(corrigendum[:date], opts, params)} Cor. #{corrigendum[:number]}"
75
+ end
76
+
77
+ def render_range(range, _opts, params)
78
+ "-#{params[:series]}.#{range[:number]}"
79
+ end
80
+
81
+ def render_addendum(addendum, opts, params)
82
+ "#{render_date(addendum[:date], opts, params)} Add. #{addendum[:number]}"
83
+ end
84
+
85
+ def render_appendix(appendix, _opts, _params)
86
+ " App. #{appendix[:number]}"
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Itu::Renderer
2
+ class ImplementersGuide < Base
3
+ def render_type_series(params)
4
+ "%{series}%{type}" % params
5
+ end
6
+
7
+ def render_number(number, _opts, params)
8
+ number
9
+ end
10
+
11
+ def render_type(type, opts, _params)
12
+ params[:series] ? ".Imp" : "Imp"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Pubid::Itu
2
+ class Transformer < Pubid::Core::Transformer
3
+ rule(series: "Operational Bulletin") do
4
+ { series: "OB" }
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Pubid
2
+ module Itu
3
+ VERSION = "0.0.2".freeze
4
+ end
5
+ end
data/lib/pubid/itu.rb ADDED
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "parslet"
4
+ require "yaml"
5
+
6
+ module Pubid
7
+ module Itu
8
+
9
+ end
10
+ end
11
+
12
+ require "pubid-core"
13
+
14
+ require_relative "itu/errors"
15
+ require_relative "itu/identifier/base"
16
+ require_relative "itu/identifier/recommendation"
17
+ require_relative "itu/identifier/question"
18
+ require_relative "itu/identifier/resolution"
19
+ require_relative "itu/identifier/special_publication"
20
+ require_relative "itu/identifier/supplement"
21
+ require_relative "itu/identifier/amendment"
22
+ require_relative "itu/identifier/regulatory_publication"
23
+ require_relative "itu/identifier/implementers_guide"
24
+ require_relative "itu/identifier/annex"
25
+ require_relative "itu/identifier/corrigendum"
26
+ require_relative "itu/identifier/addendum"
27
+ require_relative "itu/identifier/appendix"
28
+ require_relative "itu/transformer"
29
+ require_relative "itu/renderer/base"
30
+ require_relative "itu/renderer/implementers_guide"
31
+ require_relative "itu/parser"
32
+ require_relative "itu/identifier"
33
+ require_relative "itu/configuration"
34
+
35
+ config = Pubid::Itu::Configuration.new
36
+ config.default_type = Pubid::Itu::Identifier::Base
37
+ config.types = [Pubid::Itu::Identifier::Base,
38
+ Pubid::Itu::Identifier::Recommendation,
39
+ Pubid::Itu::Identifier::Resolution,
40
+ Pubid::Itu::Identifier::Question,
41
+ Pubid::Itu::Identifier::SpecialPublication,
42
+ Pubid::Itu::Identifier::Amendment,
43
+ Pubid::Itu::Identifier::Corrigendum,
44
+ Pubid::Itu::Identifier::RegulatoryPublication,
45
+ Pubid::Itu::Identifier::ImplementersGuide,
46
+ Pubid::Itu::Identifier::Supplement,
47
+ Pubid::Itu::Identifier::Annex,
48
+ Pubid::Itu::Identifier::Addendum,
49
+ Pubid::Itu::Identifier::Appendix]
50
+ config.type_names = {}.freeze
51
+ config.series = YAML.load_file(File.join(File.dirname(__FILE__), "../../series.yaml"))
52
+ Pubid::Itu::Identifier.set_config(config)
data/lib/pubid-itu.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "pubid/itu"
data/series.yaml ADDED
@@ -0,0 +1,42 @@
1
+ R:
2
+ BO: Satellite delivery
3
+ BR: Recording for production, archival and play-out; film for television
4
+ BS: Broadcasting service (sound)
5
+ BT: Broadcasting service (television)
6
+ F: Fixed service
7
+ M: Mobile, radiodetermination, amateur and related satellite services
8
+ P: Radiowave propagation
9
+ RA: Radio astronomy
10
+ RS: Remote sensing systems
11
+ S: Fixed-satellite service
12
+ SA: Space applications and meteorology
13
+ SF: Frequency sharing and coordination between fixed-satellite and fixed service systems SM Spectrum management
14
+ SM: Spectrum management
15
+ SNG: Satellite news gathering
16
+ TF: Time signals and frequency standards emissions
17
+ V: Vocabulary and related subjects
18
+
19
+ T:
20
+ A: Organization of the work of ITU-T
21
+ D: Tariff and accounting principles and international telecommunication/ICT economic and policy issues
22
+ E: Overall network operation, telephone service, service operation and human factors
23
+ F: Non-telephone telecommunication services
24
+ G: Transmission systems and media, digital systems and networks
25
+ H: Audiovisual and multimedia systems
26
+ I: Integrated services digital network
27
+ J: Cable networks and transmission of television, sound programme and other multimedia signals
28
+ K: Protection against interference
29
+ L: Environment and ICTs, climate change, e-waste, energy efficiency; construction, installation and protection of cables and other elements of outside plant
30
+ M: Telecommunication management, including TMN and network maintenance
31
+ N: "Maintenance: international sound programme and television-transmission circuits"
32
+ O: Specifications of measuring equipment
33
+ P: Telephone transmission quality, telephone installations, local line networks
34
+ Q: Switching and signalling, and associated measurements and tests
35
+ R: Telegraph transmission
36
+ S: Telegraph services terminal equipment
37
+ T: Terminals for telematic services
38
+ U: Telegraph switching
39
+ V: Data communication over the telephone network
40
+ X: Data networks, open system communications and security
41
+ Y: Global information infrastructure, Internet protocol aspects, next-generation networks, Internet of Things and smart cities
42
+ Z: Languages and general software aspects for telecommunication systems
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pubid-itu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-01-06 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: parslet
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: pubid-core
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.5
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.5
69
+ description: Library to generate, parse and manipulate ITU PubID.
70
+ email:
71
+ - open.source@ribose.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - README.adoc
76
+ - LICENSE.txt
77
+ files:
78
+ - LICENSE.txt
79
+ - README.adoc
80
+ - lib/pubid-itu.rb
81
+ - lib/pubid/itu.rb
82
+ - lib/pubid/itu/configuration.rb
83
+ - lib/pubid/itu/errors.rb
84
+ - lib/pubid/itu/identifier.rb
85
+ - lib/pubid/itu/identifier/addendum.rb
86
+ - lib/pubid/itu/identifier/amendment.rb
87
+ - lib/pubid/itu/identifier/annex.rb
88
+ - lib/pubid/itu/identifier/appendix.rb
89
+ - lib/pubid/itu/identifier/base.rb
90
+ - lib/pubid/itu/identifier/corrigendum.rb
91
+ - lib/pubid/itu/identifier/implementers_guide.rb
92
+ - lib/pubid/itu/identifier/question.rb
93
+ - lib/pubid/itu/identifier/recommendation.rb
94
+ - lib/pubid/itu/identifier/regulatory_publication.rb
95
+ - lib/pubid/itu/identifier/resolution.rb
96
+ - lib/pubid/itu/identifier/special_publication.rb
97
+ - lib/pubid/itu/identifier/supplement.rb
98
+ - lib/pubid/itu/parser.rb
99
+ - lib/pubid/itu/renderer/base.rb
100
+ - lib/pubid/itu/renderer/implementers_guide.rb
101
+ - lib/pubid/itu/transformer.rb
102
+ - lib/pubid/itu/version.rb
103
+ - series.yaml
104
+ homepage: https://github.com/metanorma/pubid-itu
105
+ licenses:
106
+ - BSD-2-Clause
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 2.5.0
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubygems_version: 3.3.26
124
+ signing_key:
125
+ specification_version: 4
126
+ summary: Library to generate, parse and manipulate ITU PubID.
127
+ test_files: []