aboutsummaryrefslogtreecommitdiffstats
path: root/src/n3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/n3.c')
-rw-r--r--src/n3.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/src/n3.c b/src/n3.c
index edc0f52b..dd1b5168 100644
--- a/src/n3.c
+++ b/src/n3.c
@@ -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);
}