diff options
author | ForLoveOfCats <floc@unpromptedtirade.com> | 2022-03-23 22:46:52 -0400 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2022-04-21 09:12:37 +0430 |
commit | a7fe3183f586b41204fe07ed617f32acad5929b3 (patch) | |
tree | e1c945624c68e8fe26a8734ef7a9a734cf6b90ce /AK | |
parent | 95541d706497479c58bbb07d3ced965c354ba579 (diff) | |
download | serenity-a7fe3183f586b41204fe07ed617f32acad5929b3.zip |
AK: Add `URL::create_with_help_scheme` helper function
Diffstat (limited to 'AK')
-rw-r--r-- | AK/URL.cpp | 17 | ||||
-rw-r--r-- | AK/URL.h | 1 |
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; @@ -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); |