aboutsummaryrefslogtreecommitdiffstats
path: root/src/writer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/writer.c')
-rw-r--r--src/writer.c52
1 files changed, 11 insertions, 41 deletions
diff --git a/src/writer.c b/src/writer.c
index c86b066d..bfce4f9e 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -761,7 +761,7 @@ is_name(const char* buf, const size_t len)
{
// TODO: This is more strict than it should be
for (size_t i = 0; i < len; ++i) {
- if (!(is_alpha(buf[i]) || is_digit(buf[i]))) {
+ if (!(is_alpha(buf[i]) || is_digit(buf[i]) || lname_must_escape(buf[i]))) {
return false;
}
}
@@ -811,11 +811,11 @@ write_uri_node(SerdWriter* const writer,
const SerdNode* const node,
const SerdField field)
{
- SerdStatus st = SERD_SUCCESS;
- const SerdNode* prefix = NULL;
- SerdStringView suffix = {NULL, 0};
- const char* node_str = serd_node_string(node);
- const bool has_scheme = serd_uri_string_has_scheme(node_str);
+ SerdStatus st = SERD_SUCCESS;
+ SerdStringView prefix = {NULL, 0};
+ SerdStringView suffix = {NULL, 0};
+ const char* node_str = serd_node_string(node);
+ const bool has_scheme = serd_uri_string_has_scheme(node_str);
if (supports_abbrev(writer)) {
if (field == SERD_PREDICATE &&
serd_node_equals(node, writer->world->rdf_type)) {
@@ -827,12 +827,12 @@ write_uri_node(SerdWriter* const writer,
}
if (has_scheme && !(writer->flags & SERD_WRITE_UNQUALIFIED) &&
- serd_env_qualify_in_place(writer->env, node, &prefix, &suffix) &&
- is_name(serd_node_string(prefix), serd_node_length(prefix)) &&
- is_name(suffix.buf, suffix.len)) {
- TRY(st, write_uri_from_node(writer, prefix));
+ !serd_env_qualify(
+ writer->env, serd_node_string_view(node), &prefix, &suffix) &&
+ is_name(prefix.buf, prefix.len) && is_name(suffix.buf, suffix.len)) {
+ TRY(st, write_lname(writer, prefix.buf, prefix.len));
TRY(st, esink(":", 1, writer));
- return ewrite_uri(writer, suffix.buf, suffix.len);
+ return write_lname(writer, suffix.buf, suffix.len);
}
}
@@ -848,33 +848,6 @@ write_uri_node(SerdWriter* const writer,
}
SERD_WARN_UNUSED_RESULT static SerdStatus
-write_curie(SerdWriter* const writer, const SerdNode* const node)
-{
- writer->last_sep = SEP_NONE;
-
- SerdStringView prefix = {NULL, 0};
- SerdStringView suffix = {NULL, 0};
- SerdStatus st = SERD_SUCCESS;
-
- if (writer->syntax == SERD_NTRIPLES || writer->syntax == SERD_NQUADS) {
- const SerdStringView curie = serd_node_string_view(node);
- if ((st = serd_env_expand_in_place(writer->env, curie, &prefix, &suffix))) {
- return w_err(writer,
- st,
- "undefined namespace prefix in `%s'",
- serd_node_string(node));
- }
-
- TRY(st, esink("<", 1, writer));
- TRY(st, ewrite_uri(writer, prefix.buf, prefix.len));
- TRY(st, ewrite_uri(writer, suffix.buf, suffix.len));
- return esink(">", 1, writer);
- }
-
- return write_lname(writer, serd_node_string(node), node->length);
-}
-
-SERD_WARN_UNUSED_RESULT static SerdStatus
write_blank(SerdWriter* const writer,
const SerdNode* node,
const SerdField field,
@@ -940,9 +913,6 @@ write_node(SerdWriter* const writer,
case SERD_URI:
st = write_uri_node(writer, node, field);
break;
- case SERD_CURIE:
- st = write_curie(writer, node);
- break;
case SERD_BLANK:
st = write_blank(writer, node, field, flags);
break;