class RDF::Raptor::FFI::V2::Serializer

This class provides the functionality of turning RDF triples into syntaxes - RDF serializing.

@see librdf.org/raptor/api-1.4/raptor-section-serializer.html

Attributes

iostream[R]

Public Class Methods

new(ptr_or_name) click to toggle source

@overload initialize(ptr)

@param  [FFI::Pointer] ptr

@overload initialize(name)

@param  [Symbol, String] name
Calls superclass method
# File lib/rdf/raptor/ffi/v2/serializer.rb, line 30
def initialize(ptr_or_name)
  ptr = case ptr_or_name
    when FFI::Pointer then ptr_or_name
    when Symbol       then V2.raptor_new_serializer(V2.world, ptr_or_name.to_s)
    when String       then V2.raptor_new_serializer(V2.world, ptr_or_name)
    else nil
  end
  raise ArgumentError, "invalid argument: #{ptr_or_name.inspect}" if ptr.nil? || ptr.null?
  super(ptr)
end
release(ptr) click to toggle source

Releases ‘libraptor` memory associated with this structure.

@param [FFI::Pointer] ptr @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 46
def self.release(ptr)
  V2.raptor_free_serializer(ptr)
end

Public Instance Methods

error_handler=(handler) click to toggle source

@param [Proc] handler @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 53
def error_handler=(handler)
  V2.raptor_serializer_set_error_handler(self, self, handler) if V2.respond_to?(:raptor_serializer_set_error_handler)
end
finish() click to toggle source

@return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 116
def finish
  if V2.raptor_serializer_serialize_end(self).nonzero?
    raise RDF::WriterError, "raptor_serialize_end() failed"
  end
  @iostream = @base_uri = nil # allows GC
end
prefix(prefixes) click to toggle source

@param [Hash{namespace => uri}] prefixes @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 106
def prefix(prefixes)
  prefixes.each do |name, uri|
    if V2.raptor_serializer_set_namespace(self, V2::URI.new(uri.to_s), name.to_s).nonzero?
      raise RDF::WriterError, "raptor_serializer_set_namespace() failed"
    end
  end
end
serialize_raw_statement(statement) click to toggle source

@param [V2::Statement] statement @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 144
def serialize_raw_statement(statement)
  if V2.raptor_serializer_serialize_statement(self, statement).nonzero?
    raise RDF::WriterError, "raptor_serialize_statement() failed"
  end
end
serialize_triple(subject, predicate, object) click to toggle source

@param [RDF::Resource] subject @param [RDF::URI] predicate @param [RDF::Term] object @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 128
def serialize_triple(subject, predicate, object)
  raptor_statement = V2::Statement.new
  raptor_statement.subject   = subject
  raptor_statement.predicate = predicate
  raptor_statement.object    = object
  begin
    serialize_raw_statement(raptor_statement)
  ensure
    raptor_statement.release
    raptor_statement = nil
  end
end
start_to(output, **options) click to toggle source

@param [Object] output

where output should be written to

@param [Hash{Symbol => Object}] options

any additional options for serializing

@option options [String, to_s] :base_uri (nil)

the base URI to use when resolving relative URIs

@return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 72
def start_to(output, **options)
  if output.respond_to?(:write)
    start_to_stream(output, **options)
   else
    raise ArgumentError, "don't know how to serialize to #{output.inspect}"
  end
end
start_to_iostream(iostream, base_uri: nil, **options) click to toggle source

@param [V2::IOStream] iostream @param [Hash{Symbol => Object}] options

any additional options for serializing (see {#start_to})

@return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 95
def start_to_iostream(iostream, base_uri: nil, **options)
  @iostream = iostream # prevents premature GC
  @base_uri = base_uri.to_s.empty? ? nil : V2::URI.new(base_uri.to_s)
  if V2.raptor_serializer_start_to_iostream(self, @base_uri, @iostream).nonzero?
    raise RDF::WriterError, "raptor_serialize_start_to_iostream() failed"
  end
end
start_to_stream(stream, **options) click to toggle source

@param [IO, StringIO] stream @param [Hash{Symbol => Object}] options

any additional options for serializing (see {#start_to})

@return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 85
def start_to_stream(stream, **options)
  iostream = V2::IOStream.new(V2::IOStreamHandler.new(stream), free_iostream: self[:free_iostream_on_end])
  start_to_iostream(iostream, **options)
end
warning_handler=(handler) click to toggle source

@param [Proc] handler @return [void]

# File lib/rdf/raptor/ffi/v2/serializer.rb, line 60
def warning_handler=(handler)
  V2.raptor_serializer_set_warning_handler(self, self, handler) if V2.respond_to?(:raptor_serializer_set_warning_handler)
end