From fc3e5a0a7c9c64d275fec498f0e80dc02444c12d Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 18 Dec 2019 19:09:49 -0500 Subject: Add support for parsing variables This adds a reader flag and serdi option for extending a syntax with support for SPARQL-like variables, for storing things like patterns or simple queries. --- src/writer.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/writer.c') diff --git a/src/writer.c b/src/writer.c index b1404a91..fbc9dd5d 100644 --- a/src/writer.c +++ b/src/writer.c @@ -880,6 +880,18 @@ write_blank(SerdWriter* const writer, return st; } +SERD_WARN_UNUSED_RESULT static SerdStatus +write_variable(SerdWriter* const writer, const SerdNode* node) +{ + SerdStatus st = SERD_SUCCESS; + + TRY(st, esink("?", 1, writer)); + TRY(st, esink(serd_node_string(node), node->n_bytes, writer)); + + writer->last_sep = SEP_NONE; + return st; +} + SERD_WARN_UNUSED_RESULT static SerdStatus write_node(SerdWriter* writer, const SerdNode* node, @@ -895,6 +907,8 @@ write_node(SerdWriter* writer, return write_curie(writer, node, field, flags); case SERD_BLANK: return write_blank(writer, node, field, flags); + case SERD_VARIABLE: + return write_variable(writer, node); } return SERD_ERR_INTERNAL; -- cgit v1.2.1