Class: Pubid::Csa::UrnGenerator

Inherits:
UrnGenerator::Base show all
Defined in:
lib/pubid/csa/urn_generator.rb

Instance Attribute Summary

Attributes inherited from UrnGenerator::Base

#identifier

Instance Method Summary collapse

Methods inherited from UrnGenerator::Base

#initialize, #maybe, #urn_edition, #urn_language, #urn_namespace, #urn_part, #urn_publisher, #urn_subpart, #urn_type, #urn_year

Constructor Details

This class inherits a constructor from Pubid::UrnGenerator::Base

Instance Method Details

#generateObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/pubid/csa/urn_generator.rb', line 54

def generate
  parts = ["urn", "csa"]

  prefix = urn_publisher_prefix || "csa"
  parts << prefix

  parts << urn_number if urn_number
  parts << urn_no_number if urn_no_number
  parts << urn_series if urn_series
  parts << urn_series_prefix if urn_series_prefix

  year = urn_year_csa
  if year
    year = "#{identifier.year_prefix}#{year}" if identifier.year_prefix
    parts << year
  end

  parts << urn_reaffirmation if urn_reaffirmation
  parts << urn_package if urn_package
  parts << urn_year_format if urn_year_format
  parts << urn_french if urn_french

  parts.join(":")
end

#urn_frenchObject



50
51
52
# File 'lib/pubid/csa/urn_generator.rb', line 50

def urn_french
  "french" if identifier.french
end

#urn_no_numberObject



18
19
20
# File 'lib/pubid/csa/urn_generator.rb', line 18

def urn_no_number
  "no.#{identifier.no_number}" if identifier.no_number
end

#urn_numberObject



12
13
14
15
16
# File 'lib/pubid/csa/urn_generator.rb', line 12

def urn_number
  return nil unless identifier.code

  identifier.code.value.to_s
end

#urn_packageObject



42
43
44
# File 'lib/pubid/csa/urn_generator.rb', line 42

def urn_package
  "pkg.#{identifier.package}" if identifier.package
end

#urn_publisher_prefixObject



6
7
8
9
10
# File 'lib/pubid/csa/urn_generator.rb', line 6

def urn_publisher_prefix
  return nil unless identifier.publisher_prefix

  identifier.publisher_prefix.to_s.downcase
end

#urn_reaffirmationObject



38
39
40
# File 'lib/pubid/csa/urn_generator.rb', line 38

def urn_reaffirmation
  "reaff.#{identifier.reaffirmation}" if identifier.reaffirmation
end

#urn_seriesObject



22
23
24
# File 'lib/pubid/csa/urn_generator.rb', line 22

def urn_series
  "series.#{identifier.series}" if identifier.series
end

#urn_series_prefixObject



26
27
28
# File 'lib/pubid/csa/urn_generator.rb', line 26

def urn_series_prefix
  "series.#{identifier.series_prefix}" if identifier.series_prefix
end

#urn_year_csaObject



30
31
32
33
34
35
36
# File 'lib/pubid/csa/urn_generator.rb', line 30

def urn_year_csa
  return nil unless identifier.year

  year = identifier.year.to_s
  year = year[-2..] if year.length == 4 && year.start_with?("20")
  year
end

#urn_year_formatObject



46
47
48
# File 'lib/pubid/csa/urn_generator.rb', line 46

def urn_year_format
  "format.dash" if identifier.year_format == "dash"
end