Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-01-28 | Provide a full output stream implementation for SerdBuffer | David Robillard | 1 | -28/+0 | |
Essentially replaces serd_buffer_sink_finish() with serd_buffer_close(), which makes writing to a buffer consistent with writing to a file or anything else. | |||||
2022-01-28 | Put rdf:type properties first when pretty-printing | David Robillard | 1 | -1/+1 | |
This is a common convention in Turtle and TriG because the special "a" syntax for rdf type as the first property looks nice, makes things easier to read, and can be useful for streaming implementations because the type of the instance is known before reading its properties. Also significantly clean up the pretty-printing implementation in the process. | |||||
2022-01-28 | Fix TriG graph indentation | David Robillard | 1 | -5/+10 | |
2022-01-28 | Ensure that indentation is always reset with the writer context | David Robillard | 1 | -3/+1 | |
2022-01-28 | Fix pretty-printing nested empty lists and add test suite | David Robillard | 1 | -0/+5 | |
The earlier "test" was just hitting the code without actually checking the output. This new suite is a set of pretty-printed documents which serd must reproduce from a model exactly to pass. This should make it easy to add cases in the future, since each case is just a document, as it should look. | |||||
2022-01-28 | Make blank node prefixing automatic | David Robillard | 1 | -29/+1 | |
Though potentially useful, I don't think the complexity cost of the old interface (both to the implementation and to the user) is worth it. A special tool to transform blank node labels (for example with regular expressions) would be a better approach to this if it's ever needed in the future. | |||||
2022-01-28 | Preserve anonymous graph syntax in TriG | David Robillard | 1 | -1/+2 | |
2022-01-28 | Make serd_writer_set_root_uri() take a string view | David Robillard | 1 | -3/+3 | |
This is generally more convenient, and the node was just being copied anyway. | |||||
2022-01-28 | Simplify reader and writer flags | David Robillard | 1 | -4/+4 | |
2022-01-28 | Support writing all escapes in Turtle and TriG prefixed names | David Robillard | 1 | -66/+85 | |
2022-01-28 | Add assertions for all non-null pointers in the public API | David Robillard | 1 | -0/+18 | |
Clang issues warnings at build time based on the SERD_NONNULL annotations, which is a much better approach in general. However, it does not cover cases where the API is being used with another compiler, or without a compiler that can statically check things at all (such as Python or other dynamic language bindings). In those situations, getting a clear assertion message is a lot less confusing than a random crash somewhere in serd, and it makes it clear that the bug is in the caller, so I think it's worth the tedious verbosity. | |||||
2022-01-14 | Preserve long or short quoting from input documents | David Robillard | 1 | -2/+1 | |
2022-01-14 | Add serd_node_from_syntax() and serd_node_to_syntax() | David Robillard | 1 | -0/+8 | |
2022-01-14 | Remove SERD_CURIE node datatype entirely | David Robillard | 1 | -41/+11 | |
2022-01-14 | Make serd_env_expand_in_place() take a string view instead of a node | David Robillard | 1 | -1/+2 | |
2022-01-14 | Move SerdEnv mutation from writer to reader | David Robillard | 1 | -31/+27 | |
Writing having side-effects seems questionable in general, and this prepares things for expanding URIs in the reader. | |||||
2022-01-14 | Add extensible logging API | David Robillard | 1 | -19/+33 | |
2022-01-13 | Add support for parsing variables | David Robillard | 1 | -0/+15 | |
This adds a reader flag and serdi option for extending a syntax with support for SPARQL-like variables, for storing things like patterns or simple queries. | |||||
2022-01-13 | Split up serd_internal.h | David Robillard | 1 | -1/+0 | |
2022-01-13 | Factor out TRY macro | David Robillard | 1 | -7/+1 | |
2022-01-13 | Reduce complexity of string writing functions | David Robillard | 1 | -78/+98 | |
2022-01-13 | Reduce complexity of URI node writing functions | David Robillard | 1 | -21/+38 | |
2022-01-13 | Reduce complexity of statement writing functions | David Robillard | 1 | -89/+212 | |
2022-01-13 | Make Writer always write to a ByteSink | David Robillard | 1 | -15/+13 | |
2022-01-13 | Add empty syntax type for suppressing output | David Robillard | 1 | -11/+10 | |
2022-01-13 | Use a manual type-safe stack in writer | David Robillard | 1 | -38/+28 | |
This fixes alignment issues on ARM. Since this stack is just for WriteContext which has a fixed size, using SerdStack here just made things more confusing anyway. | |||||
2022-01-13 | Replace SERD_WRITE_STRICT flag with SERD_WRITE_LAX | David Robillard | 1 | -4/+4 | |
The unset value for flags should represent the best default, which in this case is strict parsing. Lax parsing is the riskier opt-in option. | |||||
2022-01-13 | Improve writer error handling | David Robillard | 1 | -197/+278 | |
2022-01-13 | Add support for writing terse collections | David Robillard | 1 | -11/+24 | |
2022-01-13 | Tolerate popping writer contexts with no predicate | David Robillard | 1 | -1/+2 | |
2022-01-13 | Reset writer to empty when finished to avoid spurious blank lines | David Robillard | 1 | -0/+1 | |
2022-01-13 | Pass context flags to write_sep() | David Robillard | 1 | -20/+22 | |
2022-01-13 | Add initial flags to write context | David Robillard | 1 | -21/+24 | |
2022-01-13 | Simplify internal writer context API | David Robillard | 1 | -32/+30 | |
2022-01-13 | Strengthen writer statement preconditions | David Robillard | 1 | -1/+3 | |
2022-01-13 | Add option for writing terse output without newlines | David Robillard | 1 | -4/+8 | |
2022-01-13 | Factor out writing top level separator | David Robillard | 1 | -7/+10 | |
2022-01-13 | Simplify streaming API and improve pretty printing | David Robillard | 1 | -152/+232 | |
This removes the obligation from the caller to correctly maintain flags to describe the current anonymous context, instead making the writer handle this itself as much as possible. Flags remain for the cases the writer can not infer from context: the start of anonymous subject and object nodes. | |||||
2022-01-13 | Simplify SerdEnv API | David Robillard | 1 | -2/+2 | |
2022-01-13 | Separate ByteSink from writer | David Robillard | 1 | -7/+6 | |
2022-01-13 | Expose SerdByteSink in public API | David Robillard | 1 | -5/+4 | |
2022-01-13 | Simplify writer style options | David Robillard | 1 | -2/+3 | |
2022-01-13 | Replace multiple stream callbacks with SerdEvent | David Robillard | 1 | -5/+21 | |
This makes plumbing easier since everything goes through the same "stream" and only one callback is required to handling everything. It's also more easily extensible in case more event types need to be added in the future. | |||||
2022-01-13 | Cache commonly used nodes in the world | David Robillard | 1 | -9/+8 | |
2022-01-13 | Add SerdStatement | David Robillard | 1 | -6/+8 | |
2022-01-13 | Add SerdField to public API | David Robillard | 1 | -47/+41 | |
A statement field enum was previously only used by the writer internally, but will be used in the public API (without a sentinel value) in following commits. | |||||
2022-01-13 | Move error handling to world | David Robillard | 1 | -27/+17 | |
2022-01-13 | Add SerdWorld for shared library state | David Robillard | 1 | -14/+6 | |
2022-01-13 | Handle writer stack overflows gracefully | David Robillard | 1 | -7/+18 | |
2022-01-13 | Add SerdSink interface and hide implementations | David Robillard | 1 | -5/+18 | |