diff options
Diffstat (limited to 'src/n3.c')
-rw-r--r-- | src/n3.c | 25 |
1 files changed, 5 insertions, 20 deletions
@@ -155,11 +155,9 @@ read_ECHAR(SerdReader* reader, SerdNode* dest) eat_byte_safe(reader, 'b'); return push_byte(reader, dest, '\b'); case 'n': - dest->flags |= SERD_HAS_NEWLINE; eat_byte_safe(reader, 'n'); return push_byte(reader, dest, '\n'); case 'r': - dest->flags |= SERD_HAS_NEWLINE; eat_byte_safe(reader, 'r'); return push_byte(reader, dest, '\r'); case 'f': @@ -248,23 +246,8 @@ read_utf8_code(SerdReader* reader, SerdNode* dest, uint32_t* code, uint8_t c) static inline SerdStatus read_character(SerdReader* reader, SerdNode* dest, uint8_t c) { - if (!(c & 0x80)) { - switch (c) { - case 0xA: - case 0xD: - dest->flags |= SERD_HAS_NEWLINE; - break; - case '"': - case '\'': - dest->flags |= SERD_HAS_QUOTE; - break; - default: - break; - } - - return push_byte(reader, dest, c); - } - return read_utf8_character(reader, dest, c); + return (c & 0x80) ? read_utf8_character(reader, dest, c) + : push_byte(reader, dest, c); } // [10] comment ::= '#' ( [^#xA #xD] )* @@ -350,7 +333,7 @@ read_STRING_LITERAL_LONG(SerdReader* reader, SerdNode* ref, uint8_t q) eat_byte_safe(reader, q3); break; } - ref->flags |= SERD_HAS_QUOTE; + push_byte(reader, ref, c); st = read_character(reader, ref, (uint8_t)q2); } else { @@ -436,6 +419,8 @@ read_String(SerdReader* reader, SerdNode* node) } eat_byte_safe(reader, q3); + node->flags |= SERD_IS_LONG_LITERAL; + return read_STRING_LITERAL_LONG(reader, node, (uint8_t)q1); } |