summaryrefslogtreecommitdiff
path: root/AK
diff options
context:
space:
mode:
authorForLoveOfCats <floc@unpromptedtirade.com>2022-03-23 22:46:52 -0400
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2022-04-21 09:12:37 +0430
commita7fe3183f586b41204fe07ed617f32acad5929b3 (patch)
treee1c945624c68e8fe26a8734ef7a9a734cf6b90ce /AK
parent95541d706497479c58bbb07d3ced965c354ba579 (diff)
downloadserenity-a7fe3183f586b41204fe07ed617f32acad5929b3.zip
AK: Add `URL::create_with_help_scheme` helper function
Diffstat (limited to 'AK')
-rw-r--r--AK/URL.cpp17
-rw-r--r--AK/URL.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/AK/URL.cpp b/AK/URL.cpp
index e83eac4c7a..461e6c92f2 100644
--- a/AK/URL.cpp
+++ b/AK/URL.cpp
@@ -178,6 +178,23 @@ URL URL::create_with_file_scheme(String const& path, String const& fragment, Str
return url;
}
+URL URL::create_with_help_scheme(String const& path, String const& fragment, String const& hostname)
+{
+ LexicalPath lexical_path(path);
+
+ URL url;
+ url.set_scheme("help");
+ // NOTE: If the hostname is localhost (or null, which implies localhost), it should be set to the empty string.
+ // This is because a file URL always needs a non-null hostname.
+ url.set_host(hostname.is_null() || hostname == "localhost" ? String::empty() : hostname);
+ url.set_paths(lexical_path.parts());
+ // NOTE: To indicate that we want to end the path with a slash, we have to append an empty path segment.
+ if (path.ends_with('/'))
+ url.append_path("");
+ url.set_fragment(fragment);
+ return url;
+}
+
URL URL::create_with_url_or_path(String const& url_or_path)
{
URL url = url_or_path;
diff --git a/AK/URL.h b/AK/URL.h
index f60c8e1c93..b0006d6857 100644
--- a/AK/URL.h
+++ b/AK/URL.h
@@ -98,6 +98,7 @@ public:
static URL create_with_url_or_path(String const&);
static URL create_with_file_scheme(String const& path, String const& fragment = {}, String const& hostname = {});
static URL create_with_file_protocol(String const& path, String const& fragment = {}) { return create_with_file_scheme(path, fragment); }
+ static URL create_with_help_scheme(String const& path, String const& fragment = {}, String const& hostname = {});
static URL create_with_data(String mime_type, String payload, bool is_base64 = false) { return URL(move(mime_type), move(payload), is_base64); };
static bool scheme_requires_port(StringView);