diff options
author | David Robillard <d@drobilla.net> | 2012-03-10 22:24:09 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-03-10 22:24:09 +0000 |
commit | d14a7d113628578b6ed065b08db6c92536f550bd (patch) | |
tree | ff7ab0c295103f640e031c5013fa5c774f6fb821 /serd | |
parent | 60d7a9ff146ff3c137a99b82dd75fe8f57525938 (diff) | |
download | serd-d14a7d113628578b6ed065b08db6c92536f550bd.tar.gz serd-d14a7d113628578b6ed065b08db6c92536f550bd.tar.bz2 serd-d14a7d113628578b6ed065b08db6c92536f550bd.zip |
Add serd_writer_set_root_uri(), root parameter to
serd_uri_serialise_relative(), and -r option to serdi, to enable writing URIs
with up references (../) within a parent namespace.
Resolve dot segments in serd_uri_resolve() instead of at write time.
git-svn-id: http://svn.drobilla.net/serd/trunk@336 490d8e77-9747-427b-9fa3-0b8f29cee8a0
Diffstat (limited to 'serd')
-rw-r--r-- | serd/serd.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/serd/serd.h b/serd/serd.h index 94679a46..40e47499 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -362,11 +362,16 @@ serd_uri_serialise(const SerdURI* uri, SerdSink sink, void* stream); /** Serialise @c uri relative to @c base with a series of calls to @c sink. + + The @c uri is written as a relative URI iff if it a child of @c base and @c + root. The optional @c root parameter must be a prefix of @c base and can be + used keep up-references ("../") within a certain namespace. */ SERD_API size_t serd_uri_serialise_relative(const SerdURI* uri, const SerdURI* base, + const SerdURI* root, SerdSink sink, void* stream); @@ -793,6 +798,21 @@ serd_writer_set_base_uri(SerdWriter* writer, const SerdNode* uri); /** + Set the current root URI. + + The root URI should be a prefix of the base URI. The path of the root URI + is the highest path any relative up-reference can refer to. For example, + with root <file:///foo/root> and base <file:///foo/root/base>, + <file:///foo/root> will be written as <../>, but <file:///foo> will be + written non-relatively as <file:///foo>. If the root is not explicitly set, + it defaults to the base URI, so no up-references will be created at all. +*/ +SERD_API +SerdStatus +serd_writer_set_root_uri(SerdWriter* writer, + const SerdNode* uri); + +/** Set a namespace prefix (and emit directive if applicable). Note this function can be safely casted to SerdPrefixSink. |