diff options
author | George Hazan <george.hazan@gmail.com> | 2024-03-18 12:13:54 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-03-18 12:13:54 +0300 |
commit | 705c4d24c9c61edffc82864bf9c24384dc29a8d7 (patch) | |
tree | 4d21f87671db36b99402da3221d45b64c257c1fe /libs/litehtml/src/url_path.cpp | |
parent | 5784fc3a62b9136c6690ed45ec7b505f35512e08 (diff) |
litehtml - lightweight html renderer
Diffstat (limited to 'libs/litehtml/src/url_path.cpp')
-rw-r--r-- | libs/litehtml/src/url_path.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/libs/litehtml/src/url_path.cpp b/libs/litehtml/src/url_path.cpp new file mode 100644 index 0000000000..da8620251f --- /dev/null +++ b/libs/litehtml/src/url_path.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2020-2021 Primate Labs Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the names of the copyright holders nor the names of their +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "url_path.h" + +namespace litehtml { + +bool is_url_path_absolute(const string& path) +{ + return path.length() > 0 && path[0] == '/'; +} + +string url_path_directory_name(const string& path) +{ + size_t offset = path.find_last_of('/'); + if (offset == string::npos) { + return "."; + } else { + return path.substr(0, offset + 1); + } +} + +string url_path_base_name(const string& path) +{ + size_t offset = path.find_last_of('/'); + if (offset == string::npos) { + return path; + } else { + return path.substr(offset + 1); + } +} + +string url_path_append(const string& base, const string& path) +{ + string result(base); + + // Only append a separator if both base and path are not empty and if the + // last character of base is not already a separator. + if (!result.empty() && !path.empty() && result.back() != '/') { + result.append(1, '/'); + } + + result.append(path); + + return result; +} + +string url_path_resolve(const string& base, const string& path) +{ + + // If the possibly relative path is an absolute path then it is not + // relative and the base path is irrelevant. + if (is_url_path_absolute(path)) { + return path; + } + + return url_path_append(url_path_directory_name(base), path); +} + +} // namespace litehtml |