pubid-iso 0.3.1 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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 +38 -0
- data/lib/pubid/iso/identifier/base.rb +365 -0
- data/lib/pubid/iso/identifier/corrigendum.rb +39 -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 +88 -104
- data/lib/pubid/iso/type.rb +3 -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
|