diff options
author | David Robillard <d@drobilla.net> | 2019-03-10 16:44:22 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-06-21 18:12:04 +0200 |
commit | 5535ee5eaaab091411787b6f73d05125d8c7d148 (patch) | |
tree | c81863728a94de7d5034c052da992f222e75924b | |
parent | 68b9271054eb73c8e2a4d4ff49f8068a2e01b0e7 (diff) | |
download | serd-5535ee5eaaab091411787b6f73d05125d8c7d148.tar.gz serd-5535ee5eaaab091411787b6f73d05125d8c7d148.tar.bz2 serd-5535ee5eaaab091411787b6f73d05125d8c7d148.zip |
Pass context flags to write_sep()
-rw-r--r-- | src/writer.c | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/writer.c b/src/writer.c index 71e7285d..ba2448fd 100644 --- a/src/writer.c +++ b/src/writer.c @@ -446,8 +446,10 @@ write_top_level_sep(SerdWriter* writer) } static bool -write_sep(SerdWriter* writer, const Sep sep) +write_sep(SerdWriter* writer, const SerdStatementFlags flags, Sep sep) { + (void)flags; + const SepRule* rule = &rules[sep]; // Adjust indent, but tolerate if it would become negative @@ -578,7 +580,7 @@ write_uri_node(SerdWriter* const writer, SerdEnv* const env = writer->iface.env; if (is_inline_start(writer, field, flags)) { - write_sep(writer, SEP_ANON_BEGIN); + write_sep(writer, flags, SEP_ANON_BEGIN); sink(" == ", 4, writer); } @@ -659,7 +661,7 @@ write_curie(SerdWriter* const writer, case SERD_TURTLE: case SERD_TRIG: if (is_inline_start(writer, field, flags)) { - write_sep(writer, SEP_ANON_BEGIN); + write_sep(writer, flags, SEP_ANON_BEGIN); sink(" == ", 4, writer); } write_lname(writer, serd_node_get_string(node), node->n_bytes); @@ -679,10 +681,10 @@ write_blank(SerdWriter* const writer, const char* node_str = serd_node_get_string(node); if (supports_abbrev(writer)) { if (is_inline_start(writer, field, flags)) { - return write_sep(writer, SEP_ANON_BEGIN); + return write_sep(writer, flags, SEP_ANON_BEGIN); } else if ((field == SERD_SUBJECT && (flags & SERD_LIST_S)) || (field == SERD_OBJECT && (flags & SERD_LIST_O))) { - return write_sep(writer, SEP_LIST_BEGIN); + return write_sep(writer, flags, SEP_LIST_BEGIN); } else if (field == SERD_SUBJECT && (flags & SERD_EMPTY_S)) { writer->last_sep = SEP_NONE; // Treat "[]" like anode return sink("[]", 2, writer) == 2; @@ -733,7 +735,7 @@ static void write_pred(SerdWriter* writer, SerdStatementFlags flags, const SerdNode* pred) { write_node(writer, pred, SERD_PREDICATE, flags); - write_sep(writer, SEP_P_O); + write_sep(writer, flags, SEP_P_O); serd_node_set(&writer->context.predicate, pred); } @@ -744,14 +746,14 @@ write_list_obj(SerdWriter* writer, const SerdNode* object) { if (serd_node_equals(object, writer->world->rdf_nil)) { - write_sep(writer, SEP_LIST_END); + write_sep(writer, writer->context.flags, SEP_LIST_END); return true; } if (serd_node_equals(predicate, writer->world->rdf_first)) { write_node(writer, object, SERD_OBJECT, flags); } else { - write_sep(writer, SEP_LIST_SEP); + write_sep(writer, writer->context.flags, SEP_LIST_SEP); } return false; @@ -802,17 +804,17 @@ serd_writer_write_statement(SerdWriter* writer, if ((graph && !serd_node_equals(graph, writer->context.graph)) || (!graph && ctx(writer, SERD_GRAPH))) { if (ctx(writer, SERD_SUBJECT)) { - write_sep(writer, SEP_END_S); + write_sep(writer, writer->context.flags, SEP_END_S); } if (ctx(writer, SERD_GRAPH)) { - write_sep(writer, SEP_GRAPH_END); + write_sep(writer, writer->context.flags, SEP_GRAPH_END); } write_top_level_sep(writer); reset_context(writer, true); if (graph) { TRY(write_node(writer, graph, SERD_GRAPH, flags)); - write_sep(writer, SEP_GRAPH_BEGIN); + write_sep(writer, flags, SEP_GRAPH_BEGIN); serd_node_set(&writer->context.graph, graph); } } @@ -832,7 +834,7 @@ serd_writer_write_statement(SerdWriter* writer, writer->context.indented_object = true; } - write_sep(writer, SEP_END_O); + write_sep(writer, writer->context.flags, SEP_END_O); write_node(writer, object, SERD_OBJECT, flags); } else { // Abbreviate S @@ -842,8 +844,8 @@ serd_writer_write_statement(SerdWriter* writer, } Sep sep = ctx(writer, SERD_PREDICATE) ? SEP_END_P : SEP_S_P; - write_sep(writer, sep); - write_pred(writer, flags, predicate); + write_sep(writer, writer->context.flags, sep); + write_pred(writer, writer->context.flags, predicate); write_node(writer, object, SERD_OBJECT, flags); } } else { @@ -854,8 +856,8 @@ serd_writer_write_statement(SerdWriter* writer, } if (serd_stack_is_empty(&writer->anon_stack)) { - if (ctx(writer, SERD_SUBJECT)) { - write_sep(writer, SEP_END_S); // Terminate last subject + if (ctx(writer, SERD_SUBJECT)) { // Terminate last subject + write_sep(writer, writer->context.flags, SEP_END_S); } write_top_level_sep(writer); } @@ -863,12 +865,12 @@ serd_writer_write_statement(SerdWriter* writer, if (serd_stack_is_empty(&writer->anon_stack)) { write_node(writer, subject, SERD_SUBJECT, flags); if (!(flags & (SERD_ANON_S | SERD_LIST_S))) { - write_sep(writer, SEP_S_P); + write_sep(writer, writer->context.flags, SEP_S_P); } else if (flags & SERD_ANON_S) { - write_sep(writer, SEP_ANON_S_P); + write_sep(writer, writer->context.flags, SEP_ANON_S_P); } } else { - write_sep(writer, SEP_ANON_S_P); + write_sep(writer, writer->context.flags, SEP_ANON_S_P); } reset_context(writer, false); @@ -917,7 +919,7 @@ serd_writer_end_anon(SerdWriter* writer, "unexpected end of anonymous node\n"); } - write_sep(writer, SEP_ANON_END); + write_sep(writer, writer->context.flags, SEP_ANON_END); pop_context(writer); if (serd_node_equals(node, writer->context.subject)) { @@ -932,10 +934,10 @@ SerdStatus serd_writer_finish(SerdWriter* writer) { if (ctx(writer, SERD_SUBJECT)) { - write_sep(writer, SEP_END_S); + write_sep(writer, writer->context.flags, SEP_END_S); } if (ctx(writer, SERD_GRAPH)) { - write_sep(writer, SEP_GRAPH_END); + write_sep(writer, writer->context.flags, SEP_GRAPH_END); } free_context(writer); writer->indent = 0; |