Class: Pubid::Itu::Renderer::Base
- Inherits:
-
Core::Renderer::Base
- Object
- Core::Renderer::Base
- Pubid::Itu::Renderer::Base
show all
- Defined in:
- lib/pubid/itu/renderer/base.rb
Constant Summary
collapse
- TYPE_PREFIX =
"".freeze
- LANGUAGES =
Pubid::Core::Renderer::Base::LANGUAGES.merge("zh" => "C").freeze
Instance Method Summary
collapse
-
#render(**args) ⇒ Object
-
#render_addendum(addendum, opts, params) ⇒ Object
-
#render_amendment(amendment, _opts, _params) ⇒ Object
-
#render_annex(annex, _opts, _params) ⇒ Object
-
#render_annex_to_identifier(params, opts) ⇒ Object
Render “Annex to …” identifier (annex of a Special Publication, where the annex itself has no number).
-
#render_appendix(appendix, _opts, _params) ⇒ Object
-
#render_base_identifier(**args) ⇒ Object
-
#render_corrigendum(corrigendum, opts, params) ⇒ Object
-
#render_date(date, opts, _params) ⇒ Object
-
#render_identifier(params, opts) ⇒ Object
can prepend entity, can postpend, can use item holder.
-
#render_language(language, _opts, _params) ⇒ Object
-
#render_number(number, _opts, params) ⇒ Object
-
#render_part(part, opts, _params) ⇒ Object
-
#render_publisher(publisher, opts, params) ⇒ Object
-
#render_range(range, _opts, params) ⇒ Object
-
#render_second_number(second_number, _opts, _params) ⇒ Object
-
#render_series(series, _opts, params) ⇒ Object
-
#render_structural(params) ⇒ Object
-
#render_subseries(subseries, _opts, _params) ⇒ Object
-
#render_supplement(supplement, _opts, _params) ⇒ Object
-
#render_type(type, opts, _params) ⇒ Object
-
#render_type_series(params) ⇒ Object
-
#type_translation_affixes(opts) ⇒ Object
Instance Method Details
#render(**args) ⇒ Object
7
8
9
|
# File 'lib/pubid/itu/renderer/base.rb', line 7
def render(**args)
render_base_identifier(**args) + @prerendered_params[:language].to_s
end
|
#render_addendum(addendum, opts, params) ⇒ Object
153
154
155
|
# File 'lib/pubid/itu/renderer/base.rb', line 153
def render_addendum(addendum, opts, params)
"#{render_date(addendum[:date], opts, params)} Add. #{addendum[:number]}"
end
|
#render_amendment(amendment, _opts, _params) ⇒ Object
117
118
119
|
# File 'lib/pubid/itu/renderer/base.rb', line 117
def render_amendment(amendment, _opts, _params)
" Amd #{amendment[:number]}"
end
|
#render_annex(annex, _opts, _params) ⇒ Object
141
142
143
|
# File 'lib/pubid/itu/renderer/base.rb', line 141
def render_annex(annex, _opts, _params)
" Annex #{annex[:number]}" if annex[:number]
end
|
#render_annex_to_identifier(params, opts) ⇒ Object
Render “Annex to …” identifier (annex of a Special Publication, where the annex itself has no number). Three forms:
* default (no language): English structural, "Annex to ITU OB No. 1000"
* short with language: structural translation using annex_to
* long with language: per-language annex_long template (title-style)
Languages without an annex_to entry (ru, zh) use the long template for the short form too.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/pubid/itu/renderer/base.rb', line 40
def render_annex_to_identifier(params, opts)
lang = opts[:i18n_lang]&.to_s
long_template = lang && Pubid::Itu::I18N["annex_long"]&.fetch(lang, nil)
if opts[:format] == :long && long_template
return long_template % { number: @params[:number] }
end
annex_translation = lang && Pubid::Itu::I18N["annex_to"]&.fetch(lang, nil)
if annex_translation
return "#{render_structural(params)} #{annex_translation}" if lang == "ar"
return "#{annex_translation} #{render_structural(params)}"
end
return long_template % { number: @params[:number] } if long_template
"Annex to #{render_structural(params)}"
end
|
#render_appendix(appendix, _opts, _params) ⇒ Object
157
158
159
|
# File 'lib/pubid/itu/renderer/base.rb', line 157
def render_appendix(appendix, _opts, _params)
" App. #{appendix[:number]}"
end
|
#render_base_identifier(**args) ⇒ Object
15
16
17
18
19
20
|
# File 'lib/pubid/itu/renderer/base.rb', line 15
def render_base_identifier(**args)
prerender(**args)
render_identifier(@prerendered_params, args)
end
|
#render_corrigendum(corrigendum, opts, params) ⇒ Object
145
146
147
|
# File 'lib/pubid/itu/renderer/base.rb', line 145
def render_corrigendum(corrigendum, opts, params)
"#{render_date(corrigendum[:date], opts, params)} Cor. #{corrigendum[:number]}"
end
|
#render_date(date, opts, _params) ⇒ Object
95
96
97
98
99
100
101
|
# File 'lib/pubid/itu/renderer/base.rb', line 95
def render_date(date, opts, _params)
return if opts[:without_date]
return " (#{date[:year]})" unless date[:month]
" (%<month>02d/%<year>d)" % date
end
|
#render_identifier(params, opts) ⇒ Object
can prepend entity, can postpend, can use item holder
24
25
26
27
28
29
30
31
|
# File 'lib/pubid/itu/renderer/base.rb', line 24
def render_identifier(params, opts)
if @params[:annex] && @params[:annex][:number].nil?
return render_annex_to_identifier(params, opts)
end
prefix, postfix = type_translation_affixes(opts)
"#{prefix}#{render_structural(params)}#{postfix}"
end
|
#render_language(language, _opts, _params) ⇒ Object
161
162
163
164
|
# File 'lib/pubid/itu/renderer/base.rb', line 161
def render_language(language, _opts, _params)
code = LANGUAGES[language]
code ? "-#{code}" : nil
end
|
#render_number(number, _opts, params) ⇒ Object
89
90
91
92
93
|
# File 'lib/pubid/itu/renderer/base.rb', line 89
def render_number(number, _opts, params)
return " No. #{number}" if params[:series] == "OB"
number
end
|
#render_part(part, opts, _params) ⇒ Object
107
108
109
110
111
|
# File 'lib/pubid/itu/renderer/base.rb', line 107
def render_part(part, opts, _params)
return "-#{part.reverse.join('-')}" if part.is_a?(Array)
"-#{part}"
end
|
#render_publisher(publisher, opts, params) ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'lib/pubid/itu/renderer/base.rb', line 80
def render_publisher(publisher, opts, params)
if opts[:i18n_lang] &&
(publisher_translation = Pubid::Itu::I18N["publisher"][publisher]&.fetch(opts[:i18n_lang].to_s, nil))
return super(publisher_translation, opts, params)
end
super
end
|
#render_range(range, _opts, params) ⇒ Object
149
150
151
|
# File 'lib/pubid/itu/renderer/base.rb', line 149
def render_range(range, _opts, params)
"-#{params[:series]}.#{range[:number]}"
end
|
#render_second_number(second_number, _opts, _params) ⇒ Object
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/pubid/itu/renderer/base.rb', line 125
def render_second_number(second_number, _opts, _params)
result = "/#{second_number[:series]}.#{second_number[:number]}"
if second_number[:subseries]
result += ".#{second_number[:subseries]}"
end
if second_number[:part]
result += "-#{second_number[:part]}"
end
result
end
|
#render_series(series, _opts, params) ⇒ Object
113
114
115
|
# File 'lib/pubid/itu/renderer/base.rb', line 113
def render_series(series, _opts, params)
series + (params[:series] != "OB" && params[:number] ? "." : "")
end
|
#render_structural(params) ⇒ Object
61
62
63
64
65
66
|
# File 'lib/pubid/itu/renderer/base.rb', line 61
def render_structural(params)
pub_sector = params[:sector].to_s.empty? ? "%{publisher}" : "%{publisher}-%{sector}"
"#{pub_sector} #{render_type_series(params)}%{number}%{subseries}"\
"%{part}%{second_number}%{range}%{annex}%{amendment}%{corrigendum}%{supplement}"\
"%{addendum}%{appendix}%{date}" % params
end
|
#render_subseries(subseries, _opts, _params) ⇒ Object
121
122
123
|
# File 'lib/pubid/itu/renderer/base.rb', line 121
def render_subseries(subseries, _opts, _params)
".#{subseries}"
end
|
#render_supplement(supplement, _opts, _params) ⇒ Object
137
138
139
|
# File 'lib/pubid/itu/renderer/base.rb', line 137
def render_supplement(supplement, _opts, _params)
" Suppl. #{supplement[:number]}"
end
|
#render_type(type, opts, _params) ⇒ Object
103
104
105
|
# File 'lib/pubid/itu/renderer/base.rb', line 103
def render_type(type, opts, _params)
"#{type}-" if opts[:with_type]
end
|
#render_type_series(params) ⇒ Object
11
12
13
|
# File 'lib/pubid/itu/renderer/base.rb', line 11
def render_type_series(params)
"%{type}%{series}" % params
end
|
#type_translation_affixes(opts) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/pubid/itu/renderer/base.rb', line 68
def type_translation_affixes(opts)
type_translation = opts[:i18n_lang] &&
Pubid::Itu::I18N["type"][@params[:type]]&.fetch(opts[:i18n_lang].to_s, nil)
return ["", ""] unless type_translation
case opts[:i18n_lang]
when :zh then ["", type_translation]
when :ar then ["", " #{type_translation}"]
else ["#{type_translation} ", ""]
end
end
|