From 3cb489073702a1bf37b4e23d86b75e2c97689ed4 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sun, 29 Dec 2019 00:34:04 +0700 Subject: [PATCH] utils: add schemepath function for url --- headers/enduro2d/utils/url.hpp | 2 ++ sources/enduro2d/utils/url.cpp | 9 +++++++++ untests/sources/untests_utils/url.cpp | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/headers/enduro2d/utils/url.hpp b/headers/enduro2d/utils/url.hpp index 457f6427..4e1c5102 100644 --- a/headers/enduro2d/utils/url.hpp +++ b/headers/enduro2d/utils/url.hpp @@ -38,6 +38,8 @@ namespace e2d const str& scheme() const noexcept; const str& path() const noexcept; + + str schemepath() const; url& operator+=(str_view path); url& operator/=(str_view path); diff --git a/sources/enduro2d/utils/url.cpp b/sources/enduro2d/utils/url.cpp index ef8b23c8..c59a88ed 100644 --- a/sources/enduro2d/utils/url.cpp +++ b/sources/enduro2d/utils/url.cpp @@ -135,6 +135,15 @@ namespace e2d return path_; } + str url::schemepath() const { + str result; + result.reserve(scheme_.size() + scheme_separator.size() + path_.size()); + result.append(scheme_); + result.append(scheme_separator); + result.append(path_); + return result; + } + url& url::operator+=(str_view path) { return concat(path); } diff --git a/untests/sources/untests_utils/url.cpp b/untests/sources/untests_utils/url.cpp index c82ee0ec..028ad4b7 100644 --- a/untests/sources/untests_utils/url.cpp +++ b/untests/sources/untests_utils/url.cpp @@ -19,24 +19,28 @@ TEST_CASE("url") { REQUIRE(u.empty()); REQUIRE(u.scheme().empty()); REQUIRE(u.path().empty()); + REQUIRE(u.schemepath() == "://"); } { url u("://file"); REQUIRE(!u.empty()); REQUIRE(u.scheme().empty()); REQUIRE(u.path() == "file"); + REQUIRE(u.schemepath() == "://file"); } { url u("file://"); REQUIRE(u.empty()); REQUIRE(u.scheme() == "file"); REQUIRE(u.path().empty()); + REQUIRE(u.schemepath() == "file://"); } { url u("file://test_file"); REQUIRE(!u.empty()); REQUIRE(u.scheme() == "file"); REQUIRE(u.path() == "test_file"); + REQUIRE(u.schemepath() == "file://test_file"); } { url u("dir/file");