class URI::URN::Generic

Constants

COMPONENT
NID_PATTERN
NSS_PATTERN
URN_CHARS_PATTERN
URN_REGEXP

Attributes

nid[R]
nss[R]

Public Class Methods

build(args) click to toggle source
Calls superclass method
# File lib/uri/urn.rb, line 31
def self.build(args)
  nid = self.to_s.sub(/\A.*::/, '').downcase
  unless nid == 'generic'
    if args.kind_of?(Array)
      args = [nid] + args
    elsif args.kind_of?(Hash)
      args[:nid] = nid
    end
  end
  tmp = Util.make_components_hash(self, args)
  tmp[:scheme] = 'urn'
  tmp[:opaque] = "%{nid}:%{nss}" % tmp

  return super(tmp)
end
new(*arg) click to toggle source
Calls superclass method
# File lib/uri/urn.rb, line 47
def initialize(*arg)
  super(*arg)
  if arg[-1]
    self.opaque = @opaque
  end
end

Public Instance Methods

nid=(value) click to toggle source
# File lib/uri/urn.rb, line 54
def nid=(value)
  check_nid(value)
  set_nid(value)
  value
end
normalize!() click to toggle source
Calls superclass method
# File lib/uri/urn.rb, line 80
def normalize!
  super
  set_nid(self.nid.downcase)
end
nss=(value) click to toggle source
# File lib/uri/urn.rb, line 60
def nss=(value)
  check_nss(value)
  set_nss(value)
  value
end
opaque=(value) click to toggle source
# File lib/uri/urn.rb, line 66
def opaque=(value)
  check_opaque(value)

  if URN_REGEXP =~ value
    self.nid = $~['nid']
    self.nss = $~['nss']
  else
    raise InvalidURIError, "bad URI(nid nor nss not set?): #{self}"
  end

  set_opaque(value)
  value
end

Protected Instance Methods

set_nid(nid) click to toggle source
# File lib/uri/urn.rb, line 87
def set_nid(nid)
  @nid = nid
end
set_nss(nss) click to toggle source
# File lib/uri/urn.rb, line 91
def set_nss(nss)
  @nss = nss
end

Private Instance Methods

check_nid(value) click to toggle source
# File lib/uri/urn.rb, line 97
def check_nid(value)
  if value !~ /\A#{NID_PATTERN}\z/o
    raise InvalidComponentError, "bad component(expected nid component: #{value})"
  end

  return true
end
check_nss(value) click to toggle source
# File lib/uri/urn.rb, line 105
def check_nss(value)
  if value !~ /\A#{self.class::NSS_PATTERN}\z/ # Do not set `o'(optimize) switch. This regepx may be overwritten at subclasses
    raise InvalidComponentError, "bad component(expected nss component: #{value})"
  end

  return true
end