Simple decorator of IRdfWriter
which prepends the output with a comment string.
Note that it is up to the caller to provide a string which will be a valid comment according to the syntax of chose RDF serialization.
public class CommentHeaderWriter : BaseRdfWriter | |
{ | |
private readonly IRdfWriter inner; | |
private readonly string header; | |
public CommentHeaderWriter(IRdfWriter writer, string header) | |
{ | |
this.inner = writer; | |
this.header = header; | |
} | |
public override void Save(IGraph g, string filename) | |
{ | |
using (var stream = File.Open(filename, FileMode.Create)) | |
{ | |
this.Save(g, new StreamWriter(stream, new UTF8Encoding(Options.UseBomForUtf8))); | |
} | |
} | |
protected override void SaveInternal(IGraph graph, TextWriter output) | |
{ | |
output.WriteLine(_header); | |
output.WriteLine(); | |
this.inner.Save(graph, output); | |
} | |
public override event RdfWriterWarning Warning | |
{ | |
add | |
{ | |
this.inner.Warning += value; | |
} | |
remove | |
{ | |
this.inner.Warning -= value; | |
} | |
} | |
} |
class Program | |
{ | |
public static void Main() | |
{ | |
Graph graph = new Graph(); | |
graph.Assert( | |
new VDS.RDF.Triple( | |
graph.CreateBlankNode(), | |
graph.CreateUriNode(new Uri("http://schema.org/name")), | |
graph.CreateLiteralNode("Tomasz"))); | |
var comment = "# Created with dotNetRDF"; | |
var output = new System.IO.StringWriter(); | |
var actualWriter = new CompressingTurtleWriter(); | |
var writer = new CommentHeaderWriter(actualWriter, comment); | |
writer.Save(graph, output); | |
} | |
} |