pubid-iso 0.3.0 → 0.4.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 +4 -4
- data/README.adoc +118 -39
- data/lib/pubid/iso/errors.rb +0 -3
- data/lib/pubid/iso/harmonized_stage_code.rb +1 -145
- data/lib/pubid/iso/identifier/amendment.rb +52 -0
- data/lib/pubid/iso/identifier/base.rb +365 -0
- data/lib/pubid/iso/identifier/corrigendum.rb +53 -0
- data/lib/pubid/iso/identifier/directives.rb +29 -0
- data/lib/pubid/iso/identifier/guide.rb +32 -0
- data/lib/pubid/iso/identifier/international_standard.rb +45 -0
- data/lib/pubid/iso/identifier/international_standardized_profile.rb +30 -0
- data/lib/pubid/iso/identifier/international_workshop_agreement.rb +25 -0
- data/lib/pubid/iso/identifier/publicly_available_specification.rb +30 -0
- data/lib/pubid/iso/identifier/recommendation.rb +19 -0
- data/lib/pubid/iso/identifier/supplement.rb +39 -0
- data/lib/pubid/iso/identifier/technical_committee.rb +19 -0
- data/lib/pubid/iso/identifier/technical_report.rb +30 -0
- data/lib/pubid/iso/identifier/technical_specification.rb +30 -0
- data/lib/pubid/iso/identifier/technology_trends_assessments.rb +30 -0
- data/lib/pubid/iso/identifier.rb +39 -264
- data/lib/pubid/iso/parser.rb +56 -20
- data/lib/pubid/iso/renderer/amendment.rb +7 -0
- data/lib/pubid/iso/renderer/base.rb +129 -98
- data/lib/pubid/iso/renderer/corrigendum.rb +7 -0
- data/lib/pubid/iso/renderer/dir.rb +5 -3
- data/lib/pubid/iso/renderer/guide.rb +19 -0
- data/lib/pubid/iso/renderer/international_standard.rb +11 -0
- data/lib/pubid/iso/renderer/international_standardized_profile.rb +13 -0
- data/lib/pubid/iso/renderer/international_workshop_agreement.rb +17 -0
- data/lib/pubid/iso/renderer/publicly_available_specification.rb +12 -0
- data/lib/pubid/iso/renderer/recommendation.rb +13 -0
- data/lib/pubid/iso/renderer/supplement.rb +63 -0
- data/lib/pubid/iso/renderer/technical_committee.rb +47 -0
- data/lib/pubid/iso/renderer/technical_report.rb +13 -0
- data/lib/pubid/iso/renderer/technical_specification.rb +13 -0
- data/lib/pubid/iso/renderer/technology_trends_assessments.rb +13 -0
- data/lib/pubid/iso/renderer/urn-amendment.rb +12 -0
- data/lib/pubid/iso/renderer/urn-corrigendum.rb +12 -0
- data/lib/pubid/iso/renderer/urn-dir.rb +11 -3
- data/lib/pubid/iso/renderer/urn-supplement.rb +31 -0
- data/lib/pubid/iso/renderer/urn-tc.rb +2 -0
- data/lib/pubid/iso/renderer/urn.rb +25 -13
- data/lib/pubid/iso/stage.rb +1 -99
- data/lib/pubid/iso/transformer.rb +91 -107
- data/lib/pubid/iso/type.rb +9 -1
- data/lib/pubid/iso/version.rb +1 -1
- data/lib/pubid/iso.rb +20 -14
- data/stages.yaml +93 -0
- data/update_codes.yaml +1 -0
- metadata +37 -11
- data/lib/pubid/iso/amendment.rb +0 -15
- data/lib/pubid/iso/corrigendum.rb +0 -31
- data/lib/pubid/iso/renderer/french.rb +0 -29
- data/lib/pubid/iso/renderer/russian.rb +0 -64
- data/lib/pubid/iso/renderer/tc.rb +0 -30
- data/lib/pubid/iso/supplement.rb +0 -56
- data/lib/pubid/iso/typed_stage.rb +0 -204
@@ -2,130 +2,147 @@ module Pubid::Iso::Renderer
|
|
2
2
|
class Base < Pubid::Core::Renderer::Base
|
3
3
|
attr_accessor :prerendered_params
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
TRANSLATION = {
|
6
|
+
russian: {
|
7
|
+
publisher: { "ISO" => "ИСО", "IEC" => "МЭК" },
|
8
|
+
stage: { "FDIS" => "ОПМС",
|
9
|
+
"DIS" => "ПМС",
|
10
|
+
"NP" => "НП",
|
11
|
+
"AWI" => "АВИ",
|
12
|
+
"CD" => "КПК",
|
13
|
+
"PD" => "ПД",
|
14
|
+
"FPD" => "ФПД" },
|
15
|
+
type: { "TS" => "ТС",
|
16
|
+
"TR" => "ТО",
|
17
|
+
"ISP" => "ИСП" },
|
18
|
+
},
|
19
|
+
french: {
|
20
|
+
publisher: { "IEC" => "CEI" },
|
21
|
+
},
|
12
22
|
}.freeze
|
13
23
|
|
14
|
-
|
15
|
-
def prerender(with_edition: true, **args)
|
16
|
-
@params[:type_stage] = @params.slice(:stage, :type) if @params[:stage] || @params[:type]
|
17
|
-
super
|
18
|
-
end
|
24
|
+
TYPE = "".freeze
|
19
25
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
else
|
25
|
-
self.class.new(supplement_params[:base].get_params).render_base_identifier(
|
26
|
-
# always render year for identifiers with supplement
|
27
|
-
**args.merge({ with_date: true }),
|
28
|
-
)
|
29
|
-
end +
|
30
|
-
case supplement_params[:typed_stage].type.type
|
31
|
-
when :amd
|
32
|
-
render_amendments(
|
33
|
-
[Pubid::Iso::Amendment.new(**supplement_params.slice(:number, :year, :typed_stage, :edition, :iteration))],
|
34
|
-
args,
|
35
|
-
nil,
|
36
|
-
)
|
37
|
-
when :cor
|
38
|
-
render_corrigendums(
|
39
|
-
[Pubid::Iso::Corrigendum.new(**supplement_params.slice(:number, :year, :typed_stage, :edition, :iteration))],
|
40
|
-
args,
|
41
|
-
nil,
|
42
|
-
)
|
43
|
-
# copy parameters from Identifier only supported by Corrigendum
|
44
|
-
end +
|
45
|
-
(supplement_params[:base].language ? render_language(supplement_params[:base].language, args, nil) : "")
|
26
|
+
def render_base_identifier(**args)
|
27
|
+
prerender(**args)
|
28
|
+
|
29
|
+
render_identifier(@prerendered_params, args)
|
46
30
|
end
|
47
31
|
|
48
32
|
# Render identifier
|
49
33
|
# @param with_edition [Boolean] include edition in output
|
50
34
|
# @see Pubid::Core::Renderer::Base for another options
|
51
35
|
def render(with_edition: true, with_language_code: :iso, with_date: true, **args)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
36
|
+
render_base_identifier(**args.merge({ with_date: with_date,
|
37
|
+
with_language_code: with_language_code,
|
38
|
+
with_edition: with_edition })) +
|
39
|
+
@prerendered_params[:language].to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
def render_base(_base, _opts, _params)
|
43
|
+
end
|
44
|
+
|
45
|
+
def render_type_prefix(params)
|
46
|
+
result = params[:typed_stage].nil? || params[:typed_stage].empty? ? self.class::TYPE : ""
|
47
|
+
|
48
|
+
if params[:stage] && !params[:stage].empty? && !result.empty?
|
49
|
+
" #{result}"
|
57
50
|
else
|
58
|
-
|
59
|
-
with_language_code: with_language_code,
|
60
|
-
with_edition: with_edition })) +
|
61
|
-
@prerendered_params[:language].to_s
|
51
|
+
result
|
62
52
|
end
|
53
|
+
end
|
63
54
|
|
55
|
+
def render_identifier(params, opts)
|
56
|
+
"%{publisher}%{typed_stage}%{stage}#{render_type_prefix(params)} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{addendum}%{edition}" % params
|
64
57
|
end
|
65
58
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
# stage = render_stage(values[:stage], opts, params)
|
84
|
-
# type = values[:type]&.to_s
|
85
|
-
# return unless type || stage
|
86
|
-
#
|
87
|
-
# if type && stage
|
88
|
-
# # don't add prefix for pdf format
|
89
|
-
# if %w(DIS FDIS).include?(stage)
|
90
|
-
# "#{render_short_stage(stage)}#{type}"
|
91
|
-
# else
|
92
|
-
# "#{stage} #{type}"
|
93
|
-
# end
|
94
|
-
# else
|
95
|
-
# # when only type or stage
|
96
|
-
# "#{type}#{stage}"
|
97
|
-
# end
|
98
|
-
# end
|
99
|
-
|
100
|
-
def render_short_stage(stage)
|
101
|
-
case stage
|
102
|
-
when "DIS"
|
103
|
-
"D"
|
104
|
-
when "FDIS"
|
105
|
-
"FD"
|
59
|
+
def render_copublisher_string(publisher, copublishers, opts)
|
60
|
+
case copublishers
|
61
|
+
when String
|
62
|
+
if opts[:language]
|
63
|
+
copublishers = TRANSLATION[opts[:language]][:publisher][copublishers] || copublishers
|
64
|
+
end
|
65
|
+
[publisher, copublishers].join("/")
|
66
|
+
when Array
|
67
|
+
([publisher] + copublishers.map(&:to_s).sort).map do |pub|
|
68
|
+
if opts[:language]
|
69
|
+
(TRANSLATION[opts[:language]][:publisher][pub] || pub).gsub('-', '/')
|
70
|
+
else
|
71
|
+
pub
|
72
|
+
end
|
73
|
+
end.join("/")
|
74
|
+
else
|
75
|
+
raise StandardError.new("copublisher must be a string or an array")
|
106
76
|
end
|
107
77
|
end
|
108
78
|
|
109
|
-
def
|
110
|
-
return
|
79
|
+
def omit_post_publisher_symbol?(typed_stage, stage, opts)
|
80
|
+
# return false unless typed_stage
|
111
81
|
|
112
|
-
stage.
|
82
|
+
(stage.nil? || stage.empty_abbr?(with_prf: opts[:with_prf])) && typed_stage.nil?
|
113
83
|
end
|
114
84
|
|
115
|
-
def
|
116
|
-
|
85
|
+
def render_publisher(publisher, opts, params)
|
86
|
+
|
87
|
+
if opts[:language]
|
88
|
+
publisher = TRANSLATION[opts[:language]][:publisher][publisher] || publisher
|
89
|
+
end
|
90
|
+
# No copublishers
|
91
|
+
unless params[:copublisher]
|
92
|
+
|
93
|
+
# No copublisher and IS
|
94
|
+
# ISO xxx
|
95
|
+
if omit_post_publisher_symbol?(params[:typed_stage], params[:stage], opts)
|
96
|
+
return publisher
|
97
|
+
end
|
98
|
+
|
99
|
+
# No copublisher and not IS
|
100
|
+
# ISO/TR xxx
|
101
|
+
return "#{publisher}/"
|
102
|
+
end
|
103
|
+
|
104
|
+
publisher_string = render_copublisher_string(publisher, params[:copublisher], opts)
|
105
|
+
publisher_string.sub!("/IEC", "/CEI") if opts[:language] == :french
|
106
|
+
|
107
|
+
# With copublisher and IS
|
108
|
+
# ISO/IEC xxx
|
109
|
+
if omit_post_publisher_symbol?(params[:typed_stage], params[:stage], opts)
|
110
|
+
return publisher_string
|
111
|
+
end
|
112
|
+
|
113
|
+
# With copublisher but not IS
|
114
|
+
# ISO/IEC TR xxx
|
115
|
+
publisher_string + " "
|
117
116
|
end
|
118
117
|
|
119
|
-
def
|
120
|
-
|
118
|
+
def render_typed_stage(typed_stage, opts, params)
|
119
|
+
return nil if typed_stage.to_s.empty?
|
120
|
+
|
121
|
+
if opts[:language]
|
122
|
+
return TRANSLATION[opts[:language]][:stage][typed_stage.to_s] || typed_stage.to_s
|
123
|
+
end
|
124
|
+
|
125
|
+
typed_stage.to_s
|
126
|
+
end
|
127
|
+
|
128
|
+
def render_stage(stage, opts, params)
|
129
|
+
return if params[:typed_stage]
|
130
|
+
return if stage.empty_abbr?(with_prf: opts[:with_prf])
|
131
|
+
|
132
|
+
if opts[:language]
|
133
|
+
return TRANSLATION[opts[:language]][:stage][stage.to_s(with_prf: opts[:with_prf])] ||
|
134
|
+
stage.to_s(with_prf: opts[:with_prf])
|
135
|
+
end
|
136
|
+
|
137
|
+
stage.to_s(with_prf: opts[:with_prf])
|
121
138
|
end
|
122
139
|
|
123
|
-
def
|
124
|
-
|
140
|
+
def render_edition(edition, opts, _params)
|
141
|
+
" ED#{edition}" if opts[:with_edition]
|
125
142
|
end
|
126
143
|
|
127
|
-
def
|
128
|
-
|
144
|
+
def render_iteration(iteration, _opts, _params)
|
145
|
+
".#{iteration}"
|
129
146
|
end
|
130
147
|
|
131
148
|
def render_language(language, opts, _params)
|
@@ -137,5 +154,19 @@ module Pubid::Iso::Renderer
|
|
137
154
|
return ":#{year}" if params[:amendments] || params[:corrigendums]
|
138
155
|
opts[:with_date] && ":#{year}" || ""
|
139
156
|
end
|
157
|
+
|
158
|
+
def render_part(part, opts, _params)
|
159
|
+
return "-#{part.reverse.join('-')}" if part.is_a?(Array)
|
160
|
+
|
161
|
+
"-#{part}"
|
162
|
+
end
|
163
|
+
|
164
|
+
def render_addendum(addendum, _opts, _params)
|
165
|
+
if addendum[:year]
|
166
|
+
"/Add #{addendum[:number]}:#{addendum[:year]}"
|
167
|
+
else
|
168
|
+
"/Add #{addendum[:number]}"
|
169
|
+
end
|
170
|
+
end
|
140
171
|
end
|
141
172
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
1
3
|
module Pubid::Iso::Renderer
|
2
4
|
class Dir < Base
|
3
5
|
|
4
|
-
def render_identifier(params)
|
5
|
-
res = ("%{publisher}
|
6
|
+
def render_identifier(params, opts)
|
7
|
+
res = ("%{publisher} DIR%{dirtype}%{number}%{year}%{supplement}" % params)
|
6
8
|
|
7
9
|
if params.key?(:joint_document)
|
8
10
|
joint_params = prerender_params(params[:joint_document].get_params, {})
|
9
11
|
joint_params.default = ""
|
10
|
-
res += (" + %{publisher}%{
|
12
|
+
res += (" + %{publisher}%{dirtype}%{number}%{year}%{supplement}" % joint_params)
|
11
13
|
end
|
12
14
|
|
13
15
|
res
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class Guide < Base
|
5
|
+
def render_identifier(params, opts)
|
6
|
+
if opts[:language] == :french
|
7
|
+
"Guide %{publisher}%{stage} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
8
|
+
elsif opts[:language] == :russian
|
9
|
+
"Руководство %{publisher}%{stage} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
10
|
+
else
|
11
|
+
if params[:typed_stage] && !params[:typed_stage].empty?
|
12
|
+
"%{publisher}%{typed_stage}%{stage} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
13
|
+
else
|
14
|
+
"%{publisher}%{stage} Guide %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class InternationalStandardizedProfile < Base
|
5
|
+
|
6
|
+
TYPE = "ISP".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "TR"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class InternationalWorkshopAgreement < Base
|
5
|
+
|
6
|
+
TYPE = "IWA".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "TR"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
def render_identifier(params, opts)
|
14
|
+
"%{typed_stage}%{stage}#{render_type_prefix(params)} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{addendum}%{edition}" % params
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class PubliclyAvailableSpecification < Base
|
5
|
+
|
6
|
+
TYPE = "PAS".freeze
|
7
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
8
|
+
# always need post publisher symbol, because we always have to add "TR"
|
9
|
+
false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class Recommendation < Base
|
5
|
+
|
6
|
+
TYPE = "R".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "R"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class Supplement < Base
|
5
|
+
TYPE = "Suppl".freeze
|
6
|
+
|
7
|
+
# Render identifier
|
8
|
+
# @param with_edition [Boolean] include edition in output
|
9
|
+
# @see Pubid::Core::Renderer::Base for another options
|
10
|
+
def render(with_edition: true, with_language_code: :iso, with_date: true, **args)
|
11
|
+
@params[:base].to_s(lang: args[:language], with_edition: with_edition) +
|
12
|
+
super(
|
13
|
+
with_edition: with_edition, with_language_code: with_language_code, with_date: with_date,
|
14
|
+
base_type: @params[:base].type[:key],
|
15
|
+
**args
|
16
|
+
) +
|
17
|
+
if @params[:base].language
|
18
|
+
render_language(@params[:base].language,
|
19
|
+
{ with_language_code: with_language_code }, nil).to_s
|
20
|
+
else
|
21
|
+
""
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def render_identifier(params, opts)
|
26
|
+
type_prefix = params[:typed_stage].nil? || params[:typed_stage].empty? ? self.class::TYPE : ""
|
27
|
+
|
28
|
+
if params[:stage].is_a?(Pubid::Core::Stage) && !params[:stage].empty_abbr?
|
29
|
+
type_prefix = " #{type_prefix}"
|
30
|
+
end
|
31
|
+
|
32
|
+
if self.class == Supplement
|
33
|
+
if opts[:base_type] == :dir
|
34
|
+
"%{typed_stage}%{stage}%{publisher} SUP%{number}%{part}%{iteration}%{year}%{edition}" % params
|
35
|
+
else
|
36
|
+
# type_prefix = "/#{type_prefix}" unless type_prefix.empty?
|
37
|
+
"/%{typed_stage}%{stage}#{type_prefix}%{number}%{part}%{iteration}%{year}%{edition}" % params
|
38
|
+
end
|
39
|
+
else
|
40
|
+
"/%{typed_stage}%{stage}#{type_prefix}%{number}%{part}%{iteration}%{year}%{edition}" % params
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def render_number(number, opts, _params)
|
45
|
+
space = opts[:language] == :french ? "." : " "
|
46
|
+
|
47
|
+
"#{space}#{number}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def render_stage(stage, opts, params)
|
51
|
+
# do not render stage when already has typed stage
|
52
|
+
stage unless params[:typed_stage]
|
53
|
+
end
|
54
|
+
|
55
|
+
def render_publisher(publisher, opts, params)
|
56
|
+
" #{publisher}" unless publisher.empty?
|
57
|
+
end
|
58
|
+
|
59
|
+
def render_edition(edition, opts, _params)
|
60
|
+
" Edition #{edition}" if opts[:with_edition]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class TechnicalCommittee < Base
|
5
|
+
|
6
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
7
|
+
# always need post publisher symbol, because we always have to add "TR"
|
8
|
+
false
|
9
|
+
end
|
10
|
+
|
11
|
+
def render_identifier(params, opts)
|
12
|
+
if params[:wgnumber] && !params[:wgnumber].empty?
|
13
|
+
"%{publisher}%{tctype}%{stage} %{tcnumber}%{sctype}%{scnumber}%{wgtype}%{wgnumber} %{number}" % params
|
14
|
+
else
|
15
|
+
"%{publisher}%{tctype}%{stage} %{tcnumber}%{sctype}%{wgtype}%{scnumber} %{number}" % params
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def render_tctype(tctype, _params, _opts)
|
20
|
+
if tctype.is_a?(Array)
|
21
|
+
tctype.join("/")
|
22
|
+
else
|
23
|
+
tctype
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def render_number(number, _params, _opts)
|
28
|
+
"N#{number}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def render_sctype(sctype, _params, _opts)
|
32
|
+
"/#{sctype}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def render_wgtype(wgtype, _params, _opts)
|
36
|
+
"/#{wgtype}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def render_wgnumber(wgnumber, _params, _opts)
|
40
|
+
" #{wgnumber}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def render_scnumber(scnumber, _params, _opts)
|
44
|
+
" #{scnumber}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class TechnicalReport < Base
|
5
|
+
|
6
|
+
TYPE = "TR".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "TR"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class TechnicalSpecification < Base
|
5
|
+
|
6
|
+
TYPE = "TS".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "TR"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "base"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class TechnologyTrendsAssessments < Base
|
5
|
+
|
6
|
+
TYPE = "TTA".freeze
|
7
|
+
|
8
|
+
def omit_post_publisher_symbol?(_typed_stage, _stage, _opts)
|
9
|
+
# always need post publisher symbol, because we always have to add "TR"
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative "urn-supplement"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class UrnAmendment < UrnSupplement
|
5
|
+
TYPE = "amd".freeze
|
6
|
+
|
7
|
+
def render_identifier(params)
|
8
|
+
"%{base}%{stage}:amd%{year}%{number}%{edition}" \
|
9
|
+
"#{@params[:base].language ? (':' + @params[:base].language) : ''}" % params
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative "urn-supplement"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class UrnCorrigendum < UrnSupplement
|
5
|
+
TYPE = "cor".freeze
|
6
|
+
|
7
|
+
def render_identifier(params)
|
8
|
+
"%{base}%{stage}:cor%{year}%{number}%{edition}" \
|
9
|
+
"#{@params[:base].language ? (':' + @params[:base].language) : ''}" % params
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative "urn"
|
2
|
+
|
1
3
|
module Pubid::Iso::Renderer
|
2
4
|
class UrnDir < Urn
|
3
5
|
|
@@ -5,9 +7,15 @@ module Pubid::Iso::Renderer
|
|
5
7
|
res = ("urn:iso:doc:%{publisher}%{copublisher}:dir%{dirtype}%{number}%{year}%{supplement}" % params)
|
6
8
|
|
7
9
|
if params.key?(:joint_document)
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
if params[:joint_document].is_a?(Pubid::Iso::Identifier::Supplement)
|
11
|
+
joint_params = params[:joint_document].get_params
|
12
|
+
res += ":#{joint_params[:base].publisher.downcase}:sup:%{year}" % joint_params
|
13
|
+
else
|
14
|
+
joint_params = prerender_params(params[:joint_document].get_params, {})
|
15
|
+
joint_params.default = ""
|
16
|
+
res += (":%{publisher}%{copublisher}%{dirtype}%{number}%{supplement}" % joint_params)
|
17
|
+
end
|
18
|
+
|
11
19
|
end
|
12
20
|
|
13
21
|
res
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative "urn"
|
2
|
+
|
3
|
+
module Pubid::Iso::Renderer
|
4
|
+
class UrnSupplement < Urn
|
5
|
+
TYPE = "sup".freeze
|
6
|
+
|
7
|
+
def render_identifier(params)
|
8
|
+
"%{base}%{stage}:#{self.class::TYPE}%{publisher}%{year}%{number}%{edition}" \
|
9
|
+
"#{@params[:base].language ? (':' + @params[:base].language) : ''}" % params
|
10
|
+
end
|
11
|
+
|
12
|
+
def render_base(base, _opts, _params)
|
13
|
+
return base.urn if base.base || base.is_a?(Pubid::Iso::Identifier::Directives)
|
14
|
+
|
15
|
+
# to avoid rendering language as part of base
|
16
|
+
Urn.new(base.get_params).render
|
17
|
+
end
|
18
|
+
|
19
|
+
def render_number(number, _opts, params)
|
20
|
+
if params[:year]
|
21
|
+
":v#{number}"
|
22
|
+
else
|
23
|
+
":#{number}:v1"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def render_publisher(publisher, _opts, _params)
|
28
|
+
":#{publisher.downcase}" unless publisher.empty?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|