Skip to content

rdfjs-base/sink-to-duplex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@rdfjs/sink-to-duplex

Build Status

npm version

Creates a duplex wrapper for RDFJS Sink. With the duplex wrapper it's possible to use a RDFJS Sink like a Node.js duplex stream with a Readable and Writable interface.

Usage

The package exports just the factory function to create the wrapper. A second argument can be given that will be used to create the duplex stream. That second argument could be needed to enable object mode on the Readable or Writeable interface.

Enable object mode on the Readable interface:

sinkToDuplex(new N3Parser(), { readableObjectMode: true })

Enable object mode on the Writable interface:

sinkToDuplex(new NTriplesSerializer(), { writableObjectMode: true })

Example

In this examples triples from a Turtle file are parsed, serialized with the N-Triples serializer and written to stdout. Without the duplex wrapper nested .import() calls are required:

const fs = require('fs')
const N3Parser = require('@rdfjs/parser-n3')
const NTriplesSerializer = require('@rdfjs/serializer-ntriples')

const input = fs.createReadStream('test.ttl')
const parser = new N3Parser()
const serializer = new NTriplesSerializer()

serializer.import(parser.import(input)).pipe(process.stdout)

With the duplex wrapper it's possible to use a .pipe() chain:

const fs = require('fs')
const sinkToDuplex = require('@rdfjs/sink-to-duplex')
const N3Parser = require('@rdfjs/parser-n3')
const NTriplesSerializer = require('@rdfjs/serializer-ntriples')

const input = fs.createReadStream('test.ttl')
const parser = sinkToDuplex(new N3Parser(), { readableObjectMode: true })
const serializer = sinkToDuplex(new NTriplesSerializer(), { writableObjectMode: true })

input.pipe(parser).pipe(serializer).pipe(process.stdout)

About

Duplex wrapper for RDFJS Sink

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published