Sha256: f3715e7139c84f4f920cb52baab34a0c72976b809285c728226f4235b1df8d17

Contents?: true

Size: 1.79 KB

Versions: 6

Compression:

Stored size: 1.79 KB

Contents

module RDF::TriG
  ##
  # Streaming writer interface
  # @author [Gregg Kellogg](http://greggkellogg.net/)
  module StreamingWriter
    ##
    # Write out a statement, retaining current
    # `subject` and `predicate` to create more compact output
    # @return [void] `self`
    def stream_statement(statement)
      if statement.graph_name != @streaming_graph
        stream_epilogue
        if statement.graph_name
          @output.write "#{format_term(statement.graph_name, options)} {"
        end
        @streaming_graph, @streaming_subject, @streaming_predicate = statement.graph_name, statement.subject, statement.predicate
        @output.write "#{format_term(statement.subject, options)} "
        @output.write "#{format_term(statement.predicate, options)} "
      elsif statement.subject != @streaming_subject
        @output.puts " ." if @previous_statement
        @output.write "#{indent(@streaming_subject ? 1 : 0)}"
        @streaming_subject, @streaming_predicate = statement.subject, statement.predicate
        @output.write "#{format_term(statement.subject, options)} "
        @output.write "#{format_term(statement.predicate, options)} "
      elsif statement.predicate != @streaming_predicate
        @streaming_predicate = statement.predicate
        @output.write ";\n#{indent(@streaming_subject ? 2 : 1)}#{format_term(statement.predicate, options)} "
      else
        @output.write ",\n#{indent(@streaming_subject ? 3 : 2)}"
      end
      @output.write("#{format_term(statement.object, options)}")
      @previous_statement = statement
    end

    ##
    # Complete open statements
    # @return [void] `self`
    def stream_epilogue
      case
      when @previous_statement.nil? ;
      when @streaming_graph then @output.puts " }"
      else @output.puts " ."
      end
    end

    private
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rdf-trig-3.0.0 lib/rdf/trig/streaming_writer.rb
rdf-trig-2.2.0 lib/rdf/trig/streaming_writer.rb
rdf-trig-2.0.0 lib/rdf/trig/streaming_writer.rb
rdf-trig-2.0.0.beta1 lib/rdf/trig/streaming_writer.rb
rdf-trig-1.99.0.1 lib/rdf/trig/streaming_writer.rb
rdf-trig-1.99.0 lib/rdf/trig/streaming_writer.rb