class RDF::Raptor::FFI::Writer

FFI writer implementation.

Constants

ERROR_HANDLER
WARNING_HANDLER

Attributes

serializer[R]

The Raptor serializer instance.

@return [V2::Serializer]

Public Class Methods

new(output = $stdout, **options, &block) click to toggle source

Initializes the FFI writer instance.

@param [IO, File] output @param [Hash{Symbol => Object}] options

any additional options (see `RDF::Writer#initialize`)

@yield [writer] ‘self` @yieldparam [RDF::Writer] writer @yieldreturn [void] ignored

Calls superclass method
# File lib/rdf/raptor/ffi.rb, line 159
def initialize(output = $stdout, **options, &block)
  @format = self.class.format.rapper_format
  @serializer = V2::Serializer.new(@format)
  @serializer.error_handler   = ERROR_HANDLER
  @serializer.warning_handler = WARNING_HANDLER
  @serializer.start_to(output, **options)
  super
end
serialize(value) click to toggle source
# File lib/rdf/raptor/ffi.rb, line 182
def self.serialize(value)
  output = StringIO.new
  writer = new(output)
  case value
  when nil then nil
  when FalseClass then value.to_s
  when RDF::Statement
    writer.write_triple(statement.subject, statement.predicate, statement.object)
  when RDF::Term
    writer.write_term(value)
  else
    raise ArgumentError, "expected an RDF::Statement or RDF::Term, but got #{value.inspect}"
  end

  output.to_s
end

Public Instance Methods

write_epilogue() click to toggle source

@return [void] @see RDF::Writer#write_epilogue

Calls superclass method
# File lib/rdf/raptor/ffi.rb, line 224
def write_epilogue
  @serializer.finish
  super
end
write_prologue() click to toggle source

@return [void] @see RDF::Writer#write_prologue

Calls superclass method
# File lib/rdf/raptor/ffi.rb, line 216
def write_prologue
  @serializer.prefix(self.prefixes)
  super
end
write_term(value) click to toggle source
# File lib/rdf/raptor/ffi.rb, line 209
def write_term(value)
  raise NotImplementedError
end
write_triple(subject, predicate, object) click to toggle source

@param [RDF::Resource] subject @param [RDF::URI] predicate @param [RDF::Term] object @return [void] @see RDF::Writer#write_triple

# File lib/rdf/raptor/ffi.rb, line 205
def write_triple(subject, predicate, object)
  @serializer.serialize_triple(subject, predicate, object)
end