Sha256: bc939d4c013e1deef7ad2c24855a99a8b0f0b5cdb92260d83953700f181e2f30

Contents?: true

Size: 965 Bytes

Versions: 3

Compression:

Stored size: 965 Bytes

Contents

module Redlander
  class Uri
    attr_reader :rdf_uri

    def initialize(source)
      @rdf_uri = case source
                 when URI, String
                   Redland.librdf_new_uri(Redlander.rdf_world, source.to_s)
                 when Node
                   if source.resource?
                     Redland.librdf_node_get_uri(source.rdf_node)
                   elsif source.literal?
                     Redland.librdf_node_get_literal_value_datatype_uri(source.rdf_node)
                   else
                     raise NotImplementedError.new
                   end
                 else
                   # TODO
                   raise NotImplementedError.new
                 end
      raise RedlandError.new("Failed to create URI from '#{source.inspect}'") if @rdf_uri.null?
      ObjectSpace.define_finalizer(self, proc { Redland.librdf_free_uri(@rdf_uri) })
    end

    def to_s
      Redland.librdf_uri_to_string(@rdf_uri)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
redlander-0.3.3 lib/redlander/uri.rb
redlander-0.3.2 lib/redlander/uri.rb
redlander-0.3.1 lib/redlander/uri.rb