class Redlander::Uri

@api private Uri (for internal use)

Public Class Methods

new(source) click to toggle source

Create Redlander::Uri

@param [URI, String] source String or URI object to wrap into Uri. @raise [NotImplementedError] if cannot create a Uri from the given source. @raise [RedlandError] if it fails to create a Uri.

# File lib/redlander/uri.rb, line 36
def initialize(source)
  @source = source.is_a?(FFI::Pointer) ? wrap(source) : source
end

Private Class Methods

finalize_uri(rdf_uri_ptr) click to toggle source

@api private

# File lib/redlander/uri.rb, line 26
def finalize_uri(rdf_uri_ptr)
  proc { Redland.librdf_free_uri(rdf_uri_ptr) }
end

Public Instance Methods

==(other_uri)
Alias for: eql?
eql?(other_uri) click to toggle source
# File lib/redlander/uri.rb, line 44
def eql?(other_uri)
  other_uri.is_a?(Uri) && (Redland.librdf_uri_equals(rdf_uri, other_uri.rdf_uri) != 0)
end
Also aliased as: ==
rdf_uri() click to toggle source

@api private

# File lib/redlander/uri.rb, line 6
def rdf_uri
  unless instance_variable_defined?(:@rdf_uri)
    @rdf_uri = case @source
               when FFI::Pointer
                 @source
               when URI, String
                 Redland.librdf_new_uri(Redlander.rdf_world, @source.to_s)
               else
                 raise NotImplementedError, "Cannot create Uri from '#{@source.inspect}'"
               end
    raise RedlandError, "Failed to create Uri from '#{@source.inspect}'" if @rdf_uri.null?
    ObjectSpace.define_finalizer(self, self.class.send(:finalize_uri, @rdf_uri))
  end
  @rdf_uri
end
to_s() click to toggle source
# File lib/redlander/uri.rb, line 40
def to_s
  Redland.librdf_uri_to_string(rdf_uri)
end

Private Instance Methods

wrap(u) click to toggle source

@api private

# File lib/redlander/uri.rb, line 53
def wrap(u)
  if u.null?
    raise RedlandError, "Failed to create Uri"
  else
    Redland.librdf_new_uri_from_uri(u)
  end
end