Class: Pubid::Iec::Renderer::Urn
- Inherits:
-
Core::Renderer::Urn
- Object
- Core::Renderer::Urn
- Pubid::Iec::Renderer::Urn
- Defined in:
- lib/pubid/iec/renderer/urn.rb
Direct Known Subclasses
Constant Summary collapse
- STAGES =
{ ACD: 20.99, ACDV: 30.99, ADTR: 40.99, ADTS: 40.99, AFDIS: 40.99, APUB: 50.99, BPUB: 60, CAN: 30.98, CCDV: 40.20, CD: 30.20, CDISH: 50.20, CDM: 30.60, CDPAS: 50.20, CDTR: 50.20, CDTS: 50.20, CDVM: 40.91, CFDIS: 50.20, DECDISH: 50.00, DECFDIS: 50.00, DECPUB: 60.00, DEL: 10.98, DELPUB: 99.60, DTRM: 50.92, DTSM: 50.92, MERGED: 30.97, NCDV: 40.91, NDTR: 50.92, NDTS: 50.92, NFDIS: 50.92, PCC: 30.60, PNW: 10.20, PPUB: 60.60, PRVC: 40.60, PRVD: 50.60, PRVDISH: 50.60, PRVDPAS: 50.60, PRVDTR: 50.60, PRVDTS: 50.60, PRVN: 10.60, PWI: 0, RDISH: 50.00, RFDIS: 50.00, RPUB: 60.00, SPLIT: 30.96, TCDV: 40.00, TDISH: 50.00, TDTR: 50.00, TDTS: 50.00, TPUB: 60.00, WPUB: 95.99 }.freeze
Instance Method Summary collapse
- #render(with_date: true, with_language_code: :iso, annotated: false, **args) ⇒ Object
- #render_amendments(amendments, _opts, _params) ⇒ Object
- #render_conjuction_part(conjuction_parts, _opts, _params) ⇒ Object
- #render_copublisher(copublisher, _opts, _params) ⇒ Object
- #render_corrigendums(corrigendums, _opts, _params) ⇒ Object
- #render_fragment(fragment, _opts, _params) ⇒ Object
- #render_identifier(params) ⇒ Object
- #render_language(language, _opts, _params) ⇒ Object
- #render_number(number, _opts, _params) ⇒ Object
- #render_part(part, _opts, _params) ⇒ Object
- #render_part_version(part_version, _opts, _params) ⇒ Object
- #render_stage(stage, _opts, params) ⇒ Object
- #render_type(type, _, _) ⇒ Object
- #render_vap(vap, _opts, _params) ⇒ Object
- #render_version(version, _opts, _params) ⇒ Object
Instance Method Details
#render(with_date: true, with_language_code: :iso, annotated: false, **args) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/pubid/iec/renderer/urn.rb', line 78 def render(with_date: true, with_language_code: :iso, annotated: false, **args) base = render_base_identifier(**args.merge( with_date: with_date, with_language_code: with_language_code, annotated: annotated, )) lang = strip_leading_colon(@prerendered_params[:language].to_s) if @prerendered_params.key?(:all_parts) "#{base}ser" else "#{base}:#{lang}" end end |
#render_amendments(amendments, _opts, _params) ⇒ Object
130 131 132 |
# File 'lib/pubid/iec/renderer/urn.rb', line 130 def render_amendments(amendments, _opts, _params) amendments&.map(&:urn)&.join || "" end |
#render_conjuction_part(conjuction_parts, _opts, _params) ⇒ Object
114 115 116 117 118 119 120 |
# File 'lib/pubid/iec/renderer/urn.rb', line 114 def render_conjuction_part(conjuction_parts, _opts, _params) if conjuction_parts.is_a?(Array) conjuction_parts.map(&:to_i).sort.map { |conjuction_part| ",#{conjuction_part}" }.join else ",#{conjuction_parts}" end end |
#render_copublisher(copublisher, _opts, _params) ⇒ Object
142 143 144 |
# File 'lib/pubid/iec/renderer/urn.rb', line 142 def render_copublisher(copublisher, _opts, _params) "-" + Array(copublisher).map { |c| c.to_s.downcase }.join("-") end |
#render_corrigendums(corrigendums, _opts, _params) ⇒ Object
134 135 136 |
# File 'lib/pubid/iec/renderer/urn.rb', line 134 def render_corrigendums(corrigendums, _opts, _params) corrigendums&.map(&:urn)&.join || "" end |
#render_fragment(fragment, _opts, _params) ⇒ Object
102 103 104 |
# File 'lib/pubid/iec/renderer/urn.rb', line 102 def render_fragment(fragment, _opts, _params) ":frag:#{fragment}" end |
#render_identifier(params) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/pubid/iec/renderer/urn.rb', line 55 def render_identifier(params) result = "urn:iec:std:#{params[:publisher]}#{params[:copublisher]}" \ "#{params[:type]}:#{params[:number]}" \ "#{params[:part]}#{params[:conjuction_part]}" # Positional fields — always colon-separated even when empty result += ":#{strip_leading_colon(params[:year])}" stage_value = [params[:stage], params[:vap], params[:urn_stage], params[:corrigendum_stage], params[:iteration], params[:version], params[:part_version]].map(&:to_s).join result += ":#{strip_leading_colon(stage_value)}" result += ":#{strip_leading_colon(params[:edition])}" # Non-positional suffixes result += params[:amendments].to_s result += params[:corrigendums].to_s result += params[:fragment].to_s result end |
#render_language(language, _opts, _params) ⇒ Object
138 139 140 |
# File 'lib/pubid/iec/renderer/urn.rb', line 138 def render_language(language, _opts, _params) ":" + (language.is_a?(Array) ? language.join("-") : language) end |
#render_number(number, _opts, _params) ⇒ Object
94 95 96 |
# File 'lib/pubid/iec/renderer/urn.rb', line 94 def render_number(number, _opts, _params) number.to_s.downcase end |
#render_part(part, _opts, _params) ⇒ Object
90 91 92 |
# File 'lib/pubid/iec/renderer/urn.rb', line 90 def render_part(part, _opts, _params) "-#{part}" end |
#render_part_version(part_version, _opts, _params) ⇒ Object
110 111 112 |
# File 'lib/pubid/iec/renderer/urn.rb', line 110 def render_part_version(part_version, _opts, _params) ":v#{part_version}" end |
#render_stage(stage, _opts, params) ⇒ Object
122 123 124 |
# File 'lib/pubid/iec/renderer/urn.rb', line 122 def render_stage(stage, _opts, params) ":stage-#{sprintf('%s', stage.to_s(:urn))}" end |
#render_type(type, _, _) ⇒ Object
126 127 128 |
# File 'lib/pubid/iec/renderer/urn.rb', line 126 def render_type(type, _, _) ":#{type.downcase}" end |
#render_vap(vap, _opts, _params) ⇒ Object
98 99 100 |
# File 'lib/pubid/iec/renderer/urn.rb', line 98 def render_vap(vap, _opts, _params) ":#{vap.map(&:downcase).join('-')}" end |
#render_version(version, _opts, _params) ⇒ Object
106 107 108 |
# File 'lib/pubid/iec/renderer/urn.rb', line 106 def render_version(version, _opts, _params) ":v#{version}" end |