12template <
class result_type>
14 std::string_view input,
const result_type* base_url) {
24 const url* base_url =
nullptr);
26 std::string_view input,
const url_aggregator* base_url =
nullptr);
30 std::string tmp_buffer;
31 std::string_view internal_input;
32 if (unicode::has_tabs_or_newline(input)) {
34 helpers::remove_ascii_tab_or_newline(tmp_buffer);
35 internal_input = tmp_buffer;
37 internal_input = input;
40 if (internal_input.empty()) {
42 }
else if ((internal_input[0] ==
'/') || (internal_input[0] ==
'\\')) {
43 helpers::parse_prepared_path(internal_input.substr(1),
48 return "file://" + path;
51bool can_parse(std::string_view input,
const std::string_view* base_input) {
55 if (base_input !=
nullptr) {
57 *base_input,
nullptr);
61 base_pointer = &base_aggregator;
Common definitions for cross-platform compiler support.
result_type parse_url_impl(std::string_view user_input, const result_type *base_url=nullptr)
bool can_parse(std::string_view input, const std::string_view *base_input=nullptr)
template ada::result< url > parse< url >(std::string_view input, const url *base_url)
std::string href_from_file(std::string_view path)
ada_warn_unused std::string to_string(encoding_type type)
template ada::result< url_aggregator > parse< url_aggregator >(std::string_view input, const url_aggregator *base_url)
tl::expected< result_type, ada::errors > result
ada_warn_unused ada::result< result_type > parse(std::string_view input, const result_type *base_url=nullptr)
Definitions for the parser.
Declaration for the basic URL definitions.