diff options
author | David Robillard <d@drobilla.net> | 2021-07-31 16:43:50 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-28 21:57:07 -0500 |
commit | 2bb0250be8297cc950d0036915ecdf61ab6f3700 (patch) | |
tree | ce8051b08017ac54c3195b529647b8b6422e9639 /src/n3.c | |
parent | 155fceabe7070b6610d577734734d038d097b088 (diff) | |
download | serd-2bb0250be8297cc950d0036915ecdf61ab6f3700.tar.gz serd-2bb0250be8297cc950d0036915ecdf61ab6f3700.tar.bz2 serd-2bb0250be8297cc950d0036915ecdf61ab6f3700.zip |
Factor out and expose prefixed name predicates
Towards using these in the writer to escape names more precisely.
Diffstat (limited to 'src/n3.c')
-rw-r--r-- | src/n3.c | 33 |
1 files changed, 6 insertions, 27 deletions
@@ -19,11 +19,13 @@ #include "env.h" #include "namespaces.h" #include "node.h" +#include "ntriples.h" #include "read_ntriples.h" #include "reader.h" #include "stack.h" #include "string_utils.h" #include "try.h" +#include "turtle.h" #include "serd/serd.h" @@ -185,33 +187,10 @@ read_PN_LOCAL_ESC(SerdReader* const reader, SerdNode* const dest) eat_byte_safe(reader, '\\'); const int c = peek_byte(reader); - switch (c) { - case '!': - case '#': - case '$': - case '%': - case '&': - case '\'': - case '(': - case ')': - case '*': - case '+': - case ',': - case '-': - case '.': - case '/': - case ';': - case '=': - case '?': - case '@': - case '_': - case '~': - return push_byte(reader, dest, eat_byte_safe(reader, c)); - default: - break; - } - return r_err(reader, SERD_ERR_BAD_SYNTAX, "invalid escape"); + return is_PN_LOCAL_ESC(c) + ? push_byte(reader, dest, eat_byte_safe(reader, c)) + : r_err(reader, SERD_ERR_BAD_SYNTAX, "invalid escape"); } static SerdStatus @@ -611,7 +590,7 @@ read_verb(SerdReader* reader, SerdNode** dest) SerdNode* node = *dest; const int next = peek_byte(reader); if (node->length == 1 && serd_node_string(node)[0] == 'a' && next != ':' && - !is_PN_CHARS_BASE((uint32_t)next)) { + !is_PN_CHARS_BASE(next)) { serd_stack_pop_to(&reader->stack, orig_stack_size); return ((*dest = push_node(reader, SERD_URI, NS_RDF "type", 47)) ? SERD_SUCCESS |