diff options
author | David Robillard <d@drobilla.net> | 2020-10-10 12:31:29 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-13 23:05:27 -0500 |
commit | af81ace5f5a8f4bb0df93dd937395c65e92a5b6a (patch) | |
tree | 1a40185db9c66ce8bee528e81e5cfa9569b2d4bd | |
parent | 5d43cb36087292a397992aa1b59326fc355d5247 (diff) | |
download | serd-af81ace5f5a8f4bb0df93dd937395c65e92a5b6a.tar.gz serd-af81ace5f5a8f4bb0df93dd937395c65e92a5b6a.tar.bz2 serd-af81ace5f5a8f4bb0df93dd937395c65e92a5b6a.zip |
Add SERD_READ_EXACT_BLANKS flag
This allows suppressing the blank node ID clashing mechanism to read blank IDs
exactly as they appear in the input, even if they match the scheme used to
generate blank node IDs internally.
-rw-r--r-- | include/serd/serd.h | 5 | ||||
-rw-r--r-- | src/n3.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/include/serd/serd.h b/include/serd/serd.h index a98b2b8a..b0892573 100644 --- a/include/serd/serd.h +++ b/include/serd/serd.h @@ -1566,8 +1566,9 @@ typedef struct SerdReaderImpl SerdReader; /// Reader options typedef enum { - SERD_READ_LAX = 1u << 0u, ///< Tolerate invalid input where possible - SERD_READ_VARIABLES = 1u << 1u ///< Support variable nodes + SERD_READ_LAX = 1u << 0u, ///< Tolerate invalid input where possible + SERD_READ_VARIABLES = 1u << 1u, ///< Support variable nodes + SERD_READ_EXACT_BLANKS = 1u << 2u, ///< Allow clashes with generated blanks } SerdReaderFlag; /// Bitwise OR of SerdReaderFlag values @@ -1090,7 +1090,7 @@ read_BLANK_NODE_LABEL(SerdReader* const reader, *ate_dot = true; } - if (fancy_syntax(reader)) { + if (fancy_syntax(reader) && !(reader->flags & SERD_READ_EXACT_BLANKS)) { if (is_digit(buf[reader->bprefix_len + 1])) { if ((buf[reader->bprefix_len]) == 'b') { buf[reader->bprefix_len] = 'B'; // Prevent clash |