| 532 | } |
| 533 | |
| 534 | tl::expected<ada::url_pattern<regex_provider>, ada::errors> parse_pattern( |
| 535 | std::variant<std::string, ada::url_pattern_init, bool>& init_variant, |
| 536 | std::optional<std::string>& base_url, |
| 537 | std::optional<ada::url_pattern_options>& options) { |
| 538 | std::string_view base_url_view{}; |
| 539 | |
| 540 | if (base_url) { |
| 541 | base_url_view = {base_url->data(), base_url->size()}; |
| 542 | } |
| 543 | |
| 544 | if (std::holds_alternative<std::string>(init_variant)) { |
| 545 | auto str_init = std::get<std::string>(init_variant); |
| 546 | std::cout << "init: " << str_init << std::endl; |
| 547 | return ada::parse_url_pattern<regex_provider>( |
| 548 | std::string_view(str_init), |
| 549 | base_url.has_value() ? &base_url_view : nullptr, |
| 550 | options.has_value() ? &options.value() : nullptr); |
| 551 | } |
| 552 | |
| 553 | auto obj_init = std::get<ada::url_pattern_init>(init_variant); |
| 554 | return ada::parse_url_pattern<regex_provider>( |
| 555 | obj_init, base_url.has_value() ? &base_url_view : nullptr, |
| 556 | options.has_value() ? &options.value() : nullptr); |
| 557 | } |
| 558 | |
| 559 | std::tuple<std::variant<std::string, ada::url_pattern_init>, |
| 560 | std::optional<std::string>> |